| Index: Source/core/animation/InterpolableValuePromiseTest.cpp
|
| diff --git a/Source/core/animation/InterpolableValuePromiseTest.cpp b/Source/core/animation/InterpolableValuePromiseTest.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2ee598fd3cb6fe821b32a41b8bc725936bb07099
|
| --- /dev/null
|
| +++ b/Source/core/animation/InterpolableValuePromiseTest.cpp
|
| @@ -0,0 +1,136 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "config.h"
|
| +#include "core/animation/InterpolableValuePromise.h"
|
| +
|
| +#include "core/animation/AnimatableDouble.h"
|
| +#include "core/css/CSSInheritedValue.h"
|
| +#include "core/css/CSSPrimitiveValue.h"
|
| +#include "core/css/StylePropertySet.h"
|
| +
|
| +#include <gtest/gtest.h>
|
| +
|
| +namespace WebCore {
|
| +
|
| +PassRefPtr<CSSValue> createCSSValue(CSSPropertyID id, const char* string)
|
| +{
|
| + RefPtrWillBeRawPtr<MutableStylePropertySet> propertySet = MutableStylePropertySet::create();
|
| + propertySet->setProperty(id, string);
|
| + return propertySet->getPropertyCSSValue(id);
|
| +}
|
| +
|
| +TEST(AnimationInterpolableValuePromiseTest, LateBindingInherit)
|
| +{
|
| + EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*CSSInheritedValue::create()));
|
| +}
|
| +
|
| +TEST(AnimationInterpolableValuePromiseTest, LateBindingFontUnits)
|
| +{
|
| + RefPtrWillBeRawPtr<CSSValue> value;
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "2em");
|
| + EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "2ex");
|
| + EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "2rem");
|
| + EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "2ch");
|
| + EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +}
|
| +
|
| +TEST(AnimationInterpolableValuePromiseTest, LateBindingViewportUnits)
|
| +{
|
| + RefPtrWillBeRawPtr<CSSValue> value;
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "2vw");
|
| + EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "2vh");
|
| + EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "2vmin");
|
| + EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "2vmax");
|
| + EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +}
|
| +
|
| +TEST(AnimationInterpolableValuePromiseTest, FixedUnits)
|
| +{
|
| + RefPtrWillBeRawPtr<CSSValue> value;
|
| +
|
| + value = createCSSValue(CSSPropertyZIndex, "2");
|
| + EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "2px");
|
| + EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "2cm");
|
| + EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "2in");
|
| + EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + RefPtrWillBeRawPtr<CSSPrimitiveValue> rotation = CSSPrimitiveValue::create(2, CSSPrimitiveValue::CSS_DEG);
|
| + EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*rotation));
|
| +}
|
| +
|
| +TEST(AnimationInterpolableValuePromiseTest, Calc)
|
| +{
|
| + RefPtrWillBeRawPtr<CSSValue> value;
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "calc(5px + 30%%)");
|
| + EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "calc(5px + 30em)");
|
| + EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "calc(2 * 5px - 10%% + (4 * 20in) / 6)");
|
| + EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "calc(2 * 5px - 10%% + (4 * 20vw) / 6)");
|
| + EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +}
|
| +
|
| +TEST(AnimationInterpolableValuePromiseTest, Percent)
|
| +{
|
| + RefPtrWillBeRawPtr<CSSValue> value;
|
| +
|
| + value = createCSSValue(CSSPropertyLeft, "2%%");
|
| + EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +}
|
| +
|
| +TEST(AnimationInterpolableValuePromiseTest, Color)
|
| +{
|
| + RefPtrWillBeRawPtr<CSSValue> value;
|
| +
|
| + value = createCSSValue(CSSPropertyColor, "red");
|
| + EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyColor, "rgb(1, 2, 3)");
|
| + EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyColor, "currentcolor");
|
| + EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +}
|
| +
|
| +TEST(AnimationInterpolableValuePromiseTest, FontWeight)
|
| +{
|
| + RefPtrWillBeRawPtr<CSSValue> value;
|
| +
|
| + value = createCSSValue(CSSPropertyFontWeight, "400");
|
| + EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyFontWeight, "bold");
|
| + EXPECT_FALSE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +
|
| + value = createCSSValue(CSSPropertyFontWeight, "lighter");
|
| + EXPECT_TRUE(InterpolableValuePromise::requiresLateBinding(*value));
|
| +}
|
| +
|
| +}
|
|
|