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

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

Issue 947923002: Add AnimationTimingProperties dictionary (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 10 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
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/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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698