mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-24 04:16:00 +08:00
Native Animated - Add tests on iOS
Summary: Adds unit tests to the Native Animated implementation on iOS. This pretty much mirrors the tests we currently have on Android. It also fixes 2 bugs I've found when adding the tests and pass the current time in `stepAnimation` instead of using `CACurrentMediaTime` to make testing easier. - `stopListeningToAnimatedNodeValue` did not actually work at all, it should set the listener to nil. - The finished value in the animation end callback was always true, this simplifies the `RCTAnimationDriver` interface to get rid of `removeAnimation` and fixes the end callback value. **Test plan** - Run the tests - Make sure the UIExplorer example still works Closes https://github.com/facebook/react-native/pull/13068 Differential Revision: D4786701 Pulled By: javache fbshipit-source-id: a4f07e6eec1f363ca47b6f27984041793c915bfc
This commit is contained in:
committed by
Facebook Github Bot
parent
fb54a1eb3e
commit
1d37dd063c
@@ -8,6 +8,7 @@
|
||||
*/
|
||||
|
||||
#import "RCTInterpolationAnimatedNode.h"
|
||||
|
||||
#import "RCTAnimationUtils.h"
|
||||
|
||||
@implementation RCTInterpolationAnimatedNode
|
||||
@@ -53,20 +54,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (NSUInteger)findIndexOfNearestValue:(CGFloat)value
|
||||
inRange:(NSArray<NSNumber *> *)range
|
||||
{
|
||||
NSUInteger index;
|
||||
NSUInteger rangeCount = range.count;
|
||||
for (index = 1; index < rangeCount - 1; index++) {
|
||||
NSNumber *inputValue = range[index];
|
||||
if (inputValue.doubleValue >= value) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return index - 1;
|
||||
}
|
||||
|
||||
- (void)performUpdate
|
||||
{
|
||||
[super performUpdate];
|
||||
@@ -75,19 +62,12 @@
|
||||
}
|
||||
|
||||
CGFloat inputValue = _parentNode.value;
|
||||
NSUInteger rangeIndex = [self findIndexOfNearestValue:inputValue inRange:_inputRange];
|
||||
NSNumber *inputMin = _inputRange[rangeIndex];
|
||||
NSNumber *inputMax = _inputRange[rangeIndex + 1];
|
||||
NSNumber *outputMin = _outputRange[rangeIndex];
|
||||
NSNumber *outputMax = _outputRange[rangeIndex + 1];
|
||||
|
||||
self.value = RCTInterpolateValue(inputValue,
|
||||
inputMin.doubleValue,
|
||||
inputMax.doubleValue,
|
||||
outputMin.doubleValue,
|
||||
outputMax.doubleValue,
|
||||
_extrapolateLeft,
|
||||
_extrapolateRight);
|
||||
self.value = RCTInterpolateValueInRange(inputValue,
|
||||
_inputRange,
|
||||
_outputRange,
|
||||
_extrapolateLeft,
|
||||
_extrapolateRight);
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user