OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright (c) 2013, Google Inc. All rights reserved. | |
3 * | |
4 * Redistribution and use in source and binary forms, with or without | |
5 * modification, are permitted provided that the following conditions are | |
6 * met: | |
7 * | |
8 * * Redistributions of source code must retain the above copyright | |
9 * notice, this list of conditions and the following disclaimer. | |
10 * * Redistributions in binary form must reproduce the above | |
11 * copyright notice, this list of conditions and the following disclaimer | |
12 * in the documentation and/or other materials provided with the | |
13 * distribution. | |
14 * * Neither the name of Google Inc. nor the names of its | |
15 * contributors may be used to endorse or promote products derived from | |
16 * this software without specific prior written permission. | |
17 * | |
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
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. | |
29 */ | |
30 | |
31 #include "config.h" | |
32 #include "core/animation/AnimatableNumber.h" | |
33 | |
34 #include "core/css/CSSCalculationValue.h" | |
35 #include "core/css/CSSPrimitiveValue.h" | |
36 #include "core/platform/CalculationValue.h" | |
37 #include "core/rendering/style/RenderStyle.h" | |
38 #include "core/rendering/style/StyleInheritedData.h" | |
39 #include "wtf/MathExtras.h" | |
40 | |
41 #include <gtest/gtest.h> | |
42 | |
43 using namespace WebCore; | |
44 | |
45 namespace { | |
46 | |
47 class AnimatableNumberTest : public ::testing::Test { | |
48 protected: | |
49 virtual void SetUp() | |
50 { | |
51 style = RenderStyle::createDefaultStyle(); | |
52 } | |
53 | |
54 PassRefPtr<AnimatableNumber> create(double value) | |
55 { | |
56 return create(value, CSSPrimitiveValue::CSS_NUMBER); | |
57 } | |
58 | |
59 PassRefPtr<AnimatableNumber> create(double value, CSSPrimitiveValue::UnitTyp
es type) | |
60 { | |
61 return AnimatableNumber::create(CSSPrimitiveValue::create(value, type).g
et()); | |
62 } | |
63 | |
64 PassRefPtr<AnimatableNumber> create(double valueLeft, CSSPrimitiveValue::Uni
tTypes typeLeft, double valueRight, CSSPrimitiveValue::UnitTypes typeRight) | |
65 { | |
66 return AnimatableNumber::create(createCalc(valueLeft, typeLeft, valueRig
ht, typeRight).get()); | |
67 } | |
68 | |
69 PassRefPtr<CSSCalcValue> createCalc(double valueLeft, CSSPrimitiveValue::Uni
tTypes typeLeft, double valueRight, CSSPrimitiveValue::UnitTypes typeRight) | |
70 { | |
71 return CSSCalcValue::create(CSSCalcValue::createExpressionNode( | |
72 CSSCalcValue::createExpressionNode(CSSPrimitiveValue::create(valueLe
ft, typeLeft), valueLeft == trunc(valueLeft)), | |
73 CSSCalcValue::createExpressionNode(CSSPrimitiveValue::create(valueRi
ght, typeRight), valueRight == trunc(valueRight)), | |
74 CalcAdd | |
75 )); | |
76 } | |
77 | |
78 bool testToCSSValue(CSSValue* cssValue) | |
79 { | |
80 return testToCSSValue(cssValue, cssValue); | |
81 } | |
82 bool testToCSSValue(CSSValue* cssValueExpected, CSSValue* cssValue) | |
83 { | |
84 return AnimatableNumber::create(cssValue)->toCSSValue()->equals(*cssValu
eExpected); | |
85 } | |
86 bool testInterpolate(CSSValue* cssValueExpected, AnimatableNumber* numberA,
AnimatableNumber* numberB, double fraction) | |
87 { | |
88 return toAnimatableNumber(AnimatableValue::interpolate(numberA, numberB,
fraction).get())->toCSSValue()->equals(*cssValueExpected); | |
89 } | |
90 bool testAdd(CSSValue* cssValueExpected, AnimatableNumber* numberA, Animatab
leNumber* numberB) | |
91 { | |
92 return toAnimatableNumber(AnimatableValue::add(numberA, numberB).get())-
>toCSSValue()->equals(*cssValueExpected); | |
93 } | |
94 | |
95 RefPtr<RenderStyle> style; | |
96 }; | |
97 | |
98 TEST_F(AnimatableNumberTest, CanCreateFrom) | |
99 { | |
100 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_NUMBER).get())); | |
101 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_PX).get())); | |
102 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_CM).get())); | |
103 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_MM).get())); | |
104 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_IN).get())); | |
105 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_PT).get())); | |
106 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_PC).get())); | |
107 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_EMS).get())); | |
108 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_EXS).get())); | |
109 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_REMS).get())); | |
110 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_DEG).get())); | |
111 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_RAD).get())); | |
112 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_GRAD).get())); | |
113 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_TURN).get())); | |
114 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_PERCENTAGE).get())); | |
115 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_VW).get())); | |
116 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_VH).get())); | |
117 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_VMIN).get())); | |
118 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_VMAX).get())); | |
119 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_MS).get())); | |
120 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_S).get())); | |
121 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_HZ).get())); | |
122 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_KHZ).get())); | |
123 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_DPPX).get())); | |
124 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_DPI).get())); | |
125 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(5, CSS
PrimitiveValue::CSS_DPCM).get())); | |
126 | |
127 EXPECT_TRUE(AnimatableNumber::canCreateFrom(createCalc(3, CSSPrimitiveValue:
:CSS_PX, 5, CSSPrimitiveValue::CSS_CM).get())); | |
128 EXPECT_TRUE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create(create
Calc(3, CSSPrimitiveValue::CSS_PX, 5, CSSPrimitiveValue::CSS_CM)).get())); | |
129 | |
130 EXPECT_FALSE(AnimatableNumber::canCreateFrom(CSSPrimitiveValue::create("NaN"
, CSSPrimitiveValue::CSS_STRING).get())); | |
131 } | |
132 | |
133 TEST_F(AnimatableNumberTest, Create) | |
134 { | |
135 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_NUMBER).get()
)); | |
136 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_PX).get())); | |
137 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_CM).get())); | |
138 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_MM).get())); | |
139 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_IN).get())); | |
140 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_PT).get())); | |
141 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_PC).get())); | |
142 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_EMS).get())); | |
143 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_EXS).get())); | |
144 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_REMS).get()))
; | |
145 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_DEG).get())); | |
146 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_RAD).get())); | |
147 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_GRAD).get()))
; | |
148 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_TURN).get()))
; | |
149 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_PERCENTAGE).g
et())); | |
150 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_VW).get())); | |
151 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_VH).get())); | |
152 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_VMIN).get()))
; | |
153 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_VMAX).get()))
; | |
154 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_MS).get())); | |
155 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_S).get())); | |
156 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_HZ).get())); | |
157 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_KHZ).get())); | |
158 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_DPPX).get()))
; | |
159 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_DPI).get())); | |
160 EXPECT_TRUE(static_cast<bool>(create(5, CSSPrimitiveValue::CSS_DPCM).get()))
; | |
161 | |
162 EXPECT_TRUE(static_cast<bool>( | |
163 AnimatableNumber::create(createCalc(3, CSSPrimitiveValue::CSS_PX, 5, CSS
PrimitiveValue::CSS_CM).get()).get() | |
164 )); | |
165 EXPECT_TRUE(static_cast<bool>( | |
166 AnimatableNumber::create(CSSPrimitiveValue::create(createCalc(3, CSSPrim
itiveValue::CSS_PX, 5, CSSPrimitiveValue::CSS_CM)).get()).get() | |
167 )); | |
168 } | |
169 | |
170 TEST_F(AnimatableNumberTest, ToCSSValue) | |
171 { | |
172 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_NUMBER).get())); | |
173 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_PX).get())); | |
174 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_CM).get())); | |
175 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_MM).get())); | |
176 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_IN).get())); | |
177 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_PT).get())); | |
178 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_PC).get())); | |
179 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_EMS).get())); | |
180 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_EXS).get())); | |
181 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_REMS).get())); | |
182 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_DEG).get())); | |
183 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_RAD).get())); | |
184 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_GRAD).get())); | |
185 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_TURN).get())); | |
186 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_PERCENTAGE).get())); | |
187 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_VW).get())); | |
188 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_VH).get())); | |
189 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_VMIN).get())); | |
190 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_VMAX).get())); | |
191 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_MS).get())); | |
192 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_S).get())); | |
193 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_HZ).get())); | |
194 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_KHZ).get())); | |
195 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_DPPX).get())); | |
196 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_DPI).get())); | |
197 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(-5, CSSPrimitiveValue::
CSS_DPCM).get())); | |
198 | |
199 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(createCalc(3, CSSPrimit
iveValue::CSS_PX, 5, CSSPrimitiveValue::CSS_IN)).get())); | |
200 EXPECT_TRUE(testToCSSValue(CSSPrimitiveValue::create(createCalc(3, CSSPrimit
iveValue::CSS_PX, 5, CSSPrimitiveValue::CSS_IN)).get(), | |
201 createCalc(3, CSSPrimitiveValue::CSS_PX, 5, CSSPrimitiveValue::CSS_IN).g
et())); | |
202 } | |
203 | |
204 TEST_F(AnimatableNumberTest, ToLength) | |
205 { | |
206 EXPECT_EQ(Length(-5, WebCore::Fixed), create(-5, CSSPrimitiveValue::CSS_PX)-
>toLength(style.get(), style.get(), 1)); | |
207 EXPECT_EQ(Length(-15, WebCore::Fixed), create(-5, CSSPrimitiveValue::CSS_PX)
->toLength(style.get(), style.get(), 3)); | |
208 EXPECT_EQ(Length(0, WebCore::Fixed), create(-5, CSSPrimitiveValue::CSS_PX)->
toLength(style.get(), style.get(), 1, NonNegativeValues)); | |
209 EXPECT_EQ(Length(0, WebCore::Fixed), create(-5, CSSPrimitiveValue::CSS_PX)->
toLength(style.get(), style.get(), 3, NonNegativeValues)); | |
210 | |
211 EXPECT_EQ(Length(-5, Percent), create(-5, CSSPrimitiveValue::CSS_PERCENTAGE)
->toLength(style.get(), style.get(), 1)); | |
212 EXPECT_EQ(Length(-5, Percent), create(-5, CSSPrimitiveValue::CSS_PERCENTAGE)
->toLength(style.get(), style.get(), 3)); | |
213 EXPECT_EQ(Length(0, Percent), create(-5, CSSPrimitiveValue::CSS_PERCENTAGE)-
>toLength(style.get(), style.get(), 1, NonNegativeValues)); | |
214 EXPECT_EQ(Length(0, Percent), create(-5, CSSPrimitiveValue::CSS_PERCENTAGE)-
>toLength(style.get(), style.get(), 3, NonNegativeValues)); | |
215 | |
216 EXPECT_EQ( | |
217 Length(CalculationValue::create( | |
218 adoptPtr(new CalcExpressionBinaryOperation( | |
219 adoptPtr(new CalcExpressionNumber(-5)), | |
220 adoptPtr(new CalcExpressionLength(Length(-5, Percent))), | |
221 CalcAdd)), | |
222 CalculationRangeAll)), | |
223 create(-5, CSSPrimitiveValue::CSS_PX, -5, CSSPrimitiveValue::CSS_PERCENT
AGE)->toLength(style.get(), style.get(), 1)); | |
224 EXPECT_EQ( | |
225 Length(CalculationValue::create( | |
226 adoptPtr(new CalcExpressionBinaryOperation( | |
227 adoptPtr(new CalcExpressionNumber(-15)), | |
228 adoptPtr(new CalcExpressionLength(Length(-5, Percent))), | |
229 CalcAdd)), | |
230 CalculationRangeAll)), | |
231 create(-5, CSSPrimitiveValue::CSS_PX, -5, CSSPrimitiveValue::CSS_PERCENT
AGE)->toLength(style.get(), style.get(), 3)); | |
232 EXPECT_EQ( | |
233 Length(CalculationValue::create( | |
234 adoptPtr(new CalcExpressionBinaryOperation( | |
235 adoptPtr(new CalcExpressionNumber(-5)), | |
236 adoptPtr(new CalcExpressionLength(Length(-5, Percent))), | |
237 CalcAdd)), | |
238 CalculationRangeNonNegative)), | |
239 create(-5, CSSPrimitiveValue::CSS_PX, -5, CSSPrimitiveValue::CSS_PERCENT
AGE)->toLength(style.get(), style.get(), 1, NonNegativeValues)); | |
240 EXPECT_EQ( | |
241 Length(CalculationValue::create( | |
242 adoptPtr(new CalcExpressionBinaryOperation( | |
243 adoptPtr(new CalcExpressionNumber(-15)), | |
244 adoptPtr(new CalcExpressionLength(Length(-5, Percent))), | |
245 CalcAdd)), | |
246 CalculationRangeNonNegative)), | |
247 create(-5, CSSPrimitiveValue::CSS_PX, -5, CSSPrimitiveValue::CSS_PERCENT
AGE)->toLength(style.get(), style.get(), 3, NonNegativeValues)); | |
248 } | |
249 | |
250 TEST_F(AnimatableNumberTest, Interpolate) | |
251 { | |
252 RefPtr<AnimatableNumber> from10 = create(10); | |
253 RefPtr<AnimatableNumber> to20 = create(20); | |
254 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(5, CSSPrimitiveValue:
:CSS_NUMBER).get(), from10.get(), to20.get(), -0.5)); | |
255 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(10, CSSPrimitiveValue:
:CSS_NUMBER).get(), from10.get(), to20.get(), 0)); | |
256 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(14, CSSPrimitiveValue:
:CSS_NUMBER).get(), from10.get(), to20.get(), 0.4)); | |
257 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(15, CSSPrimitiveValue:
:CSS_NUMBER).get(), from10.get(), to20.get(), 0.5)); | |
258 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(16, CSSPrimitiveValue:
:CSS_NUMBER).get(), from10.get(), to20.get(), 0.6)); | |
259 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(20, CSSPrimitiveValue:
:CSS_NUMBER).get(), from10.get(), to20.get(), 1)); | |
260 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(25, CSSPrimitiveValue:
:CSS_NUMBER).get(), from10.get(), to20.get(), 1.5)); | |
261 | |
262 RefPtr<AnimatableNumber> from10px = create(10, CSSPrimitiveValue::CSS_PX); | |
263 RefPtr<AnimatableNumber> to20pxAsInches = create(20.0 / 96, CSSPrimitiveValu
e::CSS_IN); | |
264 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(5, CSSPrimitiveValue:
:CSS_PX).get(), from10px.get(), to20pxAsInches.get(), -0.5)); | |
265 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(10, CSSPrimitiveValue:
:CSS_PX).get(), from10px.get(), to20pxAsInches.get(), 0)); | |
266 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(14, CSSPrimitiveValue:
:CSS_PX).get(), from10px.get(), to20pxAsInches.get(), 0.4)); | |
267 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(15, CSSPrimitiveValue:
:CSS_PX).get(), from10px.get(), to20pxAsInches.get(), 0.5)); | |
268 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(16, CSSPrimitiveValue:
:CSS_PX).get(), from10px.get(), to20pxAsInches.get(), 0.6)); | |
269 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(20.0 / 96, CSSPrimitiv
eValue::CSS_IN).get(), from10px.get(), to20pxAsInches.get(), 1)); | |
270 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(25, CSSPrimitiveValue:
:CSS_PX).get(), from10px.get(), to20pxAsInches.get(), 1.5)); | |
271 | |
272 RefPtr<AnimatableNumber> from10em = create(10, CSSPrimitiveValue::CSS_EMS); | |
273 RefPtr<AnimatableNumber> to20rem = create(20, CSSPrimitiveValue::CSS_REMS); | |
274 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(createCalc(15, CSSPrim
itiveValue::CSS_EMS, -10, CSSPrimitiveValue::CSS_REMS)).get(), | |
275 from10em.get(), to20rem.get(), -0.5)); | |
276 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(10, CSSPrimitiveValue:
:CSS_EMS).get(), | |
277 from10em.get(), to20rem.get(), 0)); | |
278 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(createCalc(6, CSSPrimi
tiveValue::CSS_EMS, 8, CSSPrimitiveValue::CSS_REMS)).get(), | |
279 from10em.get(), to20rem.get(), 0.4)); | |
280 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(createCalc(5, CSSPrimi
tiveValue::CSS_EMS, 10, CSSPrimitiveValue::CSS_REMS)).get(), | |
281 from10em.get(), to20rem.get(), 0.5)); | |
282 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(createCalc(4, CSSPrimi
tiveValue::CSS_EMS, 12, CSSPrimitiveValue::CSS_REMS)).get(), | |
283 from10em.get(), to20rem.get(), 0.6)); | |
284 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(20, CSSPrimitiveValue:
:CSS_REMS).get(), | |
285 from10em.get(), to20rem.get(), 1)); | |
286 EXPECT_TRUE(testInterpolate(CSSPrimitiveValue::create(createCalc(-5, CSSPrim
itiveValue::CSS_EMS, 30, CSSPrimitiveValue::CSS_REMS)).get(), | |
287 from10em.get(), to20rem.get(), 1.5)); | |
288 } | |
289 | |
290 TEST_F(AnimatableNumberTest, Add) | |
291 { | |
292 EXPECT_TRUE(testAdd(CSSPrimitiveValue::create(10, CSSPrimitiveValue::CSS_NUM
BER).get(), create(4).get(), create(6).get())); | |
293 EXPECT_TRUE(testAdd(CSSPrimitiveValue::create(10, CSSPrimitiveValue::CSS_NUM
BER).get(), create(0).get(), create(10).get())); | |
294 EXPECT_TRUE(testAdd(CSSPrimitiveValue::create(10, CSSPrimitiveValue::CSS_PX)
.get(), create(10, CSSPrimitiveValue::CSS_PX).get(), create(0, CSSPrimitiveValue
::CSS_MM).get())); | |
295 EXPECT_TRUE(testAdd(CSSPrimitiveValue::create(100, CSSPrimitiveValue::CSS_PX
).get(), create(4, CSSPrimitiveValue::CSS_PX).get(), create(1, CSSPrimitiveValue
::CSS_IN).get())); | |
296 EXPECT_TRUE(testAdd( | |
297 CSSPrimitiveValue::create(createCalc(10, CSSPrimitiveValue::CSS_EMS, 20,
CSSPrimitiveValue::CSS_REMS)).get(), | |
298 create(10, CSSPrimitiveValue::CSS_EMS).get(), | |
299 create(20, CSSPrimitiveValue::CSS_REMS).get())); | |
300 EXPECT_TRUE(testAdd( | |
301 CSSPrimitiveValue::create(10, CSSPrimitiveValue::CSS_EMS).get(), | |
302 create(10, CSSPrimitiveValue::CSS_EMS).get(), | |
303 create(0, CSSPrimitiveValue::CSS_REMS).get())); | |
304 EXPECT_TRUE(testAdd( | |
305 CSSPrimitiveValue::create(20, CSSPrimitiveValue::CSS_REMS).get(), | |
306 create(0, CSSPrimitiveValue::CSS_EMS).get(), | |
307 create(20, CSSPrimitiveValue::CSS_REMS).get())); | |
308 } | |
309 | |
310 } | |
OLD | NEW |