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/InterpolableValuePromise.h" |
| 7 |
| 8 #include "core/animation/AnimatableDouble.h" |
| 9 #include "core/css/CSSInheritedValue.h" |
| 10 #include "core/css/CSSPrimitiveValue.h" |
| 11 #include "core/css/StylePropertySet.h" |
| 12 |
| 13 #include <gtest/gtest.h> |
| 14 |
| 15 namespace WebCore { |
| 16 |
| 17 PassRefPtr<CSSValue> createCSSValue(CSSPropertyID id, const char* string) |
| 18 { |
| 19 RefPtrWillBeRawPtr<MutableStylePropertySet> propertySet = MutableStyleProper
tySet::create(); |
| 20 propertySet->setProperty(id, string); |
| 21 return propertySet->getPropertyCSSValue(id); |
| 22 } |
| 23 |
| 24 TEST(AnimationInterpolableValuePromiseTest, LateBindingInherit) |
| 25 { |
| 26 EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*CSSInheritedValue
::create())); |
| 27 } |
| 28 |
| 29 TEST(AnimationInterpolableValuePromiseTest, LateBindingFontUnits) |
| 30 { |
| 31 RefPtrWillBeRawPtr<CSSValue> value; |
| 32 |
| 33 value = createCSSValue(CSSPropertyLeft, "2em"); |
| 34 EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 35 |
| 36 value = createCSSValue(CSSPropertyLeft, "2ex"); |
| 37 EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 38 |
| 39 value = createCSSValue(CSSPropertyLeft, "2rem"); |
| 40 EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 41 |
| 42 value = createCSSValue(CSSPropertyLeft, "2ch"); |
| 43 EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 44 } |
| 45 |
| 46 TEST(AnimationInterpolableValuePromiseTest, LateBindingViewportUnits) |
| 47 { |
| 48 RefPtrWillBeRawPtr<CSSValue> value; |
| 49 |
| 50 value = createCSSValue(CSSPropertyLeft, "2vw"); |
| 51 EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 52 |
| 53 value = createCSSValue(CSSPropertyLeft, "2vh"); |
| 54 EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 55 |
| 56 value = createCSSValue(CSSPropertyLeft, "2vmin"); |
| 57 EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 58 |
| 59 value = createCSSValue(CSSPropertyLeft, "2vmax"); |
| 60 EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 61 } |
| 62 |
| 63 TEST(AnimationInterpolableValuePromiseTest, FixedUnits) |
| 64 { |
| 65 RefPtrWillBeRawPtr<CSSValue> value; |
| 66 |
| 67 value = createCSSValue(CSSPropertyZIndex, "2"); |
| 68 EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 69 |
| 70 value = createCSSValue(CSSPropertyLeft, "2px"); |
| 71 EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 72 |
| 73 value = createCSSValue(CSSPropertyLeft, "2cm"); |
| 74 EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 75 |
| 76 value = createCSSValue(CSSPropertyLeft, "2in"); |
| 77 EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 78 |
| 79 RefPtrWillBeRawPtr<CSSPrimitiveValue> rotation = CSSPrimitiveValue::create(2
, CSSPrimitiveValue::CSS_DEG); |
| 80 EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*rotation)); |
| 81 } |
| 82 |
| 83 TEST(AnimationInterpolableValuePromiseTest, Calc) |
| 84 { |
| 85 RefPtrWillBeRawPtr<CSSValue> value; |
| 86 |
| 87 value = createCSSValue(CSSPropertyLeft, "calc(5px + 30%%)"); |
| 88 EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 89 |
| 90 value = createCSSValue(CSSPropertyLeft, "calc(5px + 30em)"); |
| 91 EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 92 |
| 93 value = createCSSValue(CSSPropertyLeft, "calc(2 * 5px - 10%% + (4 * 20in) /
6)"); |
| 94 EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 95 |
| 96 value = createCSSValue(CSSPropertyLeft, "calc(2 * 5px - 10%% + (4 * 20vw) /
6)"); |
| 97 EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 98 } |
| 99 |
| 100 TEST(AnimationInterpolableValuePromiseTest, Percent) |
| 101 { |
| 102 RefPtrWillBeRawPtr<CSSValue> value; |
| 103 |
| 104 value = createCSSValue(CSSPropertyLeft, "2%%"); |
| 105 EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 106 } |
| 107 |
| 108 TEST(AnimationInterpolableValuePromiseTest, Color) |
| 109 { |
| 110 RefPtrWillBeRawPtr<CSSValue> value; |
| 111 |
| 112 value = createCSSValue(CSSPropertyColor, "red"); |
| 113 EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 114 |
| 115 value = createCSSValue(CSSPropertyColor, "rgb(1, 2, 3)"); |
| 116 EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 117 |
| 118 value = createCSSValue(CSSPropertyColor, "currentcolor"); |
| 119 EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 120 } |
| 121 |
| 122 TEST(AnimationInterpolableValuePromiseTest, FontWeight) |
| 123 { |
| 124 RefPtrWillBeRawPtr<CSSValue> value; |
| 125 |
| 126 value = createCSSValue(CSSPropertyFontWeight, "400"); |
| 127 EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 128 |
| 129 value = createCSSValue(CSSPropertyFontWeight, "bold"); |
| 130 EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 131 |
| 132 value = createCSSValue(CSSPropertyFontWeight, "lighter"); |
| 133 EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value)); |
| 134 } |
| 135 |
| 136 } |
OLD | NEW |