blob: 8c03b7e1dfd3a8138846d843ac7e078a51e0938a [file] [log] [blame]
#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 PassOwnPtr<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)
{
RefPtr<Interpolation> interpolation = VisibilityStyleInterpolation::create(
*CSSPrimitiveValue::createIdentifier(CSSValueHidden),
*CSSPrimitiveValue::createIdentifier(CSSValueVisible),
CSSPropertyVisibility);
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);
}
}