Index: cc/animation/timing_function_unittest.cc |
diff --git a/cc/animation/timing_function_unittest.cc b/cc/animation/timing_function_unittest.cc |
index 4be225fd6b929f78c1db378b963cd65f3a6e6822..14b7c4c2a0d1c5c6d690eed041e85214d3881a86 100644 |
--- a/cc/animation/timing_function_unittest.cc |
+++ b/cc/animation/timing_function_unittest.cc |
@@ -137,5 +137,79 @@ TEST(TimingFunctionTest, CubicBezierTimingFunctionRange) { |
EXPECT_EQ(1.f, max); |
} |
+TEST(TimingFunctionTest, StepsTimingFunction) { |
+ scoped_ptr<StepsTimingFunction> function = |
+ StepsTimingFunction::Create(36, false); |
+ |
+ double epsilon = 0.00015; |
+ |
+ EXPECT_NEAR(function->GetValue(0), 0, epsilon); |
ajuma
2014/02/21 19:05:08
We might be able to just use EXPECT_FLOAT_EQ here,
|
+ EXPECT_NEAR(function->GetValue(0.05), 1.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.1), 3.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.15), 5.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.2), 7.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.25), 9.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.3), 10.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.35), 12.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.4), 14.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.45), 16.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.5), 18.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.6), 21.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.65), 23.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.7), 25.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.75), 27.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.8), 28.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.85), 30.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.9), 32.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.95), 34.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(1), 1, epsilon); |
+} |
+ |
+TEST(TimingFunctionTest, StepsTimingFunctionStepsAtStart) { |
+ return; |
+ scoped_ptr<StepsTimingFunction> function = |
+ StepsTimingFunction::Create(36, true); |
+ |
+ double epsilon = 0.00015; |
+ |
+ EXPECT_NEAR(function->GetValue(0), 1.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.05), 2.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.1), 4.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.15), 6.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.2), 8.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.25), 10.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.3), 11.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.35), 13.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.4), 15.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.45), 17.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.5), 19.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.6), 22.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.65), 24.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.7), 26.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.75), 28.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.8), 29.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.85), 31.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.9), 33.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(0.95), 35.f/36.f, epsilon); |
+ EXPECT_NEAR(function->GetValue(1), 1, epsilon); |
+} |
+ |
+TEST(TimingFunctionTest, StepsTimingFunctionRange) { |
+ double epsilon = 0.00015; |
+ float min, max; |
+ |
+ scoped_ptr<StepsTimingFunction> function = |
+ StepsTimingFunction::Create(36, false); |
+ |
+ function->Range(&min, &max); |
+ EXPECT_EQ(0.f, min); |
+ EXPECT_EQ(1.f, max); |
+ |
+ function = StepsTimingFunction::Create(36, true); |
+ function->Range(&min, &max); |
+ EXPECT_NEAR(min, 1.f/36.f, epsilon); |
+ EXPECT_EQ(1.f, max); |
+} |
+ |
} // namespace |
} // namespace cc |