OLD | NEW |
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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 KeyframeEffectModel::KeyframeVector keyframes(2); | 55 KeyframeEffectModel::KeyframeVector keyframes(2); |
56 keyframes[0] = Keyframe::create(); | 56 keyframes[0] = Keyframe::create(); |
57 keyframes[0]->setOffset(0.0); | 57 keyframes[0]->setOffset(0.0); |
58 keyframes[0]->setPropertyValue(CSSPropertyLeft, zeroValue); | 58 keyframes[0]->setPropertyValue(CSSPropertyLeft, zeroValue); |
59 keyframes[1] = Keyframe::create(); | 59 keyframes[1] = Keyframe::create(); |
60 keyframes[1]->setOffset(1.0); | 60 keyframes[1]->setOffset(1.0); |
61 keyframes[1]->setPropertyValue(CSSPropertyLeft, oneValue); | 61 keyframes[1]->setPropertyValue(CSSPropertyLeft, oneValue); |
62 return keyframes; | 62 return keyframes; |
63 } | 63 } |
64 | 64 |
65 void expectDoubleValue(double expectedValue, PassRefPtr<AnimatableValue> value) | 65 void expectProperty(CSSPropertyID property, PassRefPtr<Interpolation> interpolat
ionValue) |
66 { | 66 { |
| 67 LegacyStyleInterpolation *interpolation = static_cast<LegacyStyleInterpolati
on *>(interpolationValue.get()); |
| 68 ASSERT_EQ(property, interpolation->id()); |
| 69 } |
| 70 |
| 71 void expectDoubleValue(double expectedValue, PassRefPtr<Interpolation> interpola
tionValue) |
| 72 { |
| 73 LegacyStyleInterpolation *interpolation = static_cast<LegacyStyleInterpolati
on *>(interpolationValue.get()); |
| 74 RefPtr<AnimatableValue> value = interpolation->currentValue(); |
| 75 |
67 ASSERT_TRUE(value->isLength() || value->isUnknown()); | 76 ASSERT_TRUE(value->isLength() || value->isUnknown()); |
68 | 77 |
69 double actualValue; | 78 double actualValue; |
70 if (value->isLength()) | 79 if (value->isLength()) |
71 actualValue = toCSSPrimitiveValue(toAnimatableLength(value.get())->toCSS
Value().get())->getDoubleValue(); | 80 actualValue = toCSSPrimitiveValue(toAnimatableLength(value.get())->toCSS
Value().get())->getDoubleValue(); |
72 else | 81 else |
73 actualValue = toCSSPrimitiveValue(toAnimatableUnknown(value.get())->toCS
SValue().get())->getDoubleValue(); | 82 actualValue = toCSSPrimitiveValue(toAnimatableUnknown(value.get())->toCS
SValue().get())->getDoubleValue(); |
74 | 83 |
75 EXPECT_FLOAT_EQ(static_cast<float>(expectedValue), actualValue); | 84 EXPECT_FLOAT_EQ(static_cast<float>(expectedValue), actualValue); |
76 } | 85 } |
77 | 86 |
78 const AnimationEffect::CompositableValue* findValue(const AnimationEffect::Compo
sitableValueList& values, CSSPropertyID id) | 87 Interpolation* findValue(Vector<RefPtr<Interpolation> >& values, CSSPropertyID i
d) |
79 { | 88 { |
80 for (size_t i = 0; i < values.size(); ++i) { | 89 for (size_t i = 0; i < values.size(); ++i) { |
81 const std::pair<CSSPropertyID, RefPtr<AnimationEffect::CompositableValue
> >& value = values.at(i); | 90 LegacyStyleInterpolation *value = static_cast<LegacyStyleInterpolation *
>(values.at(i).get()); |
82 if (value.first == id) | 91 if (value->id() == id) |
83 return value.second.get(); | 92 return value; |
84 } | 93 } |
85 return 0; | 94 return 0; |
86 } | 95 } |
87 | 96 |
88 | 97 |
89 TEST(AnimationKeyframeEffectModel, BasicOperation) | 98 TEST(AnimationKeyframeEffectModel, BasicOperation) |
90 { | 99 { |
91 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(unknow
nAnimatableValue(3.0), unknownAnimatableValue(5.0)); | 100 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(unknow
nAnimatableValue(3.0), unknownAnimatableValue(5.0)); |
92 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 101 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
93 OwnPtr<AnimationEffect::CompositableValueList> values = effect->sample(0, 0.
6); | 102 OwnPtr<Vector<RefPtr<Interpolation> > > values = effect->sample(0, 0.6); |
94 ASSERT_EQ(1UL, values->size()); | 103 ASSERT_EQ(1UL, values->size()); |
95 EXPECT_EQ(CSSPropertyLeft, values->at(0).first); | 104 expectProperty(CSSPropertyLeft, values->at(0)); |
96 expectDoubleValue(5.0, values->at(0).second->compositeOnto(unknownAnimatable
Value(7.0))); | 105 expectDoubleValue(5.0, values->at(0)); |
97 } | 106 } |
98 | 107 |
99 TEST(AnimationKeyframeEffectModel, CompositeReplaceNonInterpolable) | 108 TEST(AnimationKeyframeEffectModel, CompositeReplaceNonInterpolable) |
100 { | 109 { |
101 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(unknow
nAnimatableValue(3.0), unknownAnimatableValue(5.0)); | 110 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(unknow
nAnimatableValue(3.0), unknownAnimatableValue(5.0)); |
102 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); | 111 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); |
103 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); | 112 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); |
104 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 113 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
105 expectDoubleValue(5.0, effect->sample(0, 0.6)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 114 expectDoubleValue(5.0, effect->sample(0, 0.6)->at(0)); |
106 } | 115 } |
107 | 116 |
108 TEST(AnimationKeyframeEffectModel, CompositeReplace) | 117 TEST(AnimationKeyframeEffectModel, CompositeReplace) |
109 { | 118 { |
110 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); | 119 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); |
111 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); | 120 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); |
112 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); | 121 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); |
113 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 122 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
114 expectDoubleValue(3.0 * 0.4 + 5.0 * 0.6, effect->sample(0, 0.6)->at(0).secon
d->compositeOnto(unknownAnimatableValue(7.0))); | 123 expectDoubleValue(3.0 * 0.4 + 5.0 * 0.6, effect->sample(0, 0.6)->at(0)); |
115 } | 124 } |
116 | 125 |
117 TEST(AnimationKeyframeEffectModel, CompositeAdd) | 126 TEST(AnimationKeyframeEffectModel, CompositeAdd) |
118 { | 127 { |
119 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); | 128 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); |
120 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); | 129 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); |
121 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); | 130 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); |
122 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 131 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
123 expectDoubleValue((7.0 + 3.0) * 0.4 + (7.0 + 5.0) * 0.6, effect->sample(0, 0
.6)->at(0).second->compositeOnto(pixelAnimatableValue(7.0))); | 132 expectDoubleValue((7.0 + 3.0) * 0.4 + (7.0 + 5.0) * 0.6, effect->sample(0, 0
.6)->at(0)); |
124 } | 133 } |
125 | 134 |
126 TEST(AnimationKeyframeEffectModel, ExtrapolateReplaceNonInterpolable) | 135 TEST(AnimationKeyframeEffectModel, ExtrapolateReplaceNonInterpolable) |
127 { | 136 { |
128 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(unknow
nAnimatableValue(3.0), unknownAnimatableValue(5.0)); | 137 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(unknow
nAnimatableValue(3.0), unknownAnimatableValue(5.0)); |
129 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 138 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
130 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); | 139 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); |
131 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); | 140 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); |
132 expectDoubleValue(5.0, effect->sample(0, 1.6)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 141 expectDoubleValue(5.0, effect->sample(0, 1.6)->at(0)); |
133 } | 142 } |
134 | 143 |
135 TEST(AnimationKeyframeEffectModel, ExtrapolateReplace) | 144 TEST(AnimationKeyframeEffectModel, ExtrapolateReplace) |
136 { | 145 { |
137 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); | 146 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); |
138 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 147 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
139 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); | 148 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); |
140 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); | 149 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); |
141 expectDoubleValue(3.0 * -0.6 + 5.0 * 1.6, effect->sample(0, 1.6)->at(0).seco
nd->compositeOnto(pixelAnimatableValue(7.0))); | 150 expectDoubleValue(3.0 * -0.6 + 5.0 * 1.6, effect->sample(0, 1.6)->at(0)); |
142 } | 151 } |
143 | 152 |
144 TEST(AnimationKeyframeEffectModel, ExtrapolateAdd) | 153 TEST(AnimationKeyframeEffectModel, ExtrapolateAdd) |
145 { | 154 { |
146 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); | 155 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); |
147 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); | 156 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); |
148 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); | 157 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); |
149 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 158 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
150 expectDoubleValue((7.0 + 3.0) * -0.6 + (7.0 + 5.0) * 1.6, effect->sample(0,
1.6)->at(0).second->compositeOnto(pixelAnimatableValue(7.0))); | 159 expectDoubleValue((7.0 + 3.0) * -0.6 + (7.0 + 5.0) * 1.6, effect->sample(0,
1.6)->at(0)); |
151 } | 160 } |
152 | 161 |
153 TEST(AnimationKeyframeEffectModel, ZeroKeyframes) | 162 TEST(AnimationKeyframeEffectModel, ZeroKeyframes) |
154 { | 163 { |
155 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(KeyframeEff
ectModel::KeyframeVector()); | 164 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(KeyframeEff
ectModel::KeyframeVector()); |
156 EXPECT_TRUE(effect->sample(0, 0.5)->isEmpty()); | 165 EXPECT_TRUE(effect->sample(0, 0.5)->isEmpty()); |
157 } | 166 } |
158 | 167 |
159 TEST(AnimationKeyframeEffectModel, SingleKeyframeAtOffsetZero) | 168 TEST(AnimationKeyframeEffectModel, SingleKeyframeAtOffsetZero) |
160 { | 169 { |
161 KeyframeEffectModel::KeyframeVector keyframes(1); | 170 KeyframeEffectModel::KeyframeVector keyframes(1); |
162 keyframes[0] = Keyframe::create(); | 171 keyframes[0] = Keyframe::create(); |
163 keyframes[0]->setOffset(0.0); | 172 keyframes[0]->setOffset(0.0); |
164 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; | 173 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; |
165 | 174 |
166 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 175 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
167 expectDoubleValue(3.0, effect->sample(0, 0.6)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 176 expectDoubleValue(3.0, effect->sample(0, 0.6)->at(0)); |
168 } | 177 } |
169 | 178 |
170 TEST(AnimationKeyframeEffectModel, SingleKeyframeAtOffsetOne) | 179 TEST(AnimationKeyframeEffectModel, SingleKeyframeAtOffsetOne) |
171 { | 180 { |
172 KeyframeEffectModel::KeyframeVector keyframes(1); | 181 KeyframeEffectModel::KeyframeVector keyframes(1); |
173 keyframes[0] = Keyframe::create(); | 182 keyframes[0] = Keyframe::create(); |
174 keyframes[0]->setOffset(1.0); | 183 keyframes[0]->setOffset(1.0); |
175 keyframes[0]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(5.0)); | 184 keyframes[0]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(5.0)); |
176 | 185 |
177 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 186 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
178 expectDoubleValue(7.0 * 0.4 + 5.0 * 0.6, effect->sample(0, 0.6)->at(0).secon
d->compositeOnto(pixelAnimatableValue(7.0))); | 187 expectDoubleValue(7.0 * 0.4 + 5.0 * 0.6, effect->sample(0, 0.6)->at(0)); |
179 } | 188 } |
180 | 189 |
181 TEST(AnimationKeyframeEffectModel, MoreThanTwoKeyframes) | 190 TEST(AnimationKeyframeEffectModel, MoreThanTwoKeyframes) |
182 { | 191 { |
183 KeyframeEffectModel::KeyframeVector keyframes(3); | 192 KeyframeEffectModel::KeyframeVector keyframes(3); |
184 keyframes[0] = Keyframe::create(); | 193 keyframes[0] = Keyframe::create(); |
185 keyframes[0]->setOffset(0.0); | 194 keyframes[0]->setOffset(0.0); |
186 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; | 195 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; |
187 keyframes[1] = Keyframe::create(); | 196 keyframes[1] = Keyframe::create(); |
188 keyframes[1]->setOffset(0.5); | 197 keyframes[1]->setOffset(0.5); |
189 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; | 198 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; |
190 keyframes[2] = Keyframe::create(); | 199 keyframes[2] = Keyframe::create(); |
191 keyframes[2]->setOffset(1.0); | 200 keyframes[2]->setOffset(1.0); |
192 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; | 201 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; |
193 | 202 |
194 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 203 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
195 expectDoubleValue(4.0, effect->sample(0, 0.3)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 204 expectDoubleValue(4.0, effect->sample(0, 0.3)->at(0)); |
196 expectDoubleValue(5.0, effect->sample(0, 0.8)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 205 expectDoubleValue(5.0, effect->sample(0, 0.8)->at(0)); |
197 } | 206 } |
198 | 207 |
199 TEST(AnimationKeyframeEffectModel, EndKeyframeOffsetsUnspecified) | 208 TEST(AnimationKeyframeEffectModel, EndKeyframeOffsetsUnspecified) |
200 { | 209 { |
201 KeyframeEffectModel::KeyframeVector keyframes(3); | 210 KeyframeEffectModel::KeyframeVector keyframes(3); |
202 keyframes[0] = Keyframe::create(); | 211 keyframes[0] = Keyframe::create(); |
203 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; | 212 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; |
204 keyframes[1] = Keyframe::create(); | 213 keyframes[1] = Keyframe::create(); |
205 keyframes[1]->setOffset(0.5); | 214 keyframes[1]->setOffset(0.5); |
206 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; | 215 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; |
207 keyframes[2] = Keyframe::create(); | 216 keyframes[2] = Keyframe::create(); |
208 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; | 217 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; |
209 | 218 |
210 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 219 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
211 expectDoubleValue(3.0, effect->sample(0, 0.1)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 220 expectDoubleValue(3.0, effect->sample(0, 0.1)->at(0)); |
212 expectDoubleValue(4.0, effect->sample(0, 0.6)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 221 expectDoubleValue(4.0, effect->sample(0, 0.6)->at(0)); |
213 expectDoubleValue(5.0, effect->sample(0, 0.9)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 222 expectDoubleValue(5.0, effect->sample(0, 0.9)->at(0)); |
214 } | 223 } |
215 | 224 |
216 TEST(AnimationKeyframeEffectModel, SampleOnKeyframe) | 225 TEST(AnimationKeyframeEffectModel, SampleOnKeyframe) |
217 { | 226 { |
218 KeyframeEffectModel::KeyframeVector keyframes(3); | 227 KeyframeEffectModel::KeyframeVector keyframes(3); |
219 keyframes[0] = Keyframe::create(); | 228 keyframes[0] = Keyframe::create(); |
220 keyframes[0]->setOffset(0.0); | 229 keyframes[0]->setOffset(0.0); |
221 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; | 230 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; |
222 keyframes[1] = Keyframe::create(); | 231 keyframes[1] = Keyframe::create(); |
223 keyframes[1]->setOffset(0.5); | 232 keyframes[1]->setOffset(0.5); |
224 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; | 233 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; |
225 keyframes[2] = Keyframe::create(); | 234 keyframes[2] = Keyframe::create(); |
226 keyframes[2]->setOffset(1.0); | 235 keyframes[2]->setOffset(1.0); |
227 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; | 236 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; |
228 | 237 |
229 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 238 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
230 expectDoubleValue(3.0, effect->sample(0, 0.0)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 239 expectDoubleValue(3.0, effect->sample(0, 0.0)->at(0)); |
231 expectDoubleValue(4.0, effect->sample(0, 0.5)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 240 expectDoubleValue(4.0, effect->sample(0, 0.5)->at(0)); |
232 expectDoubleValue(5.0, effect->sample(0, 1.0)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 241 expectDoubleValue(5.0, effect->sample(0, 1.0)->at(0)); |
233 } | |
234 | |
235 // Note that this tests an implementation detail, not behaviour defined by the s
pec. | |
236 TEST(AnimationKeyframeEffectModel, SampleReturnsSameAnimatableValueInstance) | |
237 { | |
238 AnimatableValue* threePixelsValue = unknownAnimatableValue(3.0); | |
239 AnimatableValue* fourPixelsValue = unknownAnimatableValue(4.0); | |
240 AnimatableValue* fivePixelsValue = unknownAnimatableValue(5.0); | |
241 | |
242 KeyframeEffectModel::KeyframeVector keyframes(3); | |
243 keyframes[0] = Keyframe::create(); | |
244 keyframes[0]->setOffset(0.0); | |
245 keyframes[0]->setPropertyValue(CSSPropertyLeft, threePixelsValue); | |
246 keyframes[1] = Keyframe::create(); | |
247 keyframes[1]->setOffset(0.5); | |
248 keyframes[1]->setPropertyValue(CSSPropertyLeft, fourPixelsValue); | |
249 keyframes[2] = Keyframe::create(); | |
250 keyframes[2]->setOffset(1.0); | |
251 keyframes[2]->setPropertyValue(CSSPropertyLeft, fivePixelsValue); | |
252 | |
253 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | |
254 EXPECT_EQ(threePixelsValue, effect->sample(0, 0.0)->at(0).second->compositeO
nto(unknownAnimatableValue(7.0))); | |
255 EXPECT_EQ(threePixelsValue, effect->sample(0, 0.1)->at(0).second->compositeO
nto(unknownAnimatableValue(7.0))); | |
256 EXPECT_EQ(fourPixelsValue, effect->sample(0, 0.4)->at(0).second->compositeOn
to(unknownAnimatableValue(7.0))); | |
257 EXPECT_EQ(fourPixelsValue, effect->sample(0, 0.5)->at(0).second->compositeOn
to(unknownAnimatableValue(7.0))); | |
258 EXPECT_EQ(fourPixelsValue, effect->sample(0, 0.6)->at(0).second->compositeOn
to(unknownAnimatableValue(7.0))); | |
259 EXPECT_EQ(fivePixelsValue, effect->sample(0, 0.9)->at(0).second->compositeOn
to(unknownAnimatableValue(7.0))); | |
260 EXPECT_EQ(fivePixelsValue, effect->sample(0, 1.0)->at(0).second->compositeOn
to(unknownAnimatableValue(7.0))); | |
261 } | 242 } |
262 | 243 |
263 TEST(AnimationKeyframeEffectModel, MultipleKeyframesWithSameOffset) | 244 TEST(AnimationKeyframeEffectModel, MultipleKeyframesWithSameOffset) |
264 { | 245 { |
265 KeyframeEffectModel::KeyframeVector keyframes(7); | 246 KeyframeEffectModel::KeyframeVector keyframes(7); |
266 keyframes[0] = Keyframe::create(); | 247 keyframes[0] = Keyframe::create(); |
267 keyframes[0]->setOffset(0.1); | 248 keyframes[0]->setOffset(0.1); |
268 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(1.0))
; | 249 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(1.0))
; |
269 keyframes[1] = Keyframe::create(); | 250 keyframes[1] = Keyframe::create(); |
270 keyframes[1]->setOffset(0.1); | 251 keyframes[1]->setOffset(0.1); |
271 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(2.0))
; | 252 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(2.0))
; |
272 keyframes[2] = Keyframe::create(); | 253 keyframes[2] = Keyframe::create(); |
273 keyframes[2]->setOffset(0.5); | 254 keyframes[2]->setOffset(0.5); |
274 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; | 255 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; |
275 keyframes[3] = Keyframe::create(); | 256 keyframes[3] = Keyframe::create(); |
276 keyframes[3]->setOffset(0.5); | 257 keyframes[3]->setOffset(0.5); |
277 keyframes[3]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; | 258 keyframes[3]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; |
278 keyframes[4] = Keyframe::create(); | 259 keyframes[4] = Keyframe::create(); |
279 keyframes[4]->setOffset(0.5); | 260 keyframes[4]->setOffset(0.5); |
280 keyframes[4]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; | 261 keyframes[4]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; |
281 keyframes[5] = Keyframe::create(); | 262 keyframes[5] = Keyframe::create(); |
282 keyframes[5]->setOffset(0.9); | 263 keyframes[5]->setOffset(0.9); |
283 keyframes[5]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(6.0))
; | 264 keyframes[5]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(6.0))
; |
284 keyframes[6] = Keyframe::create(); | 265 keyframes[6] = Keyframe::create(); |
285 keyframes[6]->setOffset(0.9); | 266 keyframes[6]->setOffset(0.9); |
286 keyframes[6]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(7.0))
; | 267 keyframes[6]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(7.0))
; |
287 | 268 |
288 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 269 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
289 expectDoubleValue(2.0, effect->sample(0, 0.0)->at(0).second->compositeOnto(u
nknownAnimatableValue(8.0))); | 270 expectDoubleValue(2.0, effect->sample(0, 0.0)->at(0)); |
290 expectDoubleValue(2.0, effect->sample(0, 0.2)->at(0).second->compositeOnto(u
nknownAnimatableValue(8.0))); | 271 expectDoubleValue(2.0, effect->sample(0, 0.2)->at(0)); |
291 expectDoubleValue(3.0, effect->sample(0, 0.4)->at(0).second->compositeOnto(u
nknownAnimatableValue(8.0))); | 272 expectDoubleValue(3.0, effect->sample(0, 0.4)->at(0)); |
292 expectDoubleValue(5.0, effect->sample(0, 0.5)->at(0).second->compositeOnto(u
nknownAnimatableValue(8.0))); | 273 expectDoubleValue(5.0, effect->sample(0, 0.5)->at(0)); |
293 expectDoubleValue(5.0, effect->sample(0, 0.6)->at(0).second->compositeOnto(u
nknownAnimatableValue(8.0))); | 274 expectDoubleValue(5.0, effect->sample(0, 0.6)->at(0)); |
294 expectDoubleValue(6.0, effect->sample(0, 0.8)->at(0).second->compositeOnto(u
nknownAnimatableValue(8.0))); | 275 expectDoubleValue(6.0, effect->sample(0, 0.8)->at(0)); |
295 expectDoubleValue(6.0, effect->sample(0, 1.0)->at(0).second->compositeOnto(u
nknownAnimatableValue(8.0))); | 276 expectDoubleValue(6.0, effect->sample(0, 1.0)->at(0)); |
296 } | 277 } |
297 | 278 |
298 TEST(AnimationKeyframeEffectModel, PerKeyframeComposite) | 279 TEST(AnimationKeyframeEffectModel, PerKeyframeComposite) |
299 { | 280 { |
300 KeyframeEffectModel::KeyframeVector keyframes(2); | 281 KeyframeEffectModel::KeyframeVector keyframes(2); |
301 keyframes[0] = Keyframe::create(); | 282 keyframes[0] = Keyframe::create(); |
302 keyframes[0]->setOffset(0.0); | 283 keyframes[0]->setOffset(0.0); |
303 keyframes[0]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(3.0)); | 284 keyframes[0]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(3.0)); |
304 keyframes[1] = Keyframe::create(); | 285 keyframes[1] = Keyframe::create(); |
305 keyframes[1]->setOffset(1.0); | 286 keyframes[1]->setOffset(1.0); |
306 keyframes[1]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(5.0)); | 287 keyframes[1]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(5.0)); |
307 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); | 288 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); |
308 | 289 |
309 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 290 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
310 expectDoubleValue(3.0 * 0.4 + (7.0 + 5.0) * 0.6, effect->sample(0, 0.6)->at(
0).second->compositeOnto(pixelAnimatableValue(7.0))); | 291 expectDoubleValue(3.0 * 0.4 + (7.0 + 5.0) * 0.6, effect->sample(0, 0.6)->at(
0)); |
311 } | 292 } |
312 | 293 |
313 TEST(AnimationKeyframeEffectModel, MultipleProperties) | 294 TEST(AnimationKeyframeEffectModel, MultipleProperties) |
314 { | 295 { |
315 KeyframeEffectModel::KeyframeVector keyframes(2); | 296 KeyframeEffectModel::KeyframeVector keyframes(2); |
316 keyframes[0] = Keyframe::create(); | 297 keyframes[0] = Keyframe::create(); |
317 keyframes[0]->setOffset(0.0); | 298 keyframes[0]->setOffset(0.0); |
318 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; | 299 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; |
319 keyframes[0]->setPropertyValue(CSSPropertyRight, unknownAnimatableValue(4.0)
); | 300 keyframes[0]->setPropertyValue(CSSPropertyRight, unknownAnimatableValue(4.0)
); |
320 keyframes[1] = Keyframe::create(); | 301 keyframes[1] = Keyframe::create(); |
321 keyframes[1]->setOffset(1.0); | 302 keyframes[1]->setOffset(1.0); |
322 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; | 303 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; |
323 keyframes[1]->setPropertyValue(CSSPropertyRight, unknownAnimatableValue(6.0)
); | 304 keyframes[1]->setPropertyValue(CSSPropertyRight, unknownAnimatableValue(6.0)
); |
324 | 305 |
325 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 306 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
326 OwnPtr<AnimationEffect::CompositableValueList> values = effect->sample(0, 0.
6); | 307 OwnPtr<Vector<RefPtr<Interpolation> > > values = effect->sample(0, 0.6); |
327 EXPECT_EQ(2UL, values->size()); | 308 EXPECT_EQ(2UL, values->size()); |
328 const AnimationEffect::CompositableValue* leftValue = findValue(*values.get(
), CSSPropertyLeft); | 309 Interpolation* leftValue = findValue(*values.get(), CSSPropertyLeft); |
329 ASSERT_TRUE(leftValue); | 310 ASSERT_TRUE(leftValue); |
330 expectDoubleValue(5.0, leftValue->compositeOnto(unknownAnimatableValue(7.0))
); | 311 expectDoubleValue(5.0, leftValue); |
331 const AnimationEffect::CompositableValue* rightValue = findValue(*values.get
(), CSSPropertyRight); | 312 Interpolation* rightValue = findValue(*values.get(), CSSPropertyRight); |
332 ASSERT_TRUE(rightValue); | 313 ASSERT_TRUE(rightValue); |
333 expectDoubleValue(6.0, rightValue->compositeOnto(unknownAnimatableValue(7.0)
)); | 314 expectDoubleValue(6.0, rightValue); |
334 } | 315 } |
335 | 316 |
336 TEST(AnimationKeyframeEffectModel, RecompositeCompositableValue) | 317 TEST(AnimationKeyframeEffectModel, RecompositeCompositableValue) |
337 { | 318 { |
338 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); | 319 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); |
339 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); | 320 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); |
340 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); | 321 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); |
341 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 322 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
342 OwnPtr<AnimationEffect::CompositableValueList> values = effect->sample(0, 0.
6); | 323 OwnPtr<Vector<RefPtr<Interpolation> > > values = effect->sample(0, 0.6); |
343 expectDoubleValue((7.0 + 3.0) * 0.4 + (7.0 + 5.0) * 0.6, values->at(0).secon
d->compositeOnto(pixelAnimatableValue(7.0))); | 324 expectDoubleValue((7.0 + 3.0) * 0.4 + (7.0 + 5.0) * 0.6, values->at(0)); |
344 expectDoubleValue((9.0 + 3.0) * 0.4 + (9.0 + 5.0) * 0.6, values->at(0).secon
d->compositeOnto(pixelAnimatableValue(9.0))); | 325 expectDoubleValue((9.0 + 3.0) * 0.4 + (9.0 + 5.0) * 0.6, values->at(0)); |
345 } | 326 } |
346 | 327 |
347 TEST(AnimationKeyframeEffectModel, MultipleIterations) | 328 TEST(AnimationKeyframeEffectModel, MultipleIterations) |
348 { | 329 { |
349 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(1.0), pixelAnimatableValue(3.0)); | 330 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(1.0), pixelAnimatableValue(3.0)); |
350 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 331 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
351 expectDoubleValue(2.0, effect->sample(0, 0.5)->at(0).second->compositeOnto(u
nknownAnimatableValue(0.0))); | 332 expectDoubleValue(2.0, effect->sample(0, 0.5)->at(0)); |
352 expectDoubleValue(2.0, effect->sample(1, 0.5)->at(0).second->compositeOnto(u
nknownAnimatableValue(0.0))); | 333 expectDoubleValue(2.0, effect->sample(1, 0.5)->at(0)); |
353 expectDoubleValue(2.0, effect->sample(2, 0.5)->at(0).second->compositeOnto(u
nknownAnimatableValue(0.0))); | 334 expectDoubleValue(2.0, effect->sample(2, 0.5)->at(0)); |
354 } | 335 } |
355 | 336 |
356 TEST(AnimationKeyframeEffectModel, DependsOnUnderlyingValue) | 337 TEST(AnimationKeyframeEffectModel, DependsOnUnderlyingValue) |
357 { | 338 { |
358 KeyframeEffectModel::KeyframeVector keyframes(3); | 339 KeyframeEffectModel::KeyframeVector keyframes(3); |
359 keyframes[0] = Keyframe::create(); | 340 keyframes[0] = Keyframe::create(); |
360 keyframes[0]->setOffset(0.0); | 341 keyframes[0]->setOffset(0.0); |
361 keyframes[0]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(1.0)); | 342 keyframes[0]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(1.0)); |
362 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); | 343 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); |
363 keyframes[1] = Keyframe::create(); | 344 keyframes[1] = Keyframe::create(); |
364 keyframes[1]->setOffset(0.5); | 345 keyframes[1]->setOffset(0.5); |
365 keyframes[1]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(1.0)); | 346 keyframes[1]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(1.0)); |
366 keyframes[2] = Keyframe::create(); | 347 keyframes[2] = Keyframe::create(); |
367 keyframes[2]->setOffset(1.0); | 348 keyframes[2]->setOffset(1.0); |
368 keyframes[2]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(1.0)); | 349 keyframes[2]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(1.0)); |
369 | 350 |
370 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 351 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
371 EXPECT_TRUE(effect->sample(0, 0)->at(0).second->dependsOnUnderlyingValue()); | 352 EXPECT_TRUE(effect->sample(0, 0)->at(0)); |
372 EXPECT_TRUE(effect->sample(0, 0.1)->at(0).second->dependsOnUnderlyingValue()
); | 353 EXPECT_TRUE(effect->sample(0, 0.1)->at(0)); |
373 EXPECT_TRUE(effect->sample(0, 0.25)->at(0).second->dependsOnUnderlyingValue(
)); | 354 EXPECT_TRUE(effect->sample(0, 0.25)->at(0)); |
374 EXPECT_TRUE(effect->sample(0, 0.4)->at(0).second->dependsOnUnderlyingValue()
); | 355 EXPECT_TRUE(effect->sample(0, 0.4)->at(0)); |
375 EXPECT_FALSE(effect->sample(0, 0.5)->at(0).second->dependsOnUnderlyingValue(
)); | 356 EXPECT_FALSE(effect->sample(0, 0.5)->at(0)); |
376 EXPECT_FALSE(effect->sample(0, 0.6)->at(0).second->dependsOnUnderlyingValue(
)); | 357 EXPECT_FALSE(effect->sample(0, 0.6)->at(0)); |
377 EXPECT_FALSE(effect->sample(0, 0.75)->at(0).second->dependsOnUnderlyingValue
()); | 358 EXPECT_FALSE(effect->sample(0, 0.75)->at(0)); |
378 EXPECT_FALSE(effect->sample(0, 0.8)->at(0).second->dependsOnUnderlyingValue(
)); | 359 EXPECT_FALSE(effect->sample(0, 0.8)->at(0)); |
379 EXPECT_FALSE(effect->sample(0, 1)->at(0).second->dependsOnUnderlyingValue())
; | 360 EXPECT_FALSE(effect->sample(0, 1)->at(0)); |
380 } | 361 } |
381 | 362 |
382 TEST(AnimationKeyframeEffectModel, ToKeyframeEffectModel) | 363 TEST(AnimationKeyframeEffectModel, ToKeyframeEffectModel) |
383 { | 364 { |
384 KeyframeEffectModel::KeyframeVector keyframes(0); | 365 KeyframeEffectModel::KeyframeVector keyframes(0); |
385 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 366 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
386 | 367 |
387 AnimationEffect* baseEffect = effect.get(); | 368 AnimationEffect* baseEffect = effect.get(); |
388 EXPECT_TRUE(toKeyframeEffectModel(baseEffect)); | 369 EXPECT_TRUE(toKeyframeEffectModel(baseEffect)); |
389 } | 370 } |
390 | 371 |
391 } // namespace | 372 } // namespace |
OLD | NEW |