| Index: Source/core/platform/animation/TimingFunctionTest.cpp
|
| diff --git a/Source/core/platform/animation/TimingFunctionTest.cpp b/Source/core/platform/animation/TimingFunctionTest.cpp
|
| index 24fe02982187f4fca4c18257356fd4c04249dbc1..33d51b2c6db8d52a8b5c5f5382eb14fa5aa04d1f 100644
|
| --- a/Source/core/platform/animation/TimingFunctionTest.cpp
|
| +++ b/Source/core/platform/animation/TimingFunctionTest.cpp
|
| @@ -64,6 +64,7 @@
|
| } \
|
| }
|
|
|
| +
|
| using namespace WebCore;
|
|
|
| namespace {
|
| @@ -86,12 +87,21 @@ TEST_F(TimingFunctionTest, BaseOperatorEq)
|
| RefPtr<TimingFunction> stepsTiming1 = StepsTimingFunction::preset(StepsTimingFunction::End);
|
| RefPtr<TimingFunction> stepsTiming2 = StepsTimingFunction::create(5, true);
|
|
|
| + RefPtr<ChainedTimingFunction> chainedTiming1 = ChainedTimingFunction::create();
|
| + chainedTiming1->appendSegment(1.0, linearTiming.get());
|
| +
|
| + RefPtr<ChainedTimingFunction> chainedTiming2 = ChainedTimingFunction::create();
|
| + chainedTiming2->appendSegment(0.5, cubicTiming1.get());
|
| + chainedTiming2->appendSegment(1.0, cubicTiming2.get());
|
| +
|
| NE_HELPER(v);
|
| NE_HELPER_APPEND(v, linearTiming);
|
| NE_HELPER_APPEND(v, cubicTiming1);
|
| NE_HELPER_APPEND(v, cubicTiming2);
|
| NE_HELPER_APPEND(v, stepsTiming1);
|
| NE_HELPER_APPEND(v, stepsTiming2);
|
| + NE_HELPER_APPEND(v, chainedTiming1);
|
| + NE_HELPER_APPEND(v, chainedTiming2);
|
| NE_HELPER_LOOP(v);
|
| }
|
|
|
| @@ -177,5 +187,67 @@ TEST_F(TimingFunctionTest, StepsOperatorEqReflectivityBug)
|
| EXPECT_REFV_NE(stepsB, stepsA);
|
| }
|
|
|
| +TEST_F(TimingFunctionTest, ChainedEq)
|
| +{
|
| + // Single item in chain
|
| + RefPtr<TimingFunction> cubicTiming1 = CubicBezierTimingFunction::create(0.25, 0.1, 0.25, 1.0);
|
| + RefPtr<TimingFunction> cubicTiming2 = CubicBezierTimingFunction::create(0.25, 0.1, 0.25, 1.0);
|
| + RefPtr<TimingFunction> cubicTiming3 = CubicBezierTimingFunction::preset(CubicBezierTimingFunction::EaseOut);
|
| +
|
| + RefPtr<ChainedTimingFunction> chainedSingleCubic1 = ChainedTimingFunction::create();
|
| + chainedSingleCubic1->appendSegment(1.0, cubicTiming1.get());
|
| + EXPECT_REFV_EQ(chainedSingleCubic1, chainedSingleCubic1);
|
| +
|
| + RefPtr<ChainedTimingFunction> chainedSingleCubic2 = ChainedTimingFunction::create();
|
| + chainedSingleCubic2->appendSegment(1.0, cubicTiming1.get()); // Same inner timing function
|
| + EXPECT_REFV_EQ(chainedSingleCubic1, chainedSingleCubic2);
|
| +
|
| + RefPtr<ChainedTimingFunction> chainedSingleCubic3 = ChainedTimingFunction::create();
|
| + chainedSingleCubic3->appendSegment(1.0, cubicTiming2.get()); // == inner timing function
|
| + EXPECT_REFV_EQ(chainedSingleCubic1, chainedSingleCubic3);
|
| +
|
| + RefPtr<ChainedTimingFunction> chainedSingleCubic4 = ChainedTimingFunction::create();
|
| + chainedSingleCubic4->appendSegment(0.5, cubicTiming1.get()); // Different offset
|
| + EXPECT_REFV_NE(chainedSingleCubic1, chainedSingleCubic4);
|
| + EXPECT_REFV_NE(chainedSingleCubic3, chainedSingleCubic4);
|
| +
|
| + RefPtr<ChainedTimingFunction> chainedSingleCubic5 = ChainedTimingFunction::create();
|
| + chainedSingleCubic5->appendSegment(1.0, cubicTiming3.get()); // != inner timing function (same type)
|
| + EXPECT_REFV_NE(chainedSingleCubic1, chainedSingleCubic5);
|
| + EXPECT_REFV_NE(chainedSingleCubic2, chainedSingleCubic5);
|
| + EXPECT_REFV_NE(chainedSingleCubic3, chainedSingleCubic5);
|
| + EXPECT_REFV_NE(chainedSingleCubic4, chainedSingleCubic5);
|
| +
|
| + RefPtr<TimingFunction> linearTiming1 = LinearTimingFunction::create();
|
| + RefPtr<ChainedTimingFunction> chainedSingleLinear1 = ChainedTimingFunction::create();
|
| + chainedSingleLinear1->appendSegment(1.0, linearTiming1.get()); // != inner timing function (different type)
|
| + EXPECT_REFV_NE(chainedSingleLinear1, chainedSingleCubic1);
|
| + EXPECT_REFV_NE(chainedSingleLinear1, chainedSingleCubic2);
|
| + EXPECT_REFV_NE(chainedSingleLinear1, chainedSingleCubic3);
|
| + EXPECT_REFV_NE(chainedSingleLinear1, chainedSingleCubic4);
|
| +
|
| + // Multiple items in chain
|
| + RefPtr<ChainedTimingFunction> chainedMixed1 = ChainedTimingFunction::create();
|
| + chainedMixed1->appendSegment(0.25, chainedSingleLinear1.get());
|
| + chainedMixed1->appendSegment(1.0, cubicTiming1.get());
|
| +
|
| + RefPtr<ChainedTimingFunction> chainedMixed2 = ChainedTimingFunction::create();
|
| + chainedMixed2->appendSegment(0.25, chainedSingleLinear1.get());
|
| + chainedMixed2->appendSegment(1.0, cubicTiming1.get());
|
| +
|
| + RefPtr<ChainedTimingFunction> chainedMixed3 = ChainedTimingFunction::create();
|
| + chainedMixed3->appendSegment(0.25, chainedSingleLinear1.get());
|
| + chainedMixed3->appendSegment(1.0, cubicTiming2.get());
|
| +
|
| + EXPECT_REFV_EQ(chainedMixed1, chainedMixed2);
|
| + EXPECT_REFV_EQ(chainedMixed1, chainedMixed3);
|
| + EXPECT_REFV_NE(chainedMixed1, chainedSingleCubic1);
|
| + EXPECT_REFV_NE(chainedMixed1, chainedSingleLinear1);
|
| +
|
| + RefPtr<ChainedTimingFunction> chainedMixed4 = ChainedTimingFunction::create();
|
| + chainedMixed4->appendSegment(0.20, chainedSingleLinear1.get()); // Different offset
|
| + chainedMixed4->appendSegment(1.0, cubicTiming1.get());
|
| + EXPECT_REFV_NE(chainedMixed1, chainedMixed4);
|
| +}
|
|
|
| } // namespace
|
|
|