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

Side by Side Diff: Source/platform/animation/TimingFunctionTest.cpp

Issue 238573002: Web Animations: Allow timing inputs outside the range [0, 1] (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@lkgr
Patch Set: Created 6 years, 8 months 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013, Google Inc. All rights reserved. 2 * Copyright (c) 2013, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 RefPtr<TimingFunction> stepsB = StepsTimingFunction::create(1, StepsTimingFu nction::StepAtStart); 211 RefPtr<TimingFunction> stepsB = StepsTimingFunction::create(1, StepsTimingFu nction::StepAtStart);
212 EXPECT_NE(*stepsA, *stepsB); 212 EXPECT_NE(*stepsA, *stepsB);
213 EXPECT_NE(*stepsB, *stepsA); 213 EXPECT_NE(*stepsB, *stepsA);
214 } 214 }
215 215
216 TEST_F(TimingFunctionTest, LinearEvaluate) 216 TEST_F(TimingFunctionTest, LinearEvaluate)
217 { 217 {
218 RefPtr<TimingFunction> linearTiming = LinearTimingFunction::preset(); 218 RefPtr<TimingFunction> linearTiming = LinearTimingFunction::preset();
219 EXPECT_EQ(0.2, linearTiming->evaluate(0.2, 0)); 219 EXPECT_EQ(0.2, linearTiming->evaluate(0.2, 0));
220 EXPECT_EQ(0.6, linearTiming->evaluate(0.6, 0)); 220 EXPECT_EQ(0.6, linearTiming->evaluate(0.6, 0));
221 EXPECT_EQ(-0.2, linearTiming->evaluate(-0.2, 0));
222 EXPECT_EQ(1.6, linearTiming->evaluate(1.6, 0));
221 } 223 }
222 224
223 TEST_F(TimingFunctionTest, CubicEvaluate) 225 TEST_F(TimingFunctionTest, CubicEvaluate)
224 { 226 {
225 double tolerance = 0.01; 227 double tolerance = 0.01;
226 RefPtr<TimingFunction> cubicEaseTiming = CubicBezierTimingFunction::preset(C ubicBezierTimingFunction::Ease); 228 RefPtr<TimingFunction> cubicEaseTiming = CubicBezierTimingFunction::preset(C ubicBezierTimingFunction::Ease);
227 EXPECT_NEAR(0.418, cubicEaseTiming->evaluate(0.25, tolerance), tolerance); 229 EXPECT_NEAR(0.418, cubicEaseTiming->evaluate(0.25, tolerance), tolerance);
228 EXPECT_NEAR(0.805, cubicEaseTiming->evaluate(0.50, tolerance), tolerance); 230 EXPECT_NEAR(0.805, cubicEaseTiming->evaluate(0.50, tolerance), tolerance);
229 EXPECT_NEAR(0.960, cubicEaseTiming->evaluate(0.75, tolerance), tolerance); 231 EXPECT_NEAR(0.960, cubicEaseTiming->evaluate(0.75, tolerance), tolerance);
230 232
(...skipping 14 matching lines...) Expand all
245 247
246 RefPtr<TimingFunction> cubicCustomTiming = CubicBezierTimingFunction::create (0.17, 0.67, 1, -1.73); 248 RefPtr<TimingFunction> cubicCustomTiming = CubicBezierTimingFunction::create (0.17, 0.67, 1, -1.73);
247 EXPECT_NEAR(0.034, cubicCustomTiming->evaluate(0.25, tolerance), tolerance); 249 EXPECT_NEAR(0.034, cubicCustomTiming->evaluate(0.25, tolerance), tolerance);
248 EXPECT_NEAR(-0.217, cubicCustomTiming->evaluate(0.50, tolerance), tolerance) ; 250 EXPECT_NEAR(-0.217, cubicCustomTiming->evaluate(0.50, tolerance), tolerance) ;
249 EXPECT_NEAR(-0.335, cubicCustomTiming->evaluate(0.75, tolerance), tolerance) ; 251 EXPECT_NEAR(-0.335, cubicCustomTiming->evaluate(0.75, tolerance), tolerance) ;
250 } 252 }
251 253
252 TEST_F(TimingFunctionTest, StepsEvaluate) 254 TEST_F(TimingFunctionTest, StepsEvaluate)
253 { 255 {
254 RefPtr<TimingFunction> stepsTimingStart = StepsTimingFunction::preset(StepsT imingFunction::Start); 256 RefPtr<TimingFunction> stepsTimingStart = StepsTimingFunction::preset(StepsT imingFunction::Start);
257 EXPECT_EQ(0.00, stepsTimingStart->evaluate(-1.10, 0));
258 EXPECT_EQ(0.00, stepsTimingStart->evaluate(-0.10, 0));
255 EXPECT_EQ(1.00, stepsTimingStart->evaluate(0.00, 0)); 259 EXPECT_EQ(1.00, stepsTimingStart->evaluate(0.00, 0));
256 EXPECT_EQ(1.00, stepsTimingStart->evaluate(0.20, 0)); 260 EXPECT_EQ(1.00, stepsTimingStart->evaluate(0.20, 0));
257 EXPECT_EQ(1.00, stepsTimingStart->evaluate(0.60, 0)); 261 EXPECT_EQ(1.00, stepsTimingStart->evaluate(0.60, 0));
258 EXPECT_EQ(1.00, stepsTimingStart->evaluate(1.00, 0)); 262 EXPECT_EQ(1.00, stepsTimingStart->evaluate(1.00, 0));
263 EXPECT_EQ(1.00, stepsTimingStart->evaluate(2.00, 0));
259 264
260 RefPtr<TimingFunction> stepsTimingMiddle = StepsTimingFunction::preset(Steps TimingFunction::Middle); 265 RefPtr<TimingFunction> stepsTimingMiddle = StepsTimingFunction::preset(Steps TimingFunction::Middle);
266 EXPECT_EQ(0.00, stepsTimingMiddle->evaluate(-2.50, 0));
261 EXPECT_EQ(0.00, stepsTimingMiddle->evaluate(0.00, 0)); 267 EXPECT_EQ(0.00, stepsTimingMiddle->evaluate(0.00, 0));
262 EXPECT_EQ(0.00, stepsTimingMiddle->evaluate(0.49, 0)); 268 EXPECT_EQ(0.00, stepsTimingMiddle->evaluate(0.49, 0));
263 EXPECT_EQ(1.00, stepsTimingMiddle->evaluate(0.50, 0)); 269 EXPECT_EQ(1.00, stepsTimingMiddle->evaluate(0.50, 0));
264 EXPECT_EQ(1.00, stepsTimingMiddle->evaluate(1.00, 0)); 270 EXPECT_EQ(1.00, stepsTimingMiddle->evaluate(1.00, 0));
271 EXPECT_EQ(1.00, stepsTimingMiddle->evaluate(2.50, 0));
265 272
266 RefPtr<TimingFunction> stepsTimingEnd = StepsTimingFunction::preset(StepsTim ingFunction::End); 273 RefPtr<TimingFunction> stepsTimingEnd = StepsTimingFunction::preset(StepsTim ingFunction::End);
274 EXPECT_EQ(0.00, stepsTimingEnd->evaluate(-2.00, 0));
267 EXPECT_EQ(0.00, stepsTimingEnd->evaluate(0.00, 0)); 275 EXPECT_EQ(0.00, stepsTimingEnd->evaluate(0.00, 0));
268 EXPECT_EQ(0.00, stepsTimingEnd->evaluate(0.20, 0)); 276 EXPECT_EQ(0.00, stepsTimingEnd->evaluate(0.20, 0));
269 EXPECT_EQ(0.00, stepsTimingEnd->evaluate(0.60, 0)); 277 EXPECT_EQ(0.00, stepsTimingEnd->evaluate(0.60, 0));
270 EXPECT_EQ(1.00, stepsTimingEnd->evaluate(1.00, 0)); 278 EXPECT_EQ(1.00, stepsTimingEnd->evaluate(1.00, 0));
279 EXPECT_EQ(1.00, stepsTimingEnd->evaluate(2.00, 0));
271 280
272 RefPtr<TimingFunction> stepsTimingCustomStart = StepsTimingFunction::create( 4, StepsTimingFunction::StepAtStart); 281 RefPtr<TimingFunction> stepsTimingCustomStart = StepsTimingFunction::create( 4, StepsTimingFunction::StepAtStart);
282 EXPECT_EQ(0.00, stepsTimingCustomStart->evaluate(-0.50, 0));
273 EXPECT_EQ(0.25, stepsTimingCustomStart->evaluate(0.00, 0)); 283 EXPECT_EQ(0.25, stepsTimingCustomStart->evaluate(0.00, 0));
274 EXPECT_EQ(0.25, stepsTimingCustomStart->evaluate(0.24, 0)); 284 EXPECT_EQ(0.25, stepsTimingCustomStart->evaluate(0.24, 0));
275 EXPECT_EQ(0.50, stepsTimingCustomStart->evaluate(0.25, 0)); 285 EXPECT_EQ(0.50, stepsTimingCustomStart->evaluate(0.25, 0));
276 EXPECT_EQ(0.50, stepsTimingCustomStart->evaluate(0.49, 0)); 286 EXPECT_EQ(0.50, stepsTimingCustomStart->evaluate(0.49, 0));
277 EXPECT_EQ(0.75, stepsTimingCustomStart->evaluate(0.50, 0)); 287 EXPECT_EQ(0.75, stepsTimingCustomStart->evaluate(0.50, 0));
278 EXPECT_EQ(0.75, stepsTimingCustomStart->evaluate(0.74, 0)); 288 EXPECT_EQ(0.75, stepsTimingCustomStart->evaluate(0.74, 0));
279 EXPECT_EQ(1.00, stepsTimingCustomStart->evaluate(0.75, 0)); 289 EXPECT_EQ(1.00, stepsTimingCustomStart->evaluate(0.75, 0));
280 EXPECT_EQ(1.00, stepsTimingCustomStart->evaluate(1.00, 0)); 290 EXPECT_EQ(1.00, stepsTimingCustomStart->evaluate(1.00, 0));
291 EXPECT_EQ(1.00, stepsTimingCustomStart->evaluate(1.50, 0));
281 292
282 RefPtr<TimingFunction> stepsTimingCustomMiddle = StepsTimingFunction::create (4, StepsTimingFunction::StepAtMiddle); 293 RefPtr<TimingFunction> stepsTimingCustomMiddle = StepsTimingFunction::create (4, StepsTimingFunction::StepAtMiddle);
294 EXPECT_EQ(0.00, stepsTimingCustomMiddle->evaluate(-2.00, 0));
283 EXPECT_EQ(0.00, stepsTimingCustomMiddle->evaluate(0.00, 0)); 295 EXPECT_EQ(0.00, stepsTimingCustomMiddle->evaluate(0.00, 0));
284 EXPECT_EQ(0.00, stepsTimingCustomMiddle->evaluate(0.12, 0)); 296 EXPECT_EQ(0.00, stepsTimingCustomMiddle->evaluate(0.12, 0));
285 EXPECT_EQ(0.25, stepsTimingCustomMiddle->evaluate(0.13, 0)); 297 EXPECT_EQ(0.25, stepsTimingCustomMiddle->evaluate(0.13, 0));
286 EXPECT_EQ(0.25, stepsTimingCustomMiddle->evaluate(0.37, 0)); 298 EXPECT_EQ(0.25, stepsTimingCustomMiddle->evaluate(0.37, 0));
287 EXPECT_EQ(0.50, stepsTimingCustomMiddle->evaluate(0.38, 0)); 299 EXPECT_EQ(0.50, stepsTimingCustomMiddle->evaluate(0.38, 0));
288 EXPECT_EQ(0.50, stepsTimingCustomMiddle->evaluate(0.62, 0)); 300 EXPECT_EQ(0.50, stepsTimingCustomMiddle->evaluate(0.62, 0));
289 EXPECT_EQ(0.75, stepsTimingCustomMiddle->evaluate(0.63, 0)); 301 EXPECT_EQ(0.75, stepsTimingCustomMiddle->evaluate(0.63, 0));
290 EXPECT_EQ(0.75, stepsTimingCustomMiddle->evaluate(0.87, 0)); 302 EXPECT_EQ(0.75, stepsTimingCustomMiddle->evaluate(0.87, 0));
291 EXPECT_EQ(1.00, stepsTimingCustomMiddle->evaluate(0.88, 0)); 303 EXPECT_EQ(1.00, stepsTimingCustomMiddle->evaluate(0.88, 0));
292 EXPECT_EQ(1.00, stepsTimingCustomMiddle->evaluate(1.00, 0)); 304 EXPECT_EQ(1.00, stepsTimingCustomMiddle->evaluate(1.00, 0));
305 EXPECT_EQ(1.00, stepsTimingCustomMiddle->evaluate(3.00, 0));
293 306
294 RefPtr<TimingFunction> stepsTimingCustomEnd = StepsTimingFunction::create(4, StepsTimingFunction::StepAtEnd); 307 RefPtr<TimingFunction> stepsTimingCustomEnd = StepsTimingFunction::create(4, StepsTimingFunction::StepAtEnd);
308 EXPECT_EQ(0.00, stepsTimingCustomEnd->evaluate(-2.00, 0));
295 EXPECT_EQ(0.00, stepsTimingCustomEnd->evaluate(0.00, 0)); 309 EXPECT_EQ(0.00, stepsTimingCustomEnd->evaluate(0.00, 0));
296 EXPECT_EQ(0.00, stepsTimingCustomEnd->evaluate(0.24, 0)); 310 EXPECT_EQ(0.00, stepsTimingCustomEnd->evaluate(0.24, 0));
297 EXPECT_EQ(0.25, stepsTimingCustomEnd->evaluate(0.25, 0)); 311 EXPECT_EQ(0.25, stepsTimingCustomEnd->evaluate(0.25, 0));
298 EXPECT_EQ(0.25, stepsTimingCustomEnd->evaluate(0.49, 0)); 312 EXPECT_EQ(0.25, stepsTimingCustomEnd->evaluate(0.49, 0));
299 EXPECT_EQ(0.50, stepsTimingCustomEnd->evaluate(0.50, 0)); 313 EXPECT_EQ(0.50, stepsTimingCustomEnd->evaluate(0.50, 0));
300 EXPECT_EQ(0.50, stepsTimingCustomEnd->evaluate(0.74, 0)); 314 EXPECT_EQ(0.50, stepsTimingCustomEnd->evaluate(0.74, 0));
301 EXPECT_EQ(0.75, stepsTimingCustomEnd->evaluate(0.75, 0)); 315 EXPECT_EQ(0.75, stepsTimingCustomEnd->evaluate(0.75, 0));
302 EXPECT_EQ(0.75, stepsTimingCustomEnd->evaluate(0.99, 0)); 316 EXPECT_EQ(0.75, stepsTimingCustomEnd->evaluate(0.99, 0));
303 EXPECT_EQ(1.00, stepsTimingCustomEnd->evaluate(1.00, 0)); 317 EXPECT_EQ(1.00, stepsTimingCustomEnd->evaluate(1.00, 0));
318 EXPECT_EQ(1.00, stepsTimingCustomEnd->evaluate(2.00, 0));
304 } 319 }
305 320
306 } // namespace 321 } // namespace
307 322
308 } // namespace WebCore 323 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698