OLD | NEW |
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 11 matching lines...) Expand all Loading... |
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 #include "config.h" | 31 #include "config.h" |
32 #include "core/animation/TimedItemCalculations.h" | 32 #include "core/animation/TimingCalculations.h" |
33 | 33 |
34 #include <gtest/gtest.h> | 34 #include <gtest/gtest.h> |
35 | 35 |
36 using namespace WebCore; | 36 using namespace WebCore; |
37 | 37 |
38 namespace { | 38 namespace { |
39 | 39 |
40 TEST(AnimationTimedItemCalculationsTest, ActiveTime) | 40 TEST(AnimationTimingCalculationsTest, ActiveTime) |
41 { | 41 { |
42 Timing timing; | 42 Timing timing; |
43 | 43 |
44 // calculateActiveTime(activeDuration, fillMode, localTime, parentPhase, pha
se, timing) | 44 // calculateActiveTime(activeDuration, fillMode, localTime, parentPhase, pha
se, timing) |
45 | 45 |
46 // Before Phase | 46 // Before Phase |
47 timing.startDelay = 10; | 47 timing.startDelay = 10; |
48 EXPECT_TRUE(isNull(calculateActiveTime(20, Timing::FillModeForwards, 0, Time
dItem::PhaseActive, TimedItem::PhaseBefore, timing))); | 48 EXPECT_TRUE(isNull(calculateActiveTime(20, Timing::FillModeForwards, 0, Anim
ationSource::PhaseActive, AnimationSource::PhaseBefore, timing))); |
49 EXPECT_TRUE(isNull(calculateActiveTime(20, Timing::FillModeNone, 0, TimedIte
m::PhaseActive, TimedItem::PhaseBefore, timing))); | 49 EXPECT_TRUE(isNull(calculateActiveTime(20, Timing::FillModeNone, 0, Animatio
nSource::PhaseActive, AnimationSource::PhaseBefore, timing))); |
50 EXPECT_EQ(0, calculateActiveTime(20, Timing::FillModeBackwards, 0, TimedItem
::PhaseActive, TimedItem::PhaseBefore, timing)); | 50 EXPECT_EQ(0, calculateActiveTime(20, Timing::FillModeBackwards, 0, Animation
Source::PhaseActive, AnimationSource::PhaseBefore, timing)); |
51 EXPECT_EQ(0, calculateActiveTime(20, Timing::FillModeBoth, 0, TimedItem::Pha
seActive, TimedItem::PhaseBefore, timing)); | 51 EXPECT_EQ(0, calculateActiveTime(20, Timing::FillModeBoth, 0, AnimationSourc
e::PhaseActive, AnimationSource::PhaseBefore, timing)); |
52 | 52 |
53 // Active Phase | 53 // Active Phase |
54 timing.startDelay = 10; | 54 timing.startDelay = 10; |
55 // Active, and parent Before | 55 // Active, and parent Before |
56 EXPECT_TRUE(isNull(calculateActiveTime(20, Timing::FillModeNone, 15, TimedIt
em::PhaseBefore, TimedItem::PhaseActive, timing))); | 56 EXPECT_TRUE(isNull(calculateActiveTime(20, Timing::FillModeNone, 15, Animati
onSource::PhaseBefore, AnimationSource::PhaseActive, timing))); |
57 EXPECT_TRUE(isNull(calculateActiveTime(20, Timing::FillModeForwards, 15, Tim
edItem::PhaseBefore, TimedItem::PhaseActive, timing))); | 57 EXPECT_TRUE(isNull(calculateActiveTime(20, Timing::FillModeForwards, 15, Ani
mationSource::PhaseBefore, AnimationSource::PhaseActive, timing))); |
58 // Active, and parent After | 58 // Active, and parent After |
59 EXPECT_TRUE(isNull(calculateActiveTime(20, Timing::FillModeNone, 15, TimedIt
em::PhaseAfter, TimedItem::PhaseActive, timing))); | 59 EXPECT_TRUE(isNull(calculateActiveTime(20, Timing::FillModeNone, 15, Animati
onSource::PhaseAfter, AnimationSource::PhaseActive, timing))); |
60 EXPECT_TRUE(isNull(calculateActiveTime(20, Timing::FillModeBackwards, 15, Ti
medItem::PhaseAfter, TimedItem::PhaseActive, timing))); | 60 EXPECT_TRUE(isNull(calculateActiveTime(20, Timing::FillModeBackwards, 15, An
imationSource::PhaseAfter, AnimationSource::PhaseActive, timing))); |
61 // Active, and parent Active | 61 // Active, and parent Active |
62 EXPECT_EQ(5, calculateActiveTime(20, Timing::FillModeForwards, 15, TimedItem
::PhaseActive, TimedItem::PhaseActive, timing)); | 62 EXPECT_EQ(5, calculateActiveTime(20, Timing::FillModeForwards, 15, Animation
Source::PhaseActive, AnimationSource::PhaseActive, timing)); |
63 | 63 |
64 // After Phase | 64 // After Phase |
65 timing.startDelay = 10; | 65 timing.startDelay = 10; |
66 EXPECT_EQ(21, calculateActiveTime(21, Timing::FillModeForwards, 45, TimedIte
m::PhaseActive, TimedItem::PhaseAfter, timing)); | 66 EXPECT_EQ(21, calculateActiveTime(21, Timing::FillModeForwards, 45, Animatio
nSource::PhaseActive, AnimationSource::PhaseAfter, timing)); |
67 EXPECT_EQ(21, calculateActiveTime(21, Timing::FillModeBoth, 45, TimedItem::P
haseActive, TimedItem::PhaseAfter, timing)); | 67 EXPECT_EQ(21, calculateActiveTime(21, Timing::FillModeBoth, 45, AnimationSou
rce::PhaseActive, AnimationSource::PhaseAfter, timing)); |
68 EXPECT_TRUE(isNull(calculateActiveTime(21, Timing::FillModeBackwards, 45, Ti
medItem::PhaseActive, TimedItem::PhaseAfter, timing))); | 68 EXPECT_TRUE(isNull(calculateActiveTime(21, Timing::FillModeBackwards, 45, An
imationSource::PhaseActive, AnimationSource::PhaseAfter, timing))); |
69 EXPECT_TRUE(isNull(calculateActiveTime(21, Timing::FillModeNone, 45, TimedIt
em::PhaseActive, TimedItem::PhaseAfter, timing))); | 69 EXPECT_TRUE(isNull(calculateActiveTime(21, Timing::FillModeNone, 45, Animati
onSource::PhaseActive, AnimationSource::PhaseAfter, timing))); |
70 | 70 |
71 // None | 71 // None |
72 EXPECT_TRUE(isNull(calculateActiveTime(32, Timing::FillModeNone, nullValue()
, TimedItem::PhaseNone, TimedItem::PhaseNone, timing))); | 72 EXPECT_TRUE(isNull(calculateActiveTime(32, Timing::FillModeNone, nullValue()
, AnimationSource::PhaseNone, AnimationSource::PhaseNone, timing))); |
73 } | 73 } |
74 | 74 |
75 TEST(AnimationTimedItemCalculationsTest, ScaledActiveTime) | 75 TEST(AnimationTimingCalculationsTest, ScaledActiveTime) |
76 { | 76 { |
77 Timing timing; | 77 Timing timing; |
78 | 78 |
79 // calculateScaledActiveTime(activeDuration, activeTime, startOffset, timing
) | 79 // calculateScaledActiveTime(activeDuration, activeTime, startOffset, timing
) |
80 | 80 |
81 // if the active time is null | 81 // if the active time is null |
82 EXPECT_TRUE(isNull(calculateScaledActiveTime(4, nullValue(), 5, timing))); | 82 EXPECT_TRUE(isNull(calculateScaledActiveTime(4, nullValue(), 5, timing))); |
83 | 83 |
84 // if the playback rate is negative | 84 // if the playback rate is negative |
85 timing.playbackRate = -1; | 85 timing.playbackRate = -1; |
86 EXPECT_EQ(35, calculateScaledActiveTime(40, 10, 5, timing)); | 86 EXPECT_EQ(35, calculateScaledActiveTime(40, 10, 5, timing)); |
87 | 87 |
88 // otherwise | 88 // otherwise |
89 timing.playbackRate = 0; | 89 timing.playbackRate = 0; |
90 EXPECT_EQ(5, calculateScaledActiveTime(40, 10, 5, timing)); | 90 EXPECT_EQ(5, calculateScaledActiveTime(40, 10, 5, timing)); |
91 timing.playbackRate = 1; | 91 timing.playbackRate = 1; |
92 EXPECT_EQ(15, calculateScaledActiveTime(40, 10, 5, timing)); | 92 EXPECT_EQ(15, calculateScaledActiveTime(40, 10, 5, timing)); |
93 | 93 |
94 // infinte activeTime | 94 // infinte activeTime |
95 timing.playbackRate = 0; | 95 timing.playbackRate = 0; |
96 EXPECT_EQ(0, calculateScaledActiveTime(std::numeric_limits<double>::infinity
(), std::numeric_limits<double>::infinity(), 0, timing)); | 96 EXPECT_EQ(0, calculateScaledActiveTime(std::numeric_limits<double>::infinity
(), std::numeric_limits<double>::infinity(), 0, timing)); |
97 timing.playbackRate = 1; | 97 timing.playbackRate = 1; |
98 EXPECT_EQ(std::numeric_limits<double>::infinity(), calculateScaledActiveTime
(std::numeric_limits<double>::infinity(), std::numeric_limits<double>::infinity(
), 0, timing)); | 98 EXPECT_EQ(std::numeric_limits<double>::infinity(), calculateScaledActiveTime
(std::numeric_limits<double>::infinity(), std::numeric_limits<double>::infinity(
), 0, timing)); |
99 } | 99 } |
100 | 100 |
101 TEST(AnimationTimedItemCalculationsTest, IterationTime) | 101 TEST(AnimationTimingCalculationsTest, IterationTime) |
102 { | 102 { |
103 Timing timing; | 103 Timing timing; |
104 | 104 |
105 // calculateIterationTime(iterationDuration, repeatedDuration, scaledActiveT
ime, startOffset, timing) | 105 // calculateIterationTime(iterationDuration, repeatedDuration, scaledActiveT
ime, startOffset, timing) |
106 | 106 |
107 // if the scaled active time is null | 107 // if the scaled active time is null |
108 EXPECT_TRUE(isNull(calculateIterationTime(1, 1, nullValue(), 1, timing))); | 108 EXPECT_TRUE(isNull(calculateIterationTime(1, 1, nullValue(), 1, timing))); |
109 | 109 |
110 // if (complex-conditions)... | 110 // if (complex-conditions)... |
111 EXPECT_EQ(12, calculateIterationTime(12, 12, 12, 0, timing)); | 111 EXPECT_EQ(12, calculateIterationTime(12, 12, 12, 0, timing)); |
112 | 112 |
113 // otherwise | 113 // otherwise |
114 timing.iterationCount = 10; | 114 timing.iterationCount = 10; |
115 EXPECT_EQ(5, calculateIterationTime(10, 100, 25, 4, timing)); | 115 EXPECT_EQ(5, calculateIterationTime(10, 100, 25, 4, timing)); |
116 EXPECT_EQ(7, calculateIterationTime(11, 110, 29, 1, timing)); | 116 EXPECT_EQ(7, calculateIterationTime(11, 110, 29, 1, timing)); |
117 timing.iterationStart = 1.1; | 117 timing.iterationStart = 1.1; |
118 EXPECT_EQ(8, calculateIterationTime(12, 120, 20, 7, timing)); | 118 EXPECT_EQ(8, calculateIterationTime(12, 120, 20, 7, timing)); |
119 } | 119 } |
120 | 120 |
121 TEST(AnimationTimedItemCalculationsTest, CurrentIteration) | 121 TEST(AnimationTimingCalculationsTest, CurrentIteration) |
122 { | 122 { |
123 Timing timing; | 123 Timing timing; |
124 | 124 |
125 // calculateCurrentIteration(iterationDuration, iterationTime, scaledActiveT
ime, timing) | 125 // calculateCurrentIteration(iterationDuration, iterationTime, scaledActiveT
ime, timing) |
126 | 126 |
127 // if the scaled active time is null | 127 // if the scaled active time is null |
128 EXPECT_TRUE(isNull(calculateCurrentIteration(1, 1, nullValue(), timing))); | 128 EXPECT_TRUE(isNull(calculateCurrentIteration(1, 1, nullValue(), timing))); |
129 | 129 |
130 // if the scaled active time is zero | 130 // if the scaled active time is zero |
131 EXPECT_EQ(0, calculateCurrentIteration(1, 1, 0, timing)); | 131 EXPECT_EQ(0, calculateCurrentIteration(1, 1, 0, timing)); |
132 | 132 |
133 // if the iteration time equals the iteration duration | 133 // if the iteration time equals the iteration duration |
134 timing.iterationStart = 4; | 134 timing.iterationStart = 4; |
135 timing.iterationCount = 7; | 135 timing.iterationCount = 7; |
136 EXPECT_EQ(10, calculateCurrentIteration(5, 5, 9, timing)); | 136 EXPECT_EQ(10, calculateCurrentIteration(5, 5, 9, timing)); |
137 | 137 |
138 // otherwise | 138 // otherwise |
139 EXPECT_EQ(3, calculateCurrentIteration(3.2, 3.1, 10, timing)); | 139 EXPECT_EQ(3, calculateCurrentIteration(3.2, 3.1, 10, timing)); |
140 } | 140 } |
141 | 141 |
142 TEST(AnimationTimedItemCalculationsTest, DirectedTime) | 142 TEST(AnimationTimingCalculationsTest, DirectedTime) |
143 { | 143 { |
144 Timing timing; | 144 Timing timing; |
145 | 145 |
146 // calculateDirectedTime(currentIteration, iterationDuration, iterationTime,
timing) | 146 // calculateDirectedTime(currentIteration, iterationDuration, iterationTime,
timing) |
147 | 147 |
148 // if the iteration time is null | 148 // if the iteration time is null |
149 EXPECT_TRUE(isNull(calculateDirectedTime(1, 2, nullValue(), timing))); | 149 EXPECT_TRUE(isNull(calculateDirectedTime(1, 2, nullValue(), timing))); |
150 | 150 |
151 // forwards | 151 // forwards |
152 EXPECT_EQ(17, calculateDirectedTime(0, 20, 17, timing)); | 152 EXPECT_EQ(17, calculateDirectedTime(0, 20, 17, timing)); |
(...skipping 10 matching lines...) Expand all Loading... |
163 EXPECT_EQ(3, calculateDirectedTime(0, 20, 17, timing)); | 163 EXPECT_EQ(3, calculateDirectedTime(0, 20, 17, timing)); |
164 EXPECT_EQ(3, calculateDirectedTime(1, 20, 17, timing)); | 164 EXPECT_EQ(3, calculateDirectedTime(1, 20, 17, timing)); |
165 timing.direction = Timing::PlaybackDirectionAlternate; | 165 timing.direction = Timing::PlaybackDirectionAlternate; |
166 EXPECT_EQ(3, calculateDirectedTime(1, 20, 17, timing)); | 166 EXPECT_EQ(3, calculateDirectedTime(1, 20, 17, timing)); |
167 EXPECT_EQ(3, calculateDirectedTime(3, 20, 17, timing)); | 167 EXPECT_EQ(3, calculateDirectedTime(3, 20, 17, timing)); |
168 timing.direction = Timing::PlaybackDirectionAlternateReverse; | 168 timing.direction = Timing::PlaybackDirectionAlternateReverse; |
169 EXPECT_EQ(3, calculateDirectedTime(0, 20, 17, timing)); | 169 EXPECT_EQ(3, calculateDirectedTime(0, 20, 17, timing)); |
170 EXPECT_EQ(3, calculateDirectedTime(2, 20, 17, timing)); | 170 EXPECT_EQ(3, calculateDirectedTime(2, 20, 17, timing)); |
171 } | 171 } |
172 | 172 |
173 TEST(AnimationTimedItemCalculationsTest, TransformedTime) | 173 TEST(AnimationTimingCalculationsTest, TransformedTime) |
174 { | 174 { |
175 Timing timing; | 175 Timing timing; |
176 | 176 |
177 // calculateTransformedTime(currentIteration, iterationDuration, iterationTi
me, timing) | 177 // calculateTransformedTime(currentIteration, iterationDuration, iterationTi
me, timing) |
178 | 178 |
179 // Iteration time is null | 179 // Iteration time is null |
180 EXPECT_TRUE(isNull(calculateTransformedTime(1, 2, nullValue(), timing))); | 180 EXPECT_TRUE(isNull(calculateTransformedTime(1, 2, nullValue(), timing))); |
181 | 181 |
182 // PlaybackDirectionForwards | 182 // PlaybackDirectionForwards |
183 EXPECT_EQ(12, calculateTransformedTime(0, 20, 12, timing)); | 183 EXPECT_EQ(12, calculateTransformedTime(0, 20, 12, timing)); |
(...skipping 21 matching lines...) Expand all Loading... |
205 // Timing function when iterationDuration is infinity | 205 // Timing function when iterationDuration is infinity |
206 timing.direction = Timing::PlaybackDirectionNormal; | 206 timing.direction = Timing::PlaybackDirectionNormal; |
207 EXPECT_EQ(0, calculateTransformedTime(0, std::numeric_limits<double>::infini
ty(), 0, timing)); | 207 EXPECT_EQ(0, calculateTransformedTime(0, std::numeric_limits<double>::infini
ty(), 0, timing)); |
208 EXPECT_EQ(1, calculateTransformedTime(0, std::numeric_limits<double>::infini
ty(), 1, timing)); | 208 EXPECT_EQ(1, calculateTransformedTime(0, std::numeric_limits<double>::infini
ty(), 1, timing)); |
209 timing.direction = Timing::PlaybackDirectionReverse; | 209 timing.direction = Timing::PlaybackDirectionReverse; |
210 EXPECT_EQ(std::numeric_limits<double>::infinity(), calculateTransformedTime(
0, std::numeric_limits<double>::infinity(), 0, timing)); | 210 EXPECT_EQ(std::numeric_limits<double>::infinity(), calculateTransformedTime(
0, std::numeric_limits<double>::infinity(), 0, timing)); |
211 EXPECT_EQ(std::numeric_limits<double>::infinity(), calculateTransformedTime(
0, std::numeric_limits<double>::infinity(), 1, timing)); | 211 EXPECT_EQ(std::numeric_limits<double>::infinity(), calculateTransformedTime(
0, std::numeric_limits<double>::infinity(), 1, timing)); |
212 } | 212 } |
213 | 213 |
214 } | 214 } |
OLD | NEW |