OLD | NEW |
| (Empty) |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "config.h" | |
6 #include "core/animation/LengthPoint3DStyleInterpolation.h" | |
7 | |
8 #include "core/animation/LengthStyleInterpolation.h" | |
9 #include "core/css/CSSCalculationValue.h" | |
10 #include "core/css/StylePropertySet.h" | |
11 | |
12 #include "stdio.h" | |
13 | |
14 #include <gtest/gtest.h> | |
15 | |
16 namespace blink { | |
17 | |
18 class AnimationLengthPoint3DStyleInterpolationTest : public ::testing::Test { | |
19 protected: | |
20 static PassOwnPtrWillBeRawPtr<InterpolableValue> lengthPoint3DToInterpolable
Value(const CSSValue& value) | |
21 { | |
22 return LengthPoint3DStyleInterpolation::lengthPoint3DtoInterpolableValue
(value); | |
23 } | |
24 | |
25 static PassRefPtrWillBeRawPtr<CSSValue> interpolableValueToLengthPoint3D(Int
erpolableValue* value) | |
26 { | |
27 return LengthPoint3DStyleInterpolation::interpolableValueToLengthPoint3D
(value); | |
28 } | |
29 | |
30 static PassRefPtrWillBeRawPtr<CSSValue> roundTrip(PassRefPtrWillBeRawPtr<CSS
Value> value) | |
31 { | |
32 return interpolableValueToLengthPoint3D(lengthPoint3DToInterpolableValue
(*value).get()); | |
33 } | |
34 | |
35 static void testPrimitiveValue(RefPtrWillBeRawPtr<CSSValue> value, double x,
double y, double z, CSSPrimitiveValue::UnitType unitTypeX, CSSPrimitiveValue::U
nitType unitTypeY, CSSPrimitiveValue::UnitType unitTypeZ) | |
36 { | |
37 EXPECT_TRUE(value->isValueList()); | |
38 if (unitTypeZ == CSSPrimitiveValue::CSS_UNKNOWN) { | |
39 const int sizeOfList = 2; | |
40 const CSSPrimitiveValue* length[sizeOfList] = { | |
41 toCSSPrimitiveValue(toCSSValueList(*value).item(0)), | |
42 toCSSPrimitiveValue(toCSSValueList(*value).item(1)) }; | |
43 | |
44 EXPECT_EQ(length[0]->getDoubleValue(), x); | |
45 EXPECT_EQ(length[1]->getDoubleValue(), y); | |
46 | |
47 EXPECT_EQ(unitTypeX, length[0]->primitiveType()); | |
48 EXPECT_EQ(unitTypeY, length[1]->primitiveType()); | |
49 } else { | |
50 const int sizeOfList = 3; | |
51 const CSSPrimitiveValue* length[sizeOfList] = { | |
52 toCSSPrimitiveValue(toCSSValueList(*value).item(0)), | |
53 toCSSPrimitiveValue(toCSSValueList(*value).item(1)), | |
54 toCSSPrimitiveValue(toCSSValueList(*value).item(2)) }; | |
55 | |
56 EXPECT_EQ(length[0]->getDoubleValue(), x); | |
57 EXPECT_EQ(length[1]->getDoubleValue(), y); | |
58 EXPECT_EQ(length[2]->getDoubleValue(), z); | |
59 | |
60 EXPECT_EQ(unitTypeX, length[0]->primitiveType()); | |
61 EXPECT_EQ(unitTypeY, length[1]->primitiveType()); | |
62 EXPECT_EQ(unitTypeZ, length[2]->primitiveType()); | |
63 } | |
64 } | |
65 }; | |
66 | |
67 TEST_F(AnimationLengthPoint3DStyleInterpolationTest, MultipleValuePoint2D) | |
68 { | |
69 RefPtrWillBeRawPtr<CSSValueList> lengthPoint2DPx = CSSValueList::createComma
Separated(); | |
70 lengthPoint2DPx->append(CSSPrimitiveValue::create(10, CSSPrimitiveValue::CSS
_PX)); | |
71 lengthPoint2DPx->append(CSSPrimitiveValue::create(30, CSSPrimitiveValue::CSS
_PERCENTAGE)); | |
72 RefPtrWillBeRawPtr<CSSValue> value = roundTrip(lengthPoint2DPx.release()); | |
73 testPrimitiveValue(value, 10, 30, 0, CSSPrimitiveValue::CSS_PX, CSSPrimitive
Value::CSS_PERCENTAGE, CSSPrimitiveValue::CSS_UNKNOWN); | |
74 } | |
75 | |
76 TEST_F(AnimationLengthPoint3DStyleInterpolationTest, ZeroPoint3D) | |
77 { | |
78 RefPtrWillBeRawPtr<CSSValueList> lengthPoint3D = CSSValueList::createCommaSe
parated(); | |
79 lengthPoint3D->append(CSSPrimitiveValue::create(0, CSSPrimitiveValue::CSS_PX
)); | |
80 lengthPoint3D->append(CSSPrimitiveValue::create(0, CSSPrimitiveValue::CSS_EM
S)); | |
81 lengthPoint3D->append(CSSPrimitiveValue::create(0, CSSPrimitiveValue::CSS_PE
RCENTAGE)); | |
82 RefPtrWillBeRawPtr<CSSValue> value = roundTrip(lengthPoint3D.release()); | |
83 testPrimitiveValue(value, 0, 0, 0, CSSPrimitiveValue::CSS_PX, CSSPrimitiveVa
lue::CSS_EMS, CSSPrimitiveValue::CSS_PERCENTAGE); | |
84 } | |
85 | |
86 TEST_F(AnimationLengthPoint3DStyleInterpolationTest, SingleUnitPoint3D) | |
87 { | |
88 RefPtrWillBeRawPtr<CSSValueList> lengthPoint3D = CSSValueList::createCommaSe
parated(); | |
89 lengthPoint3D->append(CSSPrimitiveValue::create(10, CSSPrimitiveValue::CSS_P
X)); | |
90 lengthPoint3D->append(CSSPrimitiveValue::create(10, CSSPrimitiveValue::CSS_P
ERCENTAGE)); | |
91 lengthPoint3D->append(CSSPrimitiveValue::create(10, CSSPrimitiveValue::CSS_E
MS)); | |
92 RefPtrWillBeRawPtr<CSSValue> value = roundTrip(lengthPoint3D.release()); | |
93 testPrimitiveValue(value, 10, 10, 10, CSSPrimitiveValue::CSS_PX, CSSPrimitiv
eValue::CSS_PERCENTAGE, CSSPrimitiveValue::CSS_EMS); | |
94 } | |
95 | |
96 TEST_F(AnimationLengthPoint3DStyleInterpolationTest, MultipleValuePoint3D) | |
97 { | |
98 RefPtrWillBeRawPtr<CSSValueList> lengthPoint3DPx = CSSValueList::createComma
Separated(); | |
99 lengthPoint3DPx->append(CSSPrimitiveValue::create(10, CSSPrimitiveValue::CSS
_PX)); | |
100 lengthPoint3DPx->append(CSSPrimitiveValue::create(30, CSSPrimitiveValue::CSS
_PERCENTAGE)); | |
101 lengthPoint3DPx->append(CSSPrimitiveValue::create(20, CSSPrimitiveValue::CSS
_EMS)); | |
102 RefPtrWillBeRawPtr<CSSValue> value = roundTrip(lengthPoint3DPx.release()); | |
103 testPrimitiveValue(value, 10, 30, 20, CSSPrimitiveValue::CSS_PX, CSSPrimitiv
eValue::CSS_PERCENTAGE, CSSPrimitiveValue::CSS_EMS); | |
104 } | |
105 | |
106 TEST_F(AnimationLengthPoint3DStyleInterpolationTest, NegativeValuePoint3D) | |
107 { | |
108 RefPtrWillBeRawPtr<CSSValueList> lengthPoint3DPx = CSSValueList::createComma
Separated(); | |
109 lengthPoint3DPx->append(CSSPrimitiveValue::create(-10, CSSPrimitiveValue::CS
S_PX)); | |
110 lengthPoint3DPx->append(CSSPrimitiveValue::create(-30, CSSPrimitiveValue::CS
S_PERCENTAGE)); | |
111 lengthPoint3DPx->append(CSSPrimitiveValue::create(-20, CSSPrimitiveValue::CS
S_EMS)); | |
112 RefPtrWillBeRawPtr<CSSValue> value = roundTrip(lengthPoint3DPx.release()); | |
113 testPrimitiveValue(value, -10, -30, -20, CSSPrimitiveValue::CSS_PX, CSSPrimi
tiveValue::CSS_PERCENTAGE, CSSPrimitiveValue::CSS_EMS); | |
114 } | |
115 | |
116 } | |
OLD | NEW |