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