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

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

Issue 1276183004: Oilpan: Unship oilpan from temporary animation objects (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 3 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 | Annotate | Revision Log
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" 8 #include "core/animation/Interpolation.h"
9 #include "core/animation/PropertyHandle.h" 9 #include "core/animation/PropertyHandle.h"
10 10
11 #include <gtest/gtest.h> 11 #include <gtest/gtest.h>
12 12
13 namespace blink { 13 namespace blink {
14 14
15 namespace { 15 namespace {
16 16
17 class SampleInterpolation : public Interpolation { 17 class SampleInterpolation : public Interpolation {
18 public: 18 public:
19 static PassRefPtrWillBeRawPtr<Interpolation> create(PassOwnPtrWillBeRawPtr<I nterpolableValue> start, PassOwnPtrWillBeRawPtr<InterpolableValue> end) 19 static PassRefPtr<Interpolation> create(PassOwnPtr<InterpolableValue> start, PassOwnPtr<InterpolableValue> end)
20 { 20 {
21 return adoptRefWillBeNoop(new SampleInterpolation(start, end)); 21 return adoptRef(new SampleInterpolation(start, end));
22 } 22 }
23 23
24 PropertyHandle property() const override 24 PropertyHandle property() const override
25 { 25 {
26 return PropertyHandle(CSSPropertyBackgroundColor); 26 return PropertyHandle(CSSPropertyBackgroundColor);
27 } 27 }
28 private: 28 private:
29 SampleInterpolation(PassOwnPtrWillBeRawPtr<InterpolableValue> start, PassOwn PtrWillBeRawPtr<InterpolableValue> end) 29 SampleInterpolation(PassOwnPtr<InterpolableValue> start, PassOwnPtr<Interpol ableValue> end)
30 : Interpolation(start, end) 30 : Interpolation(start, end)
31 { 31 {
32 } 32 }
33 }; 33 };
34 34
35 } // namespace 35 } // namespace
36 36
37 class AnimationInterpolableValueTest : public ::testing::Test { 37 class AnimationInterpolableValueTest : public ::testing::Test {
38 protected: 38 protected:
39 InterpolableValue* interpolationValue(Interpolation& interpolation) 39 InterpolableValue* interpolationValue(Interpolation& interpolation)
40 { 40 {
41 return interpolation.getCachedValueForTesting(); 41 return interpolation.getCachedValueForTesting();
42 } 42 }
43 43
44 double interpolateNumbers(double a, double b, double progress) 44 double interpolateNumbers(double a, double b, double progress)
45 { 45 {
46 RefPtrWillBeRawPtr<Interpolation> i = SampleInterpolation::create(Interp olableNumber::create(a), InterpolableNumber::create(b)); 46 RefPtr<Interpolation> i = SampleInterpolation::create(InterpolableNumber ::create(a), InterpolableNumber::create(b));
47 i->interpolate(0, progress); 47 i->interpolate(0, progress);
48 return toInterpolableNumber(interpolationValue(*i.get()))->value(); 48 return toInterpolableNumber(interpolationValue(*i.get()))->value();
49 } 49 }
50 50
51 bool interpolateBools(bool a, bool b, double progress) 51 bool interpolateBools(bool a, bool b, double progress)
52 { 52 {
53 RefPtrWillBeRawPtr<Interpolation> i = SampleInterpolation::create(Interp olableBool::create(a), InterpolableBool::create(b)); 53 RefPtr<Interpolation> i = SampleInterpolation::create(InterpolableBool:: create(a), InterpolableBool::create(b));
54 i->interpolate(0, progress); 54 i->interpolate(0, progress);
55 return toInterpolableBool(interpolationValue(*i.get()))->value(); 55 return toInterpolableBool(interpolationValue(*i.get()))->value();
56 } 56 }
57 57
58 void scaleAndAdd(InterpolableValue& base, double scale, const InterpolableVa lue& add) 58 void scaleAndAdd(InterpolableValue& base, double scale, const InterpolableVa lue& add)
59 { 59 {
60 base.scaleAndAdd(scale, add); 60 base.scaleAndAdd(scale, add);
61 } 61 }
62 62
63 PassRefPtrWillBeRawPtr<Interpolation> interpolateLists(PassOwnPtrWillBeRawPt r<InterpolableList> listA, PassOwnPtrWillBeRawPtr<InterpolableList> listB, doubl e progress) 63 PassRefPtr<Interpolation> interpolateLists(PassOwnPtr<InterpolableList> list A, PassOwnPtr<InterpolableList> listB, double progress)
64 { 64 {
65 RefPtrWillBeRawPtr<Interpolation> i = SampleInterpolation::create(listA, listB); 65 RefPtr<Interpolation> i = SampleInterpolation::create(listA, listB);
66 i->interpolate(0, progress); 66 i->interpolate(0, progress);
67 return i; 67 return i;
68 } 68 }
69 }; 69 };
70 70
71 TEST_F(AnimationInterpolableValueTest, InterpolateNumbers) 71 TEST_F(AnimationInterpolableValueTest, InterpolateNumbers)
72 { 72 {
73 EXPECT_FLOAT_EQ(126, interpolateNumbers(42, 0, -2)); 73 EXPECT_FLOAT_EQ(126, interpolateNumbers(42, 0, -2));
74 EXPECT_FLOAT_EQ(42, interpolateNumbers(42, 0, 0)); 74 EXPECT_FLOAT_EQ(42, interpolateNumbers(42, 0, 0));
75 EXPECT_FLOAT_EQ(29.4f, interpolateNumbers(42, 0, 0.3)); 75 EXPECT_FLOAT_EQ(29.4f, interpolateNumbers(42, 0, 0.3));
76 EXPECT_FLOAT_EQ(21, interpolateNumbers(42, 0, 0.5)); 76 EXPECT_FLOAT_EQ(21, interpolateNumbers(42, 0, 0.5));
77 EXPECT_FLOAT_EQ(0, interpolateNumbers(42, 0, 1)); 77 EXPECT_FLOAT_EQ(0, interpolateNumbers(42, 0, 1));
78 EXPECT_FLOAT_EQ(-21, interpolateNumbers(42, 0, 1.5)); 78 EXPECT_FLOAT_EQ(-21, interpolateNumbers(42, 0, 1.5));
79 } 79 }
80 80
81 TEST_F(AnimationInterpolableValueTest, InterpolateBools) 81 TEST_F(AnimationInterpolableValueTest, InterpolateBools)
82 { 82 {
83 EXPECT_FALSE(interpolateBools(false, true, -1)); 83 EXPECT_FALSE(interpolateBools(false, true, -1));
84 EXPECT_FALSE(interpolateBools(false, true, 0)); 84 EXPECT_FALSE(interpolateBools(false, true, 0));
85 EXPECT_FALSE(interpolateBools(false, true, 0.3)); 85 EXPECT_FALSE(interpolateBools(false, true, 0.3));
86 EXPECT_TRUE(interpolateBools(false, true, 0.5)); 86 EXPECT_TRUE(interpolateBools(false, true, 0.5));
87 EXPECT_TRUE(interpolateBools(false, true, 1)); 87 EXPECT_TRUE(interpolateBools(false, true, 1));
88 EXPECT_TRUE(interpolateBools(false, true, 2)); 88 EXPECT_TRUE(interpolateBools(false, true, 2));
89 } 89 }
90 90
91 TEST_F(AnimationInterpolableValueTest, SimpleList) 91 TEST_F(AnimationInterpolableValueTest, SimpleList)
92 { 92 {
93 OwnPtrWillBeRawPtr<InterpolableList> listA = InterpolableList::create(3); 93 OwnPtr<InterpolableList> listA = InterpolableList::create(3);
94 listA->set(0, InterpolableNumber::create(0)); 94 listA->set(0, InterpolableNumber::create(0));
95 listA->set(1, InterpolableNumber::create(42)); 95 listA->set(1, InterpolableNumber::create(42));
96 listA->set(2, InterpolableNumber::create(20.5)); 96 listA->set(2, InterpolableNumber::create(20.5));
97 97
98 OwnPtrWillBeRawPtr<InterpolableList> listB = InterpolableList::create(3); 98 OwnPtr<InterpolableList> listB = InterpolableList::create(3);
99 listB->set(0, InterpolableNumber::create(100)); 99 listB->set(0, InterpolableNumber::create(100));
100 listB->set(1, InterpolableNumber::create(-200)); 100 listB->set(1, InterpolableNumber::create(-200));
101 listB->set(2, InterpolableNumber::create(300)); 101 listB->set(2, InterpolableNumber::create(300));
102 102
103 RefPtrWillBeRawPtr<Interpolation> i = interpolateLists(listA.release(), list B.release(), 0.3); 103 RefPtr<Interpolation> i = interpolateLists(listA.release(), listB.release(), 0.3);
104 InterpolableList* outList = toInterpolableList(interpolationValue(*i.get())) ; 104 InterpolableList* outList = toInterpolableList(interpolationValue(*i.get())) ;
105 EXPECT_FLOAT_EQ(30, toInterpolableNumber(outList->get(0))->value()); 105 EXPECT_FLOAT_EQ(30, toInterpolableNumber(outList->get(0))->value());
106 EXPECT_FLOAT_EQ(-30.6f, toInterpolableNumber(outList->get(1))->value()); 106 EXPECT_FLOAT_EQ(-30.6f, toInterpolableNumber(outList->get(1))->value());
107 EXPECT_FLOAT_EQ(104.35f, toInterpolableNumber(outList->get(2))->value()); 107 EXPECT_FLOAT_EQ(104.35f, toInterpolableNumber(outList->get(2))->value());
108 } 108 }
109 109
110 TEST_F(AnimationInterpolableValueTest, NestedList) 110 TEST_F(AnimationInterpolableValueTest, NestedList)
111 { 111 {
112 OwnPtrWillBeRawPtr<InterpolableList> listA = InterpolableList::create(3); 112 OwnPtr<InterpolableList> listA = InterpolableList::create(3);
113 listA->set(0, InterpolableNumber::create(0)); 113 listA->set(0, InterpolableNumber::create(0));
114 OwnPtrWillBeRawPtr<InterpolableList> subListA = InterpolableList::create(1); 114 OwnPtr<InterpolableList> subListA = InterpolableList::create(1);
115 subListA->set(0, InterpolableNumber::create(100)); 115 subListA->set(0, InterpolableNumber::create(100));
116 listA->set(1, subListA.release()); 116 listA->set(1, subListA.release());
117 listA->set(2, InterpolableBool::create(false)); 117 listA->set(2, InterpolableBool::create(false));
118 118
119 OwnPtrWillBeRawPtr<InterpolableList> listB = InterpolableList::create(3); 119 OwnPtr<InterpolableList> listB = InterpolableList::create(3);
120 listB->set(0, InterpolableNumber::create(100)); 120 listB->set(0, InterpolableNumber::create(100));
121 OwnPtrWillBeRawPtr<InterpolableList> subListB = InterpolableList::create(1); 121 OwnPtr<InterpolableList> subListB = InterpolableList::create(1);
122 subListB->set(0, InterpolableNumber::create(50)); 122 subListB->set(0, InterpolableNumber::create(50));
123 listB->set(1, subListB.release()); 123 listB->set(1, subListB.release());
124 listB->set(2, InterpolableBool::create(true)); 124 listB->set(2, InterpolableBool::create(true));
125 125
126 RefPtrWillBeRawPtr<Interpolation> i = interpolateLists(listA.release(), list B.release(), 0.5); 126 RefPtr<Interpolation> i = interpolateLists(listA.release(), listB.release(), 0.5);
127 InterpolableList* outList = toInterpolableList(interpolationValue(*i.get())) ; 127 InterpolableList* outList = toInterpolableList(interpolationValue(*i.get())) ;
128 EXPECT_FLOAT_EQ(50, toInterpolableNumber(outList->get(0))->value()); 128 EXPECT_FLOAT_EQ(50, toInterpolableNumber(outList->get(0))->value());
129 EXPECT_FLOAT_EQ(75, toInterpolableNumber(toInterpolableList(outList->get(1)) ->get(0))->value()); 129 EXPECT_FLOAT_EQ(75, toInterpolableNumber(toInterpolableList(outList->get(1)) ->get(0))->value());
130 EXPECT_TRUE(toInterpolableBool(outList->get(2))->value()); 130 EXPECT_TRUE(toInterpolableBool(outList->get(2))->value());
131 } 131 }
132 132
133 TEST_F(AnimationInterpolableValueTest, ScaleAndAddNumbers) 133 TEST_F(AnimationInterpolableValueTest, ScaleAndAddNumbers)
134 { 134 {
135 OwnPtrWillBeRawPtr<InterpolableNumber> base = InterpolableNumber::create(10) ; 135 OwnPtr<InterpolableNumber> base = InterpolableNumber::create(10);
136 scaleAndAdd(*base, 2, *InterpolableNumber::create(1)); 136 scaleAndAdd(*base, 2, *InterpolableNumber::create(1));
137 EXPECT_FLOAT_EQ(21, base->value()); 137 EXPECT_FLOAT_EQ(21, base->value());
138 138
139 base = InterpolableNumber::create(10); 139 base = InterpolableNumber::create(10);
140 scaleAndAdd(*base, 0, *InterpolableNumber::create(5)); 140 scaleAndAdd(*base, 0, *InterpolableNumber::create(5));
141 EXPECT_FLOAT_EQ(5, base->value()); 141 EXPECT_FLOAT_EQ(5, base->value());
142 142
143 base = InterpolableNumber::create(10); 143 base = InterpolableNumber::create(10);
144 scaleAndAdd(*base, -1, *InterpolableNumber::create(8)); 144 scaleAndAdd(*base, -1, *InterpolableNumber::create(8));
145 EXPECT_FLOAT_EQ(-2, base->value()); 145 EXPECT_FLOAT_EQ(-2, base->value());
146 } 146 }
147 147
148 TEST_F(AnimationInterpolableValueTest, ScaleAndAddLists) 148 TEST_F(AnimationInterpolableValueTest, ScaleAndAddLists)
149 { 149 {
150 OwnPtrWillBeRawPtr<InterpolableList> baseList = InterpolableList::create(3); 150 OwnPtr<InterpolableList> baseList = InterpolableList::create(3);
151 baseList->set(0, InterpolableNumber::create(5)); 151 baseList->set(0, InterpolableNumber::create(5));
152 baseList->set(1, InterpolableNumber::create(10)); 152 baseList->set(1, InterpolableNumber::create(10));
153 baseList->set(2, InterpolableNumber::create(15)); 153 baseList->set(2, InterpolableNumber::create(15));
154 OwnPtrWillBeRawPtr<InterpolableList> addList = InterpolableList::create(3); 154 OwnPtr<InterpolableList> addList = InterpolableList::create(3);
155 addList->set(0, InterpolableNumber::create(1)); 155 addList->set(0, InterpolableNumber::create(1));
156 addList->set(1, InterpolableNumber::create(2)); 156 addList->set(1, InterpolableNumber::create(2));
157 addList->set(2, InterpolableNumber::create(3)); 157 addList->set(2, InterpolableNumber::create(3));
158 scaleAndAdd(*baseList, 2, *addList); 158 scaleAndAdd(*baseList, 2, *addList);
159 EXPECT_FLOAT_EQ(11, toInterpolableNumber(baseList->get(0))->value()); 159 EXPECT_FLOAT_EQ(11, toInterpolableNumber(baseList->get(0))->value());
160 EXPECT_FLOAT_EQ(22, toInterpolableNumber(baseList->get(1))->value()); 160 EXPECT_FLOAT_EQ(22, toInterpolableNumber(baseList->get(1))->value());
161 EXPECT_FLOAT_EQ(33, toInterpolableNumber(baseList->get(2))->value()); 161 EXPECT_FLOAT_EQ(33, toInterpolableNumber(baseList->get(2))->value());
162 } 162 }
163 163
164 } 164 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698