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

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

Issue 2487913002: Remove InterpolableBool and existing use of it in SVG path interpolation (Closed)
Patch Set: Created 4 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 unified diff | Download patch
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 "core/animation/InterpolableValue.h" 5 #include "core/animation/InterpolableValue.h"
6 6
7 #include "core/animation/Interpolation.h" 7 #include "core/animation/Interpolation.h"
8 #include "core/animation/PropertyHandle.h" 8 #include "core/animation/PropertyHandle.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include <memory> 10 #include <memory>
(...skipping 28 matching lines...) Expand all
39 return interpolation.getCachedValueForTesting(); 39 return interpolation.getCachedValueForTesting();
40 } 40 }
41 41
42 double interpolateNumbers(double a, double b, double progress) { 42 double interpolateNumbers(double a, double b, double progress) {
43 RefPtr<Interpolation> i = SampleInterpolation::create( 43 RefPtr<Interpolation> i = SampleInterpolation::create(
44 InterpolableNumber::create(a), InterpolableNumber::create(b)); 44 InterpolableNumber::create(a), InterpolableNumber::create(b));
45 i->interpolate(0, progress); 45 i->interpolate(0, progress);
46 return toInterpolableNumber(interpolationValue(*i.get()))->value(); 46 return toInterpolableNumber(interpolationValue(*i.get()))->value();
47 } 47 }
48 48
49 bool interpolateBools(bool a, bool b, double progress) {
50 RefPtr<Interpolation> i = SampleInterpolation::create(
51 InterpolableBool::create(a), InterpolableBool::create(b));
52 i->interpolate(0, progress);
53 return toInterpolableBool(interpolationValue(*i.get()))->value();
54 }
55
56 void scaleAndAdd(InterpolableValue& base, 49 void scaleAndAdd(InterpolableValue& base,
57 double scale, 50 double scale,
58 const InterpolableValue& add) { 51 const InterpolableValue& add) {
59 base.scaleAndAdd(scale, add); 52 base.scaleAndAdd(scale, add);
60 } 53 }
61 54
62 PassRefPtr<Interpolation> interpolateLists( 55 PassRefPtr<Interpolation> interpolateLists(
63 std::unique_ptr<InterpolableList> listA, 56 std::unique_ptr<InterpolableList> listA,
64 std::unique_ptr<InterpolableList> listB, 57 std::unique_ptr<InterpolableList> listB,
65 double progress) { 58 double progress) {
66 RefPtr<Interpolation> i = 59 RefPtr<Interpolation> i =
67 SampleInterpolation::create(std::move(listA), std::move(listB)); 60 SampleInterpolation::create(std::move(listA), std::move(listB));
68 i->interpolate(0, progress); 61 i->interpolate(0, progress);
69 return i; 62 return i;
70 } 63 }
71 }; 64 };
72 65
73 TEST_F(AnimationInterpolableValueTest, InterpolateNumbers) { 66 TEST_F(AnimationInterpolableValueTest, InterpolateNumbers) {
74 EXPECT_FLOAT_EQ(126, interpolateNumbers(42, 0, -2)); 67 EXPECT_FLOAT_EQ(126, interpolateNumbers(42, 0, -2));
75 EXPECT_FLOAT_EQ(42, interpolateNumbers(42, 0, 0)); 68 EXPECT_FLOAT_EQ(42, interpolateNumbers(42, 0, 0));
76 EXPECT_FLOAT_EQ(29.4f, interpolateNumbers(42, 0, 0.3)); 69 EXPECT_FLOAT_EQ(29.4f, interpolateNumbers(42, 0, 0.3));
77 EXPECT_FLOAT_EQ(21, interpolateNumbers(42, 0, 0.5)); 70 EXPECT_FLOAT_EQ(21, interpolateNumbers(42, 0, 0.5));
78 EXPECT_FLOAT_EQ(0, interpolateNumbers(42, 0, 1)); 71 EXPECT_FLOAT_EQ(0, interpolateNumbers(42, 0, 1));
79 EXPECT_FLOAT_EQ(-21, interpolateNumbers(42, 0, 1.5)); 72 EXPECT_FLOAT_EQ(-21, interpolateNumbers(42, 0, 1.5));
80 } 73 }
81 74
82 TEST_F(AnimationInterpolableValueTest, InterpolateBools) {
83 EXPECT_FALSE(interpolateBools(false, true, -1));
84 EXPECT_FALSE(interpolateBools(false, true, 0));
85 EXPECT_FALSE(interpolateBools(false, true, 0.3));
86 EXPECT_TRUE(interpolateBools(false, true, 0.5));
87 EXPECT_TRUE(interpolateBools(false, true, 1));
88 EXPECT_TRUE(interpolateBools(false, true, 2));
89 }
90
91 TEST_F(AnimationInterpolableValueTest, SimpleList) { 75 TEST_F(AnimationInterpolableValueTest, SimpleList) {
92 std::unique_ptr<InterpolableList> listA = InterpolableList::create(3); 76 std::unique_ptr<InterpolableList> listA = InterpolableList::create(3);
93 listA->set(0, InterpolableNumber::create(0)); 77 listA->set(0, InterpolableNumber::create(0));
94 listA->set(1, InterpolableNumber::create(42)); 78 listA->set(1, InterpolableNumber::create(42));
95 listA->set(2, InterpolableNumber::create(20.5)); 79 listA->set(2, InterpolableNumber::create(20.5));
96 80
97 std::unique_ptr<InterpolableList> listB = InterpolableList::create(3); 81 std::unique_ptr<InterpolableList> listB = InterpolableList::create(3);
98 listB->set(0, InterpolableNumber::create(100)); 82 listB->set(0, InterpolableNumber::create(100));
99 listB->set(1, InterpolableNumber::create(-200)); 83 listB->set(1, InterpolableNumber::create(-200));
100 listB->set(2, InterpolableNumber::create(300)); 84 listB->set(2, InterpolableNumber::create(300));
101 85
102 RefPtr<Interpolation> i = 86 RefPtr<Interpolation> i =
103 interpolateLists(std::move(listA), std::move(listB), 0.3); 87 interpolateLists(std::move(listA), std::move(listB), 0.3);
104 InterpolableList* outList = toInterpolableList(interpolationValue(*i.get())); 88 InterpolableList* outList = toInterpolableList(interpolationValue(*i.get()));
105 EXPECT_FLOAT_EQ(30, toInterpolableNumber(outList->get(0))->value()); 89 EXPECT_FLOAT_EQ(30, toInterpolableNumber(outList->get(0))->value());
106 EXPECT_FLOAT_EQ(-30.6f, toInterpolableNumber(outList->get(1))->value()); 90 EXPECT_FLOAT_EQ(-30.6f, toInterpolableNumber(outList->get(1))->value());
107 EXPECT_FLOAT_EQ(104.35f, toInterpolableNumber(outList->get(2))->value()); 91 EXPECT_FLOAT_EQ(104.35f, toInterpolableNumber(outList->get(2))->value());
108 } 92 }
109 93
110 TEST_F(AnimationInterpolableValueTest, NestedList) { 94 TEST_F(AnimationInterpolableValueTest, NestedList) {
111 std::unique_ptr<InterpolableList> listA = InterpolableList::create(3); 95 std::unique_ptr<InterpolableList> listA = InterpolableList::create(3);
112 listA->set(0, InterpolableNumber::create(0)); 96 listA->set(0, InterpolableNumber::create(0));
113 std::unique_ptr<InterpolableList> subListA = InterpolableList::create(1); 97 std::unique_ptr<InterpolableList> subListA = InterpolableList::create(1);
114 subListA->set(0, InterpolableNumber::create(100)); 98 subListA->set(0, InterpolableNumber::create(100));
115 listA->set(1, std::move(subListA)); 99 listA->set(1, std::move(subListA));
116 listA->set(2, InterpolableBool::create(false)); 100 listA->set(2, InterpolableNumber::create(0));
117 101
118 std::unique_ptr<InterpolableList> listB = InterpolableList::create(3); 102 std::unique_ptr<InterpolableList> listB = InterpolableList::create(3);
119 listB->set(0, InterpolableNumber::create(100)); 103 listB->set(0, InterpolableNumber::create(100));
120 std::unique_ptr<InterpolableList> subListB = InterpolableList::create(1); 104 std::unique_ptr<InterpolableList> subListB = InterpolableList::create(1);
121 subListB->set(0, InterpolableNumber::create(50)); 105 subListB->set(0, InterpolableNumber::create(50));
122 listB->set(1, std::move(subListB)); 106 listB->set(1, std::move(subListB));
123 listB->set(2, InterpolableBool::create(true)); 107 listB->set(2, InterpolableNumber::create(1));
124 108
125 RefPtr<Interpolation> i = 109 RefPtr<Interpolation> i =
126 interpolateLists(std::move(listA), std::move(listB), 0.5); 110 interpolateLists(std::move(listA), std::move(listB), 0.5);
127 InterpolableList* outList = toInterpolableList(interpolationValue(*i.get())); 111 InterpolableList* outList = toInterpolableList(interpolationValue(*i.get()));
128 EXPECT_FLOAT_EQ(50, toInterpolableNumber(outList->get(0))->value()); 112 EXPECT_FLOAT_EQ(50, toInterpolableNumber(outList->get(0))->value());
129 EXPECT_FLOAT_EQ( 113 EXPECT_FLOAT_EQ(
130 75, toInterpolableNumber(toInterpolableList(outList->get(1))->get(0)) 114 75, toInterpolableNumber(toInterpolableList(outList->get(1))->get(0))
131 ->value()); 115 ->value());
132 EXPECT_TRUE(toInterpolableBool(outList->get(2))->value()); 116 EXPECT_FLOAT_EQ(0.5, toInterpolableNumber(outList->get(2))->value());
133 } 117 }
134 118
135 TEST_F(AnimationInterpolableValueTest, ScaleAndAddNumbers) { 119 TEST_F(AnimationInterpolableValueTest, ScaleAndAddNumbers) {
136 std::unique_ptr<InterpolableNumber> base = InterpolableNumber::create(10); 120 std::unique_ptr<InterpolableNumber> base = InterpolableNumber::create(10);
137 scaleAndAdd(*base, 2, *InterpolableNumber::create(1)); 121 scaleAndAdd(*base, 2, *InterpolableNumber::create(1));
138 EXPECT_FLOAT_EQ(21, base->value()); 122 EXPECT_FLOAT_EQ(21, base->value());
139 123
140 base = InterpolableNumber::create(10); 124 base = InterpolableNumber::create(10);
141 scaleAndAdd(*base, 0, *InterpolableNumber::create(5)); 125 scaleAndAdd(*base, 0, *InterpolableNumber::create(5));
142 EXPECT_FLOAT_EQ(5, base->value()); 126 EXPECT_FLOAT_EQ(5, base->value());
(...skipping 12 matching lines...) Expand all
155 addList->set(0, InterpolableNumber::create(1)); 139 addList->set(0, InterpolableNumber::create(1));
156 addList->set(1, InterpolableNumber::create(2)); 140 addList->set(1, InterpolableNumber::create(2));
157 addList->set(2, InterpolableNumber::create(3)); 141 addList->set(2, InterpolableNumber::create(3));
158 scaleAndAdd(*baseList, 2, *addList); 142 scaleAndAdd(*baseList, 2, *addList);
159 EXPECT_FLOAT_EQ(11, toInterpolableNumber(baseList->get(0))->value()); 143 EXPECT_FLOAT_EQ(11, toInterpolableNumber(baseList->get(0))->value());
160 EXPECT_FLOAT_EQ(22, toInterpolableNumber(baseList->get(1))->value()); 144 EXPECT_FLOAT_EQ(22, toInterpolableNumber(baseList->get(1))->value());
161 EXPECT_FLOAT_EQ(33, toInterpolableNumber(baseList->get(2))->value()); 145 EXPECT_FLOAT_EQ(33, toInterpolableNumber(baseList->get(2))->value());
162 } 146 }
163 147
164 } // namespace blink 148 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698