OLD | NEW |
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/TimingInput.h" | 6 #include "core/animation/TimingInput.h" |
7 | 7 |
8 #include "bindings/core/v8/Dictionary.h" | 8 #include "bindings/core/v8/V8AnimationTimingProperties.h" |
9 #include "core/animation/AnimationNodeTiming.h" | 9 #include "core/animation/AnimationNodeTiming.h" |
10 #include "core/animation/AnimationTestHelper.h" | 10 #include "core/animation/AnimationTestHelper.h" |
11 #include <gtest/gtest.h> | 11 #include <gtest/gtest.h> |
12 #include <v8.h> | 12 #include <v8.h> |
13 | 13 |
14 namespace blink { | 14 namespace blink { |
15 | 15 |
16 class AnimationTimingInputTest : public ::testing::Test { | 16 class AnimationTimingInputTest : public ::testing::Test { |
17 protected: | 17 protected: |
18 AnimationTimingInputTest() | 18 AnimationTimingInputTest() |
19 : m_isolate(v8::Isolate::GetCurrent()) | 19 : m_isolate(v8::Isolate::GetCurrent()) |
20 , m_scope(m_isolate) | 20 , m_scope(m_isolate) |
21 { | 21 { |
22 } | 22 } |
23 | 23 |
24 Timing applyTimingInputNumber(String timingProperty, double timingPropertyVa
lue) | 24 Timing applyTimingInputNumber(String timingProperty, double timingPropertyVa
lue) |
25 { | 25 { |
26 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); | 26 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); |
27 setV8ObjectPropertyAsNumber(timingInput, timingProperty, timingPropertyV
alue); | 27 setV8ObjectPropertyAsNumber(timingInput, timingProperty, timingPropertyV
alue); |
28 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cas
t(timingInput), m_isolate, exceptionState); | 28 AnimationTimingProperties timingInputDictionary; |
| 29 V8AnimationTimingProperties::toImpl(m_isolate, timingInput, timingInputD
ictionary, exceptionState); |
29 return TimingInput::convert(timingInputDictionary); | 30 return TimingInput::convert(timingInputDictionary); |
30 } | 31 } |
31 | 32 |
32 Timing applyTimingInputString(String timingProperty, String timingPropertyVa
lue) | 33 Timing applyTimingInputString(String timingProperty, String timingPropertyVa
lue) |
33 { | 34 { |
34 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); | 35 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); |
35 setV8ObjectPropertyAsString(timingInput, timingProperty, timingPropertyV
alue); | 36 setV8ObjectPropertyAsString(timingInput, timingProperty, timingPropertyV
alue); |
36 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cas
t(timingInput), m_isolate, exceptionState); | 37 AnimationTimingProperties timingInputDictionary; |
| 38 V8AnimationTimingProperties::toImpl(m_isolate, timingInput, timingInputD
ictionary, exceptionState); |
37 return TimingInput::convert(timingInputDictionary); | 39 return TimingInput::convert(timingInputDictionary); |
38 } | 40 } |
39 | 41 |
40 v8::Isolate* m_isolate; | 42 v8::Isolate* m_isolate; |
41 TrackExceptionState exceptionState; | 43 TrackExceptionState exceptionState; |
42 | 44 |
43 private: | 45 private: |
44 V8TestingScope m_scope; | 46 V8TestingScope m_scope; |
45 }; | 47 }; |
46 | 48 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 | 99 |
98 EXPECT_EQ(0, applyTimingInputString("iterations", "-Infinity").iterationCoun
t); | 100 EXPECT_EQ(0, applyTimingInputString("iterations", "-Infinity").iterationCoun
t); |
99 EXPECT_EQ(1, applyTimingInputString("iterations", "NaN").iterationCount); | 101 EXPECT_EQ(1, applyTimingInputString("iterations", "NaN").iterationCount); |
100 EXPECT_EQ(1, applyTimingInputString("iterations", "rubbish").iterationCount)
; | 102 EXPECT_EQ(1, applyTimingInputString("iterations", "rubbish").iterationCount)
; |
101 } | 103 } |
102 | 104 |
103 TEST_F(AnimationTimingInputTest, TimingInputIterationDuration) | 105 TEST_F(AnimationTimingInputTest, TimingInputIterationDuration) |
104 { | 106 { |
105 EXPECT_EQ(1.1, applyTimingInputNumber("duration", 1100).iterationDuration); | 107 EXPECT_EQ(1.1, applyTimingInputNumber("duration", 1100).iterationDuration); |
106 EXPECT_TRUE(std::isnan(applyTimingInputNumber("duration", -1000).iterationDu
ration)); | 108 EXPECT_TRUE(std::isnan(applyTimingInputNumber("duration", -1000).iterationDu
ration)); |
107 EXPECT_EQ(1, applyTimingInputString("duration", "1000").iterationDuration); | 109 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "1000").iterationD
uration)); |
108 | 110 |
109 Timing timing = applyTimingInputString("duration", "Infinity"); | 111 Timing timing = applyTimingInputNumber("duration", std::numeric_limits<doubl
e>::infinity()); |
110 EXPECT_TRUE(std::isinf(timing.iterationDuration)); | 112 EXPECT_TRUE(std::isinf(timing.iterationDuration)); |
111 EXPECT_GT(timing.iterationDuration, 0); | 113 EXPECT_GT(timing.iterationDuration, 0); |
112 | 114 |
113 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "-Infinity").itera
tionDuration)); | 115 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "-Infinity").itera
tionDuration)); |
114 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "NaN").iterationDu
ration)); | 116 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "NaN").iterationDu
ration)); |
115 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "auto").iterationD
uration)); | 117 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "auto").iterationD
uration)); |
116 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "rubbish").iterati
onDuration)); | 118 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "rubbish").iterati
onDuration)); |
117 } | 119 } |
118 | 120 |
119 TEST_F(AnimationTimingInputTest, TimingInputPlaybackRate) | 121 TEST_F(AnimationTimingInputTest, TimingInputPlaybackRate) |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "steps(5
.6, end)").timingFunction); | 159 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "steps(5
.6, end)").timingFunction); |
158 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "cubic-b
ezier(2, 2, 0.3, 0.3)").timingFunction); | 160 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "cubic-b
ezier(2, 2, 0.3, 0.3)").timingFunction); |
159 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "rubbish
").timingFunction); | 161 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "rubbish
").timingFunction); |
160 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputNumber("easing", 2).timin
gFunction); | 162 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputNumber("easing", 2).timin
gFunction); |
161 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "initial
").timingFunction); | 163 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "initial
").timingFunction); |
162 } | 164 } |
163 | 165 |
164 TEST_F(AnimationTimingInputTest, TimingInputEmpty) | 166 TEST_F(AnimationTimingInputTest, TimingInputEmpty) |
165 { | 167 { |
166 Timing controlTiming; | 168 Timing controlTiming; |
167 | 169 Timing updatedTiming = TimingInput::convert(AnimationTimingProperties()); |
168 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); | |
169 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti
mingInput), m_isolate, exceptionState); | |
170 Timing updatedTiming = TimingInput::convert(timingInputDictionary); | |
171 | 170 |
172 EXPECT_EQ(controlTiming.startDelay, updatedTiming.startDelay); | 171 EXPECT_EQ(controlTiming.startDelay, updatedTiming.startDelay); |
173 EXPECT_EQ(controlTiming.fillMode, updatedTiming.fillMode); | 172 EXPECT_EQ(controlTiming.fillMode, updatedTiming.fillMode); |
174 EXPECT_EQ(controlTiming.iterationStart, updatedTiming.iterationStart); | 173 EXPECT_EQ(controlTiming.iterationStart, updatedTiming.iterationStart); |
175 EXPECT_EQ(controlTiming.iterationCount, updatedTiming.iterationCount); | 174 EXPECT_EQ(controlTiming.iterationCount, updatedTiming.iterationCount); |
176 EXPECT_TRUE(std::isnan(updatedTiming.iterationDuration)); | 175 EXPECT_TRUE(std::isnan(updatedTiming.iterationDuration)); |
177 EXPECT_EQ(controlTiming.playbackRate, updatedTiming.playbackRate); | 176 EXPECT_EQ(controlTiming.playbackRate, updatedTiming.playbackRate); |
178 EXPECT_EQ(controlTiming.direction, updatedTiming.direction); | 177 EXPECT_EQ(controlTiming.direction, updatedTiming.direction); |
179 EXPECT_EQ(*controlTiming.timingFunction, *updatedTiming.timingFunction); | 178 EXPECT_EQ(*controlTiming.timingFunction, *updatedTiming.timingFunction); |
180 } | 179 } |
181 | 180 |
182 } // namespace blink | 181 } // namespace blink |
OLD | NEW |