1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
#include "config.h"
#include "core/animation/VisibilityStyleInterpolation.h"
#include "core/css/CSSPrimitiveValue.h"
#include "core/css/StylePropertySet.h"
#include <gtest/gtest.h>
namespace blink {
class AnimationVisibilityStyleInterpolationTest : public ::testing::Test {
protected:
static PassOwnPtrWillBeRawPtr<InterpolableValue> visibilityToInterpolableValue(const CSSValue& value)
{
return VisibilityStyleInterpolation::visibilityToInterpolableValue(value);
}
static PassRefPtrWillBeRawPtr<CSSValue> interpolableValueToVisibility(InterpolableValue* value, CSSValueID notVisible)
{
return VisibilityStyleInterpolation::interpolableValueToVisibility(value, notVisible);
}
static PassRefPtrWillBeRawPtr<CSSValue> roundTrip(PassRefPtrWillBeRawPtr<CSSValue> value, CSSValueID valueID)
{
return interpolableValueToVisibility(visibilityToInterpolableValue(*value).get(), valueID);
}
static void testPrimitiveValue(PassRefPtrWillBeRawPtr<CSSValue> value, CSSValueID valueID)
{
EXPECT_TRUE(value->isPrimitiveValue());
EXPECT_EQ(valueID, toCSSPrimitiveValue(value.get())->getValueID());
}
static InterpolableValue* getCachedValue(Interpolation& interpolation)
{
return interpolation.getCachedValueForTesting();
}
};
TEST_F(AnimationVisibilityStyleInterpolationTest, ValueIDs)
{
RefPtrWillBeRawPtr<CSSValue> value = roundTrip(CSSPrimitiveValue::createIdentifier(CSSValueVisible), CSSValueHidden);
testPrimitiveValue(value, CSSValueVisible);
value = roundTrip(CSSPrimitiveValue::createIdentifier(CSSValueCollapse), CSSValueCollapse);
testPrimitiveValue(value, CSSValueCollapse);
value = roundTrip(CSSPrimitiveValue::createIdentifier(CSSValueHidden), CSSValueHidden);
testPrimitiveValue(value, CSSValueHidden);
}
TEST_F(AnimationVisibilityStyleInterpolationTest, Interpolation)
{
RefPtrWillBeRawPtr<Interpolation> interpolation = Interpolation::create(
visibilityToInterpolableValue(*CSSPrimitiveValue::createIdentifier(CSSValueHidden)),
visibilityToInterpolableValue(*CSSPrimitiveValue::createIdentifier(CSSValueVisible)));
interpolation->interpolate(0, 0.0);
RefPtrWillBeRawPtr<CSSValue> value = interpolableValueToVisibility(getCachedValue(*interpolation), CSSValueHidden);
testPrimitiveValue(value, CSSValueHidden);
interpolation->interpolate(0, 0.5);
value = interpolableValueToVisibility(getCachedValue(*interpolation), CSSValueHidden);
testPrimitiveValue(value, CSSValueVisible);
}
}
|