Skip to content

Commit 5da9576

Browse files
Add tests
1 parent dfc6706 commit 5da9576

File tree

2 files changed

+58
-1
lines changed

2 files changed

+58
-1
lines changed

ReactAndroid/src/main/java/com/facebook/react/animated/AnimatedNodeValueListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@
1212
/**
1313
* Interface used to listen to {@link ValueAnimatedNode} updates.
1414
*/
15-
/* package */ interface AnimatedNodeValueListener {
15+
public interface AnimatedNodeValueListener {
1616
void onValueUpdate(double value);
1717
}

ReactAndroid/src/test/java/com/facebook/react/animated/NativeAnimatedNodeTraversalTest.java

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,63 @@ public void testFramesAnimation() {
140140
verifyNoMoreInteractions(mUIImplementationMock);
141141
}
142142

143+
@Test
144+
public void testNodeValueListenerIfNotListening() {
145+
int nodeId = 1;
146+
147+
createSimpleAnimatedViewWithOpacity(1000, 0d);
148+
JavaOnlyArray frames = JavaOnlyArray.of(0d, 0.2d, 0.4d, 0.6d, 0.8d, 1d);
149+
150+
Callback animationCallback = mock(Callback.class);
151+
AnimatedNodeValueListener valueListener = mock(AnimatedNodeValueListener.class);
152+
153+
mNativeAnimatedNodesManager.startListeningToAnimatedNodeValue(nodeId, valueListener);
154+
mNativeAnimatedNodesManager.startAnimatingNode(
155+
1,
156+
nodeId,
157+
JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 1d),
158+
animationCallback);
159+
160+
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
161+
verify(valueListener).onValueUpdate(eq(0d));
162+
163+
mNativeAnimatedNodesManager.stopListeningToAnimatedNodeValue(nodeId);
164+
165+
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
166+
verifyNoMoreInteractions(valueListener);
167+
}
168+
169+
@Test
170+
public void testNodeValueListenerIfListening() {
171+
int nodeId = 1;
172+
173+
createSimpleAnimatedViewWithOpacity(1000, 0d);
174+
JavaOnlyArray frames = JavaOnlyArray.of(0d, 0.2d, 0.4d, 0.6d, 0.8d, 1d);
175+
176+
Callback animationCallback = mock(Callback.class);
177+
AnimatedNodeValueListener valueListener = mock(AnimatedNodeValueListener.class);
178+
179+
mNativeAnimatedNodesManager.startListeningToAnimatedNodeValue(nodeId, valueListener);
180+
mNativeAnimatedNodesManager.startAnimatingNode(
181+
1,
182+
nodeId,
183+
JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 1d),
184+
animationCallback);
185+
186+
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
187+
verify(valueListener).onValueUpdate(eq(0d));
188+
189+
for (int i = 0; i < frames.size(); i++) {
190+
reset(valueListener);
191+
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
192+
verify(valueListener).onValueUpdate(eq(frames.getDouble(i)));
193+
}
194+
195+
reset(valueListener);
196+
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
197+
verifyNoMoreInteractions(valueListener);
198+
}
199+
143200
@Test
144201
public void testAnimationCallbackFinish() {
145202
createSimpleAnimatedViewWithOpacity(1000, 0d);

0 commit comments

Comments
 (0)