| 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 |