Index: Source/core/animation/AnimationClockTest.cpp |
diff --git a/Source/core/animation/AnimationClockTest.cpp b/Source/core/animation/AnimationClockTest.cpp |
index 7e54cde9876530b9e86b72f61c95ff99063dff96..89412585331072bc0e902da99d193b2fcdad4e71 100644 |
--- a/Source/core/animation/AnimationClockTest.cpp |
+++ b/Source/core/animation/AnimationClockTest.cpp |
@@ -39,11 +39,15 @@ using namespace WebCore; |
namespace { |
class AnimationAnimationClockTest : public ::testing::Test { |
+public: |
+ AnimationAnimationClockTest() |
+ : animationClock(mockTimeFunction) |
+ { } |
protected: |
virtual void SetUp() |
{ |
- animationClock = AnimationClock::create(mockTimeFunction); |
- mockTime = 200; |
+ mockTime = 0; |
+ animationClock.resetTimeForTesting(); |
} |
static double mockTimeFunction() |
@@ -52,36 +56,88 @@ protected: |
} |
static double mockTime; |
- OwnPtr<AnimationClock> animationClock; |
+ AnimationClock animationClock; |
}; |
double AnimationAnimationClockTest::mockTime; |
-TEST_F(AnimationAnimationClockTest, CurrentTime) |
+TEST_F(AnimationAnimationClockTest, TimeIsGreaterThanZeroForUnitTests) |
{ |
- // Current time should not advance until minTimeBeforeUnsynchronizedTick has elapsed |
- EXPECT_EQ(200, animationClock->currentTime()); |
- mockTime = 200 + minTimeBeforeUnsynchronizedAnimationClockTick / 2.0; |
- EXPECT_EQ(200, animationClock->currentTime()); |
+ AnimationClock clock; |
+ // unit tests outside core/animation shouldn't need to do anything to get |
+ // a non-zero currentTime(). |
+ EXPECT_GT(clock.currentTime(), 0); |
+} |
+ |
+TEST_F(AnimationAnimationClockTest, TimeDoesNotChange) |
+{ |
+ animationClock.updateTime(100); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+} |
+ |
+TEST_F(AnimationAnimationClockTest, TimeAdvancesWhenUpdated) |
+{ |
+ animationClock.updateTime(100); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
- mockTime = 200 + minTimeBeforeUnsynchronizedAnimationClockTick; |
- EXPECT_EQ(mockTime, animationClock->currentTime()); |
+ animationClock.updateTime(200); |
+ EXPECT_EQ(200, animationClock.currentTime()); |
} |
-TEST_F(AnimationAnimationClockTest, UpdateTime) |
+TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTime) |
{ |
- animationClock->updateTime(100); |
- EXPECT_EQ(100, animationClock->currentTime()); |
- mockTime = 200; |
- EXPECT_EQ(100, animationClock->currentTime()); |
- |
- animationClock->unfreeze(); |
- EXPECT_EQ(200, animationClock->currentTime()); |
- |
- animationClock->updateTime(300); |
- EXPECT_EQ(300, animationClock->currentTime()); |
- mockTime = 400; |
- EXPECT_EQ(300, animationClock->currentTime()); |
+ animationClock.updateTime(100); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+ |
+ mockTime = 150; |
+ AnimationClock::notifyTaskStart(); |
+ EXPECT_GE(animationClock.currentTime(), mockTime); |
+} |
+ |
+TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTimeOnlyWhenRequired) |
+{ |
+ animationClock.updateTime(100); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+ |
+ AnimationClock::notifyTaskStart(); |
+ animationClock.updateTime(125); |
+ EXPECT_EQ(125, animationClock.currentTime()); |
+} |
+ |
+TEST_F(AnimationAnimationClockTest, UpdateTimeIsMonotonic) |
+{ |
+ animationClock.updateTime(100); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+ |
+ // Update can't go backwards. |
+ animationClock.updateTime(50); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+ |
+ mockTime = 50; |
+ AnimationClock::notifyTaskStart(); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+ |
+ mockTime = 150; |
+ AnimationClock::notifyTaskStart(); |
+ EXPECT_GE(animationClock.currentTime(), mockTime); |
+ |
+ // Update can't go backwards after advance to estimate. |
+ animationClock.updateTime(100); |
+ EXPECT_GE(animationClock.currentTime(), mockTime); |
+} |
+ |
+TEST_F(AnimationAnimationClockTest, CurrentTimeUpdatesTask) |
+{ |
+ animationClock.updateTime(100); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+ |
+ mockTime = 100; |
+ AnimationClock::notifyTaskStart(); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+ |
+ mockTime = 150; |
+ EXPECT_EQ(100, animationClock.currentTime()); |
} |
} |