You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.1 KiB
64 lines
2.1 KiB
9 years ago
|
/**
|
||
|
Copyright (c) 2014-present, Facebook, Inc.
|
||
|
All rights reserved.
|
||
|
|
||
|
This source code is licensed under the BSD-style license found in the
|
||
|
LICENSE file in the root directory of this source tree. An additional grant
|
||
|
of patent rights can be found in the PATENTS file in the same directory.
|
||
|
*/
|
||
|
|
||
|
#import <cmath>
|
||
|
|
||
|
#import <XCTest/XCTest.h>
|
||
|
|
||
|
#import "POPCGUtils.h"
|
||
|
|
||
|
@class CALayer;
|
||
|
@class POPAnimator;
|
||
|
@class POPAnimatableProperty;
|
||
|
@class POPAnimation;
|
||
|
@class POPPropertyAnimation;
|
||
|
|
||
|
@interface POPBaseAnimationTests : XCTestCase
|
||
|
|
||
|
// two layers for test use
|
||
|
@property (strong, nonatomic) CALayer *layer1, *layer2;
|
||
|
|
||
|
// the animator to use for rendering
|
||
|
@property (strong, nonatomic) POPAnimator *animator;
|
||
|
|
||
|
// the time tests began
|
||
|
@property (assign, nonatomic) CFTimeInterval beginTime;
|
||
|
|
||
|
// radius animatable property
|
||
|
@property (strong, nonatomic) POPAnimatableProperty *radiusProperty;
|
||
|
|
||
|
- (void)testCopyingSucceedsForConcreteAnimation:(POPAnimation *)anim;
|
||
|
- (void)testCopyingSucceedsForConcretePropertyAnimation:(POPPropertyAnimation *)anim;
|
||
|
|
||
|
@end
|
||
|
|
||
|
// max frame count required for animations to converge
|
||
|
extern NSUInteger kPOPAnimationConvergenceMaxFrameCount;
|
||
|
|
||
|
// counts the number of events of value within epsilon, starting from end
|
||
|
extern NSUInteger POPAnimationCountLastEventValues(NSArray *events, NSNumber *value, float epsilon = 0);
|
||
|
|
||
|
// returns YES if array of value events contain specified value
|
||
|
extern BOOL POPAnimationEventsContainValue(NSArray *events, NSNumber *value);
|
||
|
|
||
|
// equality with epsilon
|
||
|
#define _EQL_(x, y, epsilon) (std::abs ((x) - (y)) < epsilon)
|
||
|
|
||
|
// color equality assert
|
||
|
#define POPAssertColorEqual(c1, c2) \
|
||
|
{ \
|
||
|
CGFloat v1[4], v2[4]; \
|
||
|
POPCGColorGetRGBAComponents(c1, v1); \
|
||
|
POPCGColorGetRGBAComponents(c2, v2); \
|
||
|
XCTAssertTrue(_EQL_(v1[0], v2[0], 1e-6) && _EQL_(v1[1], v2[1], 1e-6) && _EQL_(v1[2], v2[2], 1e-6) && _EQL_(v1[3], v2[3], 1e-6), @"not equal color:[r:%f g:%f b:%f a:%f] color:[r:%f g:%f b:%f a:%f]", v1[0], v1[1], v1[2], v1[3], v2[0], v2[1], v2[2], v2[3]); \
|
||
|
}
|
||
|
|
||
|
extern void configureConcreteAnimation(POPAnimation *anim);
|
||
|
extern void configureConcretePropertyAnimation(POPPropertyAnimation *anim);
|