Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(350)

Side by Side Diff: Source/core/animation/AnimationClockTest.cpp

Issue 369793003: Make the web-animations engine use the passed in blink::WebFrameTime values. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fixing remaining usages of -1 in the code. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/core/animation/AnimationClock.cpp ('k') | Source/core/animation/AnimationPlayerTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013, Google Inc. All rights reserved. 2 * Copyright (c) 2013, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 23 matching lines...) Expand all
34 #include "wtf/OwnPtr.h" 34 #include "wtf/OwnPtr.h"
35 #include <gtest/gtest.h> 35 #include <gtest/gtest.h>
36 36
37 using namespace WebCore; 37 using namespace WebCore;
38 38
39 namespace { 39 namespace {
40 40
41 class AnimationAnimationClockTest : public ::testing::Test { 41 class AnimationAnimationClockTest : public ::testing::Test {
42 public: 42 public:
43 AnimationAnimationClockTest() 43 AnimationAnimationClockTest()
44 : animationClock(mockTimeFunction) 44 : animationClock()
45 { } 45 { }
46
46 protected: 47 protected:
47 virtual void SetUp() 48 virtual void SetUp()
48 { 49 {
49 mockTime = 0; 50 animationClock.clearTimeForTesting();
50 animationClock.resetTimeForTesting(); 51 animationClock.updateTime(AnimationClock::createTimeForTesting(0, 0));
51 } 52 }
52 53
53 static double mockTimeFunction()
54 {
55 return mockTime;
56 }
57
58 static double mockTime;
59 AnimationClock animationClock; 54 AnimationClock animationClock;
60 }; 55 };
61 56
62 double AnimationAnimationClockTest::mockTime;
63
64 TEST_F(AnimationAnimationClockTest, TimeIsGreaterThanZeroForUnitTests) 57 TEST_F(AnimationAnimationClockTest, TimeIsGreaterThanZeroForUnitTests)
65 { 58 {
66 AnimationClock clock; 59 AnimationClock clock;
60 clock.resetTimeForTesting();
61
67 // unit tests outside core/animation shouldn't need to do anything to get 62 // unit tests outside core/animation shouldn't need to do anything to get
68 // a non-zero currentTime(). 63 // a non-zero currentTime().
64 double lastTime = clock.currentTime();
69 EXPECT_GT(clock.currentTime(), 0); 65 EXPECT_GT(clock.currentTime(), 0);
66
67 clock.tickTimeForTesting();
68 EXPECT_GT(clock.currentTime(), lastTime);
70 } 69 }
71 70
72 TEST_F(AnimationAnimationClockTest, TimeDoesNotChange) 71 TEST_F(AnimationAnimationClockTest, TimeDoesNotChange)
73 { 72 {
74 animationClock.updateTime(100); 73 animationClock.updateTime(AnimationClock::createTimeForTesting(100, 200));
75 EXPECT_EQ(100, animationClock.currentTime()); 74 EXPECT_EQ(100, animationClock.currentTime());
76 EXPECT_EQ(100, animationClock.currentTime()); 75 EXPECT_EQ(100, animationClock.currentTime());
77 } 76 }
78 77
79 TEST_F(AnimationAnimationClockTest, TimeAdvancesWhenUpdated) 78 TEST_F(AnimationAnimationClockTest, TimeAdvancesWhenUpdated)
80 { 79 {
81 animationClock.updateTime(100); 80 animationClock.updateTime(AnimationClock::createTimeForTesting(100, 200));
82 EXPECT_EQ(100, animationClock.currentTime()); 81 EXPECT_EQ(100, animationClock.currentTime());
83 82
84 animationClock.updateTime(200); 83 animationClock.updateTime(AnimationClock::createTimeForTesting(200, 300));
85 EXPECT_EQ(200, animationClock.currentTime()); 84 EXPECT_EQ(200, animationClock.currentTime());
86 } 85 }
87 86
88 TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTime) 87 TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTime)
89 { 88 {
90 animationClock.updateTime(100); 89 animationClock.updateTime(AnimationClock::createTimeForTesting(100, 150));
91 EXPECT_EQ(100, animationClock.currentTime());
92
93 mockTime = 150;
94 AnimationClock::notifyTaskStart();
95 EXPECT_GE(animationClock.currentTime(), mockTime);
96 }
97
98 TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTimeOnlyWhenRequired)
99 {
100 animationClock.updateTime(100);
101 EXPECT_EQ(100, animationClock.currentTime()); 90 EXPECT_EQ(100, animationClock.currentTime());
102 91
103 AnimationClock::notifyTaskStart(); 92 AnimationClock::notifyTaskStart();
104 animationClock.updateTime(125); 93 EXPECT_EQ(animationClock.currentTime(), 150);
105 EXPECT_EQ(125, animationClock.currentTime()); 94
95 AnimationClock::notifyTaskStart();
96 EXPECT_EQ(animationClock.currentTime(), 150);
106 } 97 }
107 98
108 TEST_F(AnimationAnimationClockTest, UpdateTimeIsMonotonic) 99 TEST_F(AnimationAnimationClockTest, UpdateTimeIsMonotonic)
109 { 100 {
110 animationClock.updateTime(100); 101 animationClock.updateTime(AnimationClock::createTimeForTesting(100, 150));
111 EXPECT_EQ(100, animationClock.currentTime()); 102 EXPECT_EQ(100, animationClock.currentTime());
103 #ifndef NDEBUG
104 EXPECT_DEATH({
105 animationClock.updateTime(AnimationClock::createTimeForTesting(50, 150)) ;
106 }, "");
112 107
113 // Update can't go backwards.
114 animationClock.updateTime(50);
115 EXPECT_EQ(100, animationClock.currentTime());
116
117 mockTime = 50;
118 AnimationClock::notifyTaskStart(); 108 AnimationClock::notifyTaskStart();
119 EXPECT_EQ(100, animationClock.currentTime()); 109 EXPECT_DEATH({
120 110 animationClock.updateTime(AnimationClock::createTimeForTesting(149, 150) );
121 mockTime = 150; 111 }, "");
122 AnimationClock::notifyTaskStart(); 112 #endif
123 EXPECT_GE(animationClock.currentTime(), mockTime);
124
125 // Update can't go backwards after advance to estimate.
126 animationClock.updateTime(100);
127 EXPECT_GE(animationClock.currentTime(), mockTime);
128 }
129
130 TEST_F(AnimationAnimationClockTest, CurrentTimeUpdatesTask)
131 {
132 animationClock.updateTime(100);
133 EXPECT_EQ(100, animationClock.currentTime());
134
135 mockTime = 100;
136 AnimationClock::notifyTaskStart();
137 EXPECT_EQ(100, animationClock.currentTime());
138
139 mockTime = 150;
140 EXPECT_EQ(100, animationClock.currentTime());
141 } 113 }
142 114
143 } 115 }
OLDNEW
« no previous file with comments | « Source/core/animation/AnimationClock.cpp ('k') | Source/core/animation/AnimationPlayerTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698