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