Skip to content

Commit d2fd849

Browse files
Add tests
1 parent dfc6706 commit d2fd849

File tree

4 files changed

+63
-5
lines changed

4 files changed

+63
-5
lines changed

Libraries/Animated/src/AnimatedImplementation.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -725,7 +725,7 @@ class AnimatedValue extends AnimatedWithChildren {
725725

726726
_startListeningToNativeValueUpdates() {
727727
if (this.__nativeAnimatedValueListener ||
728-
!NativeAnimatedHelper.supportNativeListener()) {
728+
!NativeAnimatedHelper.supportsNativeListener()) {
729729
return;
730730
}
731731

@@ -740,7 +740,7 @@ class AnimatedValue extends AnimatedWithChildren {
740740

741741
_stopListeningForNativeValueUpdates() {
742742
if (!this.__nativeAnimatedValueListener ||
743-
!NativeAnimatedHelper.supportNativeListener()) {
743+
!NativeAnimatedHelper.supportsNativeListener()) {
744744
return;
745745
}
746746

Libraries/Animated/src/NativeAnimatedHelper.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ function assertNativeAnimatedModule(): void {
148148
}
149149

150150
// TODO: remove this when iOS supports native listeners.
151-
function supportNativeListener(): bool {
151+
function supportsNativeListener(): bool {
152152
return !!NativeAnimatedModule.startListeningToAnimatedNodeValue;
153153
}
154154

@@ -161,5 +161,5 @@ module.exports = {
161161
generateNewNodeTag,
162162
generateNewAnimationId,
163163
assertNativeAnimatedModule,
164-
supportNativeListener,
164+
supportsNativeListener,
165165
};

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: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,64 @@ 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+
reset(valueListener);
166+
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
167+
verifyNoMoreInteractions(valueListener);
168+
}
169+
170+
@Test
171+
public void testNodeValueListenerIfListening() {
172+
int nodeId = 1;
173+
174+
createSimpleAnimatedViewWithOpacity(1000, 0d);
175+
JavaOnlyArray frames = JavaOnlyArray.of(0d, 0.2d, 0.4d, 0.6d, 0.8d, 1d);
176+
177+
Callback animationCallback = mock(Callback.class);
178+
AnimatedNodeValueListener valueListener = mock(AnimatedNodeValueListener.class);
179+
180+
mNativeAnimatedNodesManager.startListeningToAnimatedNodeValue(nodeId, valueListener);
181+
mNativeAnimatedNodesManager.startAnimatingNode(
182+
1,
183+
nodeId,
184+
JavaOnlyMap.of("type", "frames", "frames", frames, "toValue", 1d),
185+
animationCallback);
186+
187+
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
188+
verify(valueListener).onValueUpdate(eq(0d));
189+
190+
for (int i = 0; i < frames.size(); i++) {
191+
reset(valueListener);
192+
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
193+
verify(valueListener).onValueUpdate(eq(frames.getDouble(i)));
194+
}
195+
196+
reset(valueListener);
197+
mNativeAnimatedNodesManager.runUpdates(nextFrameTime());
198+
verifyNoMoreInteractions(valueListener);
199+
}
200+
143201
@Test
144202
public void testAnimationCallbackFinish() {
145203
createSimpleAnimatedViewWithOpacity(1000, 0d);

0 commit comments

Comments
 (0)