mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-13 22:43:59 +08:00
Native Animated - Restore default values when removing props on Android
Summary: Rebased version of #12842 that was reverted because of failing fb internal tests. Closes https://github.com/facebook/react-native/pull/15919 Differential Revision: D5823956 Pulled By: hramos fbshipit-source-id: 4ece19a403f5ebbe4829c4c26696ea0575ab1d0e
This commit is contained in:
committed by
Facebook Github Bot
parent
dd400f842b
commit
2b4ff6ea19
@@ -19,6 +19,7 @@ rn_robolectric_test(
|
||||
react_native_target("java/com/facebook/react/animated:animated"),
|
||||
react_native_target("java/com/facebook/react/bridge:bridge"),
|
||||
react_native_target("java/com/facebook/react/common:common"),
|
||||
react_native_target("java/com/facebook/react/modules/core:core"),
|
||||
react_native_target("java/com/facebook/react/uimanager:uimanager"),
|
||||
react_native_tests_target("java/com/facebook/react/bridge:testhelpers"),
|
||||
],
|
||||
|
||||
@@ -1059,4 +1059,51 @@ public class NativeAnimatedNodeTraversalTest {
|
||||
verify(mUIImplementationMock).synchronouslyUpdateViewOnUIThread(eq(viewTag), stylesCaptor.capture());
|
||||
assertThat(stylesCaptor.getValue().getDouble("opacity", Double.NaN)).isEqualTo(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRestoreDefaultProps() {
|
||||
int viewTag = 1000;
|
||||
int propsNodeTag = 3;
|
||||
mNativeAnimatedNodesManager.createAnimatedNode(
|
||||
1,
|
||||
JavaOnlyMap.of("type", "value", "value", 1d, "offset", 0d));
|
||||
mNativeAnimatedNodesManager.createAnimatedNode(
|
||||
2,
|
||||
JavaOnlyMap.of("type", "style", "style", JavaOnlyMap.of("opacity", 1)));
|
||||
mNativeAnimatedNodesManager.createAnimatedNode(
|
||||
propsNodeTag,
|
||||
JavaOnlyMap.of("type", "props", "props", JavaOnlyMap.of("style", 2)));
|
||||
mNativeAnimatedNodesManager.connectAnimatedNodes(1, 2);
|
||||
mNativeAnimatedNodesManager.connectAnimatedNodes(2, propsNodeTag);
|
||||
mNativeAnimatedNodesManager.connectAnimatedNodeToView(propsNodeTag, viewTag);
|
||||
|
||||
JavaOnlyArray frames = JavaOnlyArray.of(0d, 0.5d, 1d);
|
||||
Callback animationCallback = mock(Callback.class);
|
||||
mNativeAnimatedNodesManager.startAnimatingNode(
|
||||
1,
|
||||
1,
|
||||
JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 0d),
|
||||
animationCallback);
|
||||
|
||||
ArgumentCaptor<ReactStylesDiffMap> stylesCaptor =
|
||||
ArgumentCaptor.forClass(ReactStylesDiffMap.class);
|
||||
|
||||
reset(mUIImplementationMock);
|
||||
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
|
||||
verify(mUIImplementationMock).synchronouslyUpdateViewOnUIThread(eq(viewTag), stylesCaptor.capture());
|
||||
assertThat(stylesCaptor.getValue().getDouble("opacity", Double.NaN)).isEqualTo(1);
|
||||
|
||||
for (int i = 0; i < frames.size(); i++) {
|
||||
reset(mUIImplementationMock);
|
||||
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
|
||||
}
|
||||
|
||||
verify(mUIImplementationMock).synchronouslyUpdateViewOnUIThread(eq(viewTag), stylesCaptor.capture());
|
||||
assertThat(stylesCaptor.getValue().getDouble("opacity", Double.NaN)).isEqualTo(0);
|
||||
|
||||
reset(mUIImplementationMock);
|
||||
mNativeAnimatedNodesManager.restoreDefaultValues(propsNodeTag, viewTag);
|
||||
verify(mUIImplementationMock).synchronouslyUpdateViewOnUIThread(eq(viewTag), stylesCaptor.capture());
|
||||
assertThat(stylesCaptor.getValue().isNull("opacity"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user