Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1398)

Unified Diff: Source/core/platform/animation/TimingFunctionTest.cpp

Issue 57563002: Adding operator== for ChainedTimingFunction (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Remove EQ reflectivity fix. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/platform/animation/TimingFunction.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « Source/core/platform/animation/TimingFunction.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698