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

Side by Side Diff: Source/core/animation/InterpolableValueTest.cpp

Issue 182383011: Web Animations: Add Interpolation class. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@interpolableValue
Patch Set: Created 6 years, 9 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
« no previous file with comments | « Source/core/animation/InterpolableValue.h ('k') | Source/core/animation/Interpolation.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/animation/InterpolableValue.h" 6 #include "core/animation/InterpolableValue.h"
7 7
8 #include "core/animation/Interpolation.h"
9
8 #include <gtest/gtest.h> 10 #include <gtest/gtest.h>
9 11
10 namespace WebCore { 12 namespace WebCore {
11 13
12 class AnimationInterpolableValueTest : public ::testing::Test { 14 class AnimationInterpolableValueTest : public ::testing::Test {
13 protected: 15 protected:
16 InterpolableValue* interpolationValue(Interpolation& interpolation)
17 {
18 return interpolation.getCachedValueForTesting();
19 }
20
14 double interpolateNumbers(double a, double b, double progress) 21 double interpolateNumbers(double a, double b, double progress)
15 { 22 {
16 OwnPtr<InterpolableValue> aVal = static_pointer_cast<InterpolableValue>( InterpolableNumber::create(a)); 23 RefPtr<Interpolation> i = Interpolation::create(InterpolableNumber::crea te(a), InterpolableNumber::create(b));
17 return toInterpolableNumber(aVal->interpolate(*InterpolableNumber::creat e(b).get(), progress).get())->value(); 24 i->interpolate(progress);
25 return toInterpolableNumber(interpolationValue(*i.get()))->value();
18 } 26 }
19 27
20 double interpolateBools(bool a, bool b, double progress) 28 bool interpolateBools(bool a, bool b, double progress)
21 { 29 {
22 OwnPtr<InterpolableValue> aVal = static_pointer_cast<InterpolableValue>( InterpolableBool::create(a)); 30 RefPtr<Interpolation> i = Interpolation::create(InterpolableBool::create (a), InterpolableBool::create(b));
23 return toInterpolableBool(aVal->interpolate(*InterpolableBool::create(b) .get(), progress).get())->value(); 31 i->interpolate(progress);
32 return toInterpolableBool(interpolationValue(*i.get()))->value();
24 } 33 }
25 34
26 PassOwnPtr<InterpolableValue> interpolateLists(PassOwnPtr<InterpolableList> listA, PassOwnPtr<InterpolableList> listB, double progress) 35 PassRefPtr<Interpolation> interpolateLists(PassOwnPtr<InterpolableList> list A, PassOwnPtr<InterpolableList> listB, double progress)
27 { 36 {
28 return static_pointer_cast<InterpolableValue>(listA)->interpolate(*listB .get(), progress); 37 RefPtr<Interpolation> i = Interpolation::create(listA, listB);
38 i->interpolate(progress);
39 return i;
29 } 40 }
30 }; 41 };
31 42
32 TEST_F(AnimationInterpolableValueTest, InterpolateNumbers) 43 TEST_F(AnimationInterpolableValueTest, InterpolateNumbers)
33 { 44 {
34 EXPECT_FLOAT_EQ(126, interpolateNumbers(42, 0, -2)); 45 EXPECT_FLOAT_EQ(126, interpolateNumbers(42, 0, -2));
35 EXPECT_FLOAT_EQ(42, interpolateNumbers(42, 0, 0)); 46 EXPECT_FLOAT_EQ(42, interpolateNumbers(42, 0, 0));
36 EXPECT_FLOAT_EQ(29.4f, interpolateNumbers(42, 0, 0.3)); 47 EXPECT_FLOAT_EQ(29.4f, interpolateNumbers(42, 0, 0.3));
37 EXPECT_FLOAT_EQ(21, interpolateNumbers(42, 0, 0.5)); 48 EXPECT_FLOAT_EQ(21, interpolateNumbers(42, 0, 0.5));
38 EXPECT_FLOAT_EQ(0, interpolateNumbers(42, 0, 1)); 49 EXPECT_FLOAT_EQ(0, interpolateNumbers(42, 0, 1));
(...skipping 15 matching lines...) Expand all
54 OwnPtr<InterpolableList> listA = InterpolableList::create(3); 65 OwnPtr<InterpolableList> listA = InterpolableList::create(3);
55 listA->set(0, InterpolableNumber::create(0)); 66 listA->set(0, InterpolableNumber::create(0));
56 listA->set(1, InterpolableNumber::create(42)); 67 listA->set(1, InterpolableNumber::create(42));
57 listA->set(2, InterpolableNumber::create(20.5)); 68 listA->set(2, InterpolableNumber::create(20.5));
58 69
59 OwnPtr<InterpolableList> listB = InterpolableList::create(3); 70 OwnPtr<InterpolableList> listB = InterpolableList::create(3);
60 listB->set(0, InterpolableNumber::create(100)); 71 listB->set(0, InterpolableNumber::create(100));
61 listB->set(1, InterpolableNumber::create(-200)); 72 listB->set(1, InterpolableNumber::create(-200));
62 listB->set(2, InterpolableNumber::create(300)); 73 listB->set(2, InterpolableNumber::create(300));
63 74
64 OwnPtr<InterpolableValue> result = interpolateLists(listA.release(), listB.r elease(), 0.3); 75 RefPtr<Interpolation> i = interpolateLists(listA.release(), listB.release(), 0.3);
65 InterpolableList* outList = toInterpolableList(result.get()); 76 InterpolableList* outList = toInterpolableList(interpolationValue(*i.get())) ;
66 EXPECT_FLOAT_EQ(30, toInterpolableNumber(outList->get(0))->value()); 77 EXPECT_FLOAT_EQ(30, toInterpolableNumber(outList->get(0))->value());
67 EXPECT_FLOAT_EQ(-30.6f, toInterpolableNumber(outList->get(1))->value()); 78 EXPECT_FLOAT_EQ(-30.6f, toInterpolableNumber(outList->get(1))->value());
68 EXPECT_FLOAT_EQ(104.35f, toInterpolableNumber(outList->get(2))->value()); 79 EXPECT_FLOAT_EQ(104.35f, toInterpolableNumber(outList->get(2))->value());
69 } 80 }
70 81
71 TEST_F(AnimationInterpolableValueTest, NestedList) 82 TEST_F(AnimationInterpolableValueTest, NestedList)
72 { 83 {
73 OwnPtr<InterpolableList> listA = InterpolableList::create(3); 84 OwnPtr<InterpolableList> listA = InterpolableList::create(3);
74 listA->set(0, InterpolableNumber::create(0)); 85 listA->set(0, InterpolableNumber::create(0));
75 OwnPtr<InterpolableList> subListA = InterpolableList::create(1); 86 OwnPtr<InterpolableList> subListA = InterpolableList::create(1);
76 subListA->set(0, InterpolableNumber::create(100)); 87 subListA->set(0, InterpolableNumber::create(100));
77 listA->set(1, subListA.release()); 88 listA->set(1, subListA.release());
78 listA->set(2, InterpolableBool::create(false)); 89 listA->set(2, InterpolableBool::create(false));
79 90
80 OwnPtr<InterpolableList> listB = InterpolableList::create(3); 91 OwnPtr<InterpolableList> listB = InterpolableList::create(3);
81 listB->set(0, InterpolableNumber::create(100)); 92 listB->set(0, InterpolableNumber::create(100));
82 OwnPtr<InterpolableList> subListB = InterpolableList::create(1); 93 OwnPtr<InterpolableList> subListB = InterpolableList::create(1);
83 subListB->set(0, InterpolableNumber::create(50)); 94 subListB->set(0, InterpolableNumber::create(50));
84 listB->set(1, subListB.release()); 95 listB->set(1, subListB.release());
85 listB->set(2, InterpolableBool::create(true)); 96 listB->set(2, InterpolableBool::create(true));
86 97
87 OwnPtr<InterpolableValue> result = interpolateLists(listA.release(), listB.r elease(), 0.5); 98 RefPtr<Interpolation> i = interpolateLists(listA.release(), listB.release(), 0.5);
88 InterpolableList* outList = toInterpolableList(result.get()); 99 InterpolableList* outList = toInterpolableList(interpolationValue(*i.get())) ;
89 EXPECT_FLOAT_EQ(50, toInterpolableNumber(outList->get(0))->value()); 100 EXPECT_FLOAT_EQ(50, toInterpolableNumber(outList->get(0))->value());
90 EXPECT_FLOAT_EQ(75, toInterpolableNumber(toInterpolableList(outList->get(1)) ->get(0))->value()); 101 EXPECT_FLOAT_EQ(75, toInterpolableNumber(toInterpolableList(outList->get(1)) ->get(0))->value());
91 EXPECT_TRUE(toInterpolableBool(outList->get(2))->value()); 102 EXPECT_TRUE(toInterpolableBool(outList->get(2))->value());
92 } 103 }
93 104
94 } 105 }
OLDNEW
« no previous file with comments | « Source/core/animation/InterpolableValue.h ('k') | Source/core/animation/Interpolation.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698