| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 #include "core/animation/SVGStrokeDasharrayStyleInterpolation.h" | 6 #include "core/animation/SVGStrokeDasharrayStyleInterpolation.h" |
| 7 | 7 |
| 8 #include "core/css/CSSPrimitiveValue.h" | 8 #include "core/css/CSSPrimitiveValue.h" |
| 9 #include "core/css/CSSValueList.h" | 9 #include "core/css/CSSValueList.h" |
| 10 | 10 |
| 11 #include <gtest/gtest.h> | 11 #include <gtest/gtest.h> |
| 12 | 12 |
| 13 namespace blink { | 13 namespace blink { |
| 14 | 14 |
| 15 class AnimationSVGStrokeDasharrayStyleInterpolationTest : public ::testing::Test
{ | 15 class AnimationSVGStrokeDasharrayStyleInterpolationTest : public ::testing::Test
{ |
| 16 protected: | 16 protected: |
| 17 static PassRefPtrWillBeRawPtr<CSSValueList> interpolableValueToStrokeDasharr
ay(const InterpolableValue& value, const Vector<CSSPrimitiveValue::UnitType>& ty
pes) | 17 static PassRefPtrWillBeRawPtr<CSSValueList> interpolableValueToStrokeDasharr
ay(const InterpolableValue& value) |
| 18 { | 18 { |
| 19 return SVGStrokeDasharrayStyleInterpolation::interpolableValueToStrokeDa
sharray(value, types); | 19 return SVGStrokeDasharrayStyleInterpolation::interpolableValueToStrokeDa
sharray(value); |
| 20 } | 20 } |
| 21 | 21 |
| 22 static PassRefPtrWillBeRawPtr<CSSValueList> roundTrip(const CSSValue& value,
const Vector<CSSPrimitiveValue::UnitType>& types) | 22 static PassRefPtrWillBeRawPtr<CSSValueList> roundTrip(const CSSValue& value) |
| 23 { | 23 { |
| 24 RefPtrWillBeRawPtr<SVGStrokeDasharrayStyleInterpolation> interpolation =
SVGStrokeDasharrayStyleInterpolation::maybeCreate(value, value, CSSPropertyStro
keDasharray); | 24 RefPtrWillBeRawPtr<SVGStrokeDasharrayStyleInterpolation> interpolation =
SVGStrokeDasharrayStyleInterpolation::maybeCreate(value, value, CSSPropertyStro
keDasharray); |
| 25 ASSERT(interpolation); | 25 ASSERT(interpolation); |
| 26 return SVGStrokeDasharrayStyleInterpolation::interpolableValueToStrokeDa
sharray(*interpolation->m_start, types); | 26 return SVGStrokeDasharrayStyleInterpolation::interpolableValueToStrokeDa
sharray(*interpolation->m_start); |
| 27 } | 27 } |
| 28 | 28 |
| 29 static void testPrimitiveValue(const CSSValue& cssValue, double value, CSSPr
imitiveValue::UnitType unitType) | 29 static void testPrimitiveValue(const CSSValue& cssValue, double value, CSSPr
imitiveValue::UnitType unitType) |
| 30 { | 30 { |
| 31 EXPECT_TRUE(cssValue.isPrimitiveValue()); | 31 EXPECT_TRUE(cssValue.isPrimitiveValue()); |
| 32 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(cssValue); | 32 const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(cssValue); |
| 33 | 33 |
| 34 EXPECT_EQ(primitiveValue.primitiveType(), unitType); | 34 EXPECT_EQ(primitiveValue.primitiveType(), unitType); |
| 35 EXPECT_EQ(primitiveValue.getDoubleValue(), value); | 35 EXPECT_EQ(primitiveValue.getDoubleValue(), value); |
| 36 } | 36 } |
| 37 }; | 37 }; |
| 38 | 38 |
| 39 TEST_F(AnimationSVGStrokeDasharrayStyleInterpolationTest, Zero) | 39 TEST_F(AnimationSVGStrokeDasharrayStyleInterpolationTest, Zero) |
| 40 { | 40 { |
| 41 RefPtrWillBeRawPtr<CSSValueList> start = CSSValueList::createCommaSeparated(
); | 41 RefPtrWillBeRawPtr<CSSValueList> start = CSSValueList::createCommaSeparated(
); |
| 42 start->append(CSSPrimitiveValue::create(0, CSSPrimitiveValue::CSS_PERCENTAGE
)); | 42 start->append(CSSPrimitiveValue::create(0, CSSPrimitiveValue::CSS_PERCENTAGE
)); |
| 43 start->append(CSSPrimitiveValue::create(0, CSSPrimitiveValue::CSS_EMS)); | 43 start->append(CSSPrimitiveValue::create(0, CSSPrimitiveValue::CSS_EMS)); |
| 44 start->append(CSSPrimitiveValue::create(0, CSSPrimitiveValue::CSS_PX)); | 44 start->append(CSSPrimitiveValue::create(0, CSSPrimitiveValue::CSS_PX)); |
| 45 | 45 |
| 46 Vector<CSSPrimitiveValue::UnitType> types(3); | 46 RefPtrWillBeRawPtr<CSSValueList> value = roundTrip(*start); |
| 47 types[0] = CSSPrimitiveValue::CSS_PERCENTAGE; | |
| 48 types[1] = CSSPrimitiveValue::CSS_EMS; | |
| 49 types[2] = CSSPrimitiveValue::CSS_PX; | |
| 50 RefPtrWillBeRawPtr<CSSValueList> value = roundTrip(*start, types); | |
| 51 EXPECT_EQ(value->length(), 3u); | 47 EXPECT_EQ(value->length(), 3u); |
| 52 testPrimitiveValue(*value->item(0), 0, CSSPrimitiveValue::CSS_PERCENTAGE); | 48 testPrimitiveValue(*value->item(0), 0, CSSPrimitiveValue::CSS_PERCENTAGE); |
| 53 testPrimitiveValue(*value->item(1), 0, CSSPrimitiveValue::CSS_EMS); | 49 testPrimitiveValue(*value->item(1), 0, CSSPrimitiveValue::CSS_EMS); |
| 54 testPrimitiveValue(*value->item(2), 0, CSSPrimitiveValue::CSS_PX); | 50 testPrimitiveValue(*value->item(2), 0, CSSPrimitiveValue::CSS_PX); |
| 55 } | 51 } |
| 56 | 52 |
| 57 TEST_F(AnimationSVGStrokeDasharrayStyleInterpolationTest, SingleUnit) | 53 TEST_F(AnimationSVGStrokeDasharrayStyleInterpolationTest, SingleUnit) |
| 58 { | 54 { |
| 59 RefPtrWillBeRawPtr<CSSValueList> start = CSSValueList::createCommaSeparated(
); | 55 RefPtrWillBeRawPtr<CSSValueList> start = CSSValueList::createCommaSeparated(
); |
| 60 start->append(CSSPrimitiveValue::create(0, CSSPrimitiveValue::CSS_PX)); | 56 start->append(CSSPrimitiveValue::create(0, CSSPrimitiveValue::CSS_PX)); |
| 61 start->append(CSSPrimitiveValue::create(10, CSSPrimitiveValue::CSS_EMS)); | 57 start->append(CSSPrimitiveValue::create(10, CSSPrimitiveValue::CSS_EMS)); |
| 62 start->append(CSSPrimitiveValue::create(-20, CSSPrimitiveValue::CSS_EMS)); | 58 start->append(CSSPrimitiveValue::create(-20, CSSPrimitiveValue::CSS_EMS)); |
| 63 start->append(CSSPrimitiveValue::create(0, CSSPrimitiveValue::CSS_PERCENTAGE
)); | 59 start->append(CSSPrimitiveValue::create(0, CSSPrimitiveValue::CSS_PERCENTAGE
)); |
| 64 start->append(CSSPrimitiveValue::create(30, CSSPrimitiveValue::CSS_EMS)); | 60 start->append(CSSPrimitiveValue::create(30, CSSPrimitiveValue::CSS_EMS)); |
| 65 | 61 |
| 66 Vector<CSSPrimitiveValue::UnitType> types(5); | 62 RefPtrWillBeRawPtr<CSSValueList> value = roundTrip(*start); |
| 67 types[0] = CSSPrimitiveValue::CSS_PX; | |
| 68 types[1] = CSSPrimitiveValue::CSS_EMS; | |
| 69 types[2] = CSSPrimitiveValue::CSS_EMS; | |
| 70 types[3] = CSSPrimitiveValue::CSS_PERCENTAGE; | |
| 71 types[4] = CSSPrimitiveValue::CSS_EMS; | |
| 72 RefPtrWillBeRawPtr<CSSValueList> value = roundTrip(*start, types); | |
| 73 EXPECT_EQ(value->length(), 5u); | 63 EXPECT_EQ(value->length(), 5u); |
| 74 testPrimitiveValue(*value->item(0), 0, CSSPrimitiveValue::CSS_PX); | 64 testPrimitiveValue(*value->item(0), 0, CSSPrimitiveValue::CSS_PX); |
| 75 testPrimitiveValue(*value->item(1), 10, CSSPrimitiveValue::CSS_EMS); | 65 testPrimitiveValue(*value->item(1), 10, CSSPrimitiveValue::CSS_EMS); |
| 76 testPrimitiveValue(*value->item(2), 0, CSSPrimitiveValue::CSS_EMS); | 66 testPrimitiveValue(*value->item(2), 0, CSSPrimitiveValue::CSS_EMS); |
| 77 testPrimitiveValue(*value->item(3), 0, CSSPrimitiveValue::CSS_PERCENTAGE); | 67 testPrimitiveValue(*value->item(3), 0, CSSPrimitiveValue::CSS_PERCENTAGE); |
| 78 testPrimitiveValue(*value->item(4), 30, CSSPrimitiveValue::CSS_EMS); | 68 testPrimitiveValue(*value->item(4), 30, CSSPrimitiveValue::CSS_EMS); |
| 79 } | 69 } |
| 80 | 70 |
| 81 TEST_F(AnimationSVGStrokeDasharrayStyleInterpolationTest, None) | 71 TEST_F(AnimationSVGStrokeDasharrayStyleInterpolationTest, None) |
| 82 { | 72 { |
| 83 RefPtrWillBeRawPtr<CSSPrimitiveValue> start = CSSPrimitiveValue::createIdent
ifier(CSSValueNone); | 73 RefPtrWillBeRawPtr<CSSPrimitiveValue> start = CSSPrimitiveValue::createIdent
ifier(CSSValueNone); |
| 84 | 74 |
| 85 Vector<CSSPrimitiveValue::UnitType> types(1); | 75 RefPtrWillBeRawPtr<CSSValueList> value = roundTrip(*start); |
| 86 types[0] = CSSPrimitiveValue::CSS_PX; | |
| 87 RefPtrWillBeRawPtr<CSSValueList> value = roundTrip(*start, types); | |
| 88 EXPECT_EQ(value->length(), 1u); | 76 EXPECT_EQ(value->length(), 1u); |
| 89 testPrimitiveValue(*value->item(0), 0, CSSPrimitiveValue::CSS_PX); | 77 testPrimitiveValue(*value->item(0), 0, CSSPrimitiveValue::CSS_PX); |
| 90 } | 78 } |
| 91 | 79 |
| 92 } | 80 } |
| OLD | NEW |