mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-10 22:47:58 +08:00
Support for Animated.multiply node
Summary:This change adds native animated support for Animated.multiply nodes. Animated.multiply allows for defining nodes that would output a product of values of the input nodes. **Test Plan** Run JS tests: `npm test Libraries/Animated/src/__tests__/AnimatedNative-test.js` Run java tests: `buck test ReactAndroid/src/test/java/com/facebook/react/animated` Closes https://github.com/facebook/react-native/pull/7071 Differential Revision: D3197663 fb-gh-sync-id: 35f64244a2482c487a81e5e7cd08f3c0e56d9b78 fbshipit-source-id: 35f64244a2482c487a81e5e7cd08f3c0e56d9b78
This commit is contained in:
committed by
Facebook Github Bot 0
parent
3e2a3ca466
commit
ec5dfbf8c7
@@ -341,4 +341,64 @@ public class NativeAnimatedNodeTraversalTest {
|
||||
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
|
||||
verifyNoMoreInteractions(mUIImplementationMock);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMultiplicationNode() {
|
||||
mNativeAnimatedNodesManager.createAnimatedNode(
|
||||
1,
|
||||
JavaOnlyMap.of("type", "value", "value", 1d));
|
||||
mNativeAnimatedNodesManager.createAnimatedNode(
|
||||
2,
|
||||
JavaOnlyMap.of("type", "value", "value", 5d));
|
||||
|
||||
mNativeAnimatedNodesManager.createAnimatedNode(
|
||||
3,
|
||||
JavaOnlyMap.of("type", "multiplication", "input", JavaOnlyArray.of(1, 2)));
|
||||
|
||||
mNativeAnimatedNodesManager.createAnimatedNode(
|
||||
4,
|
||||
JavaOnlyMap.of("type", "style", "style", JavaOnlyMap.of("translateX", 3)));
|
||||
mNativeAnimatedNodesManager.createAnimatedNode(
|
||||
5,
|
||||
JavaOnlyMap.of("type", "props", "props", JavaOnlyMap.of("style", 4)));
|
||||
mNativeAnimatedNodesManager.connectAnimatedNodes(1, 3);
|
||||
mNativeAnimatedNodesManager.connectAnimatedNodes(2, 3);
|
||||
mNativeAnimatedNodesManager.connectAnimatedNodes(3, 4);
|
||||
mNativeAnimatedNodesManager.connectAnimatedNodes(4, 5);
|
||||
mNativeAnimatedNodesManager.connectAnimatedNodeToView(5, 50);
|
||||
|
||||
Callback animationCallback = mock(Callback.class);
|
||||
JavaOnlyArray frames = JavaOnlyArray.of(0d, 1d);
|
||||
mNativeAnimatedNodesManager.startAnimatingNode(
|
||||
1,
|
||||
JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 2d),
|
||||
animationCallback);
|
||||
|
||||
mNativeAnimatedNodesManager.startAnimatingNode(
|
||||
2,
|
||||
JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 10d),
|
||||
animationCallback);
|
||||
|
||||
ArgumentCaptor<ReactStylesDiffMap> stylesCaptor =
|
||||
ArgumentCaptor.forClass(ReactStylesDiffMap.class);
|
||||
|
||||
reset(mUIImplementationMock);
|
||||
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
|
||||
verify(mUIImplementationMock).synchronouslyUpdateViewOnUIThread(eq(50), stylesCaptor.capture());
|
||||
assertThat(stylesCaptor.getValue().getDouble("translateX", Double.NaN)).isEqualTo(5d);
|
||||
|
||||
reset(mUIImplementationMock);
|
||||
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
|
||||
verify(mUIImplementationMock).synchronouslyUpdateViewOnUIThread(eq(50), stylesCaptor.capture());
|
||||
assertThat(stylesCaptor.getValue().getDouble("translateX", Double.NaN)).isEqualTo(5d);
|
||||
|
||||
reset(mUIImplementationMock);
|
||||
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
|
||||
verify(mUIImplementationMock).synchronouslyUpdateViewOnUIThread(eq(50), stylesCaptor.capture());
|
||||
assertThat(stylesCaptor.getValue().getDouble("translateX", Double.NaN)).isEqualTo(20d);
|
||||
|
||||
reset(mUIImplementationMock);
|
||||
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
|
||||
verifyNoMoreInteractions(mUIImplementationMock);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user