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

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

Issue 1851003002: Throw TypeError if easing string is invalid. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 8 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 "core/animation/TimingInput.h" 5 #include "core/animation/TimingInput.h"
6 6
7 #include "bindings/core/v8/V8BindingForTesting.h" 7 #include "bindings/core/v8/V8BindingForTesting.h"
8 #include "bindings/core/v8/V8KeyframeEffectOptions.h" 8 #include "bindings/core/v8/V8KeyframeEffectOptions.h"
9 #include "core/animation/AnimationEffectTiming.h" 9 #include "core/animation/AnimationEffectTiming.h"
10 #include "core/animation/AnimationTestHelper.h" 10 #include "core/animation/AnimationTestHelper.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/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, bool& timingConversionSuccess)
25 { 25 {
26 v8::Local<v8::Object> timingInput = v8::Object::New(m_isolate); 26 v8::Local<v8::Object> timingInput = v8::Object::New(m_isolate);
27 setV8ObjectPropertyAsNumber(m_isolate, timingInput, timingProperty, timi ngPropertyValue); 27 setV8ObjectPropertyAsNumber(m_isolate, timingInput, timingProperty, timi ngPropertyValue);
28 KeyframeEffectOptions timingInputDictionary; 28 KeyframeEffectOptions timingInputDictionary;
29 V8KeyframeEffectOptions::toImpl(m_isolate, timingInput, timingInputDicti onary, exceptionState); 29 V8KeyframeEffectOptions::toImpl(m_isolate, timingInput, timingInputDicti onary, exceptionState);
30 return TimingInput::convert(timingInputDictionary); 30 Timing result;
31 timingConversionSuccess = TimingInput::convert(timingInputDictionary, re sult, exceptionState);
32 return result;
31 } 33 }
32 34
33 Timing applyTimingInputString(String timingProperty, String timingPropertyVa lue) 35 Timing applyTimingInputString(String timingProperty, String timingPropertyVa lue, bool& timingConversionSuccess)
34 { 36 {
35 v8::Local<v8::Object> timingInput = v8::Object::New(m_isolate); 37 v8::Local<v8::Object> timingInput = v8::Object::New(m_isolate);
36 setV8ObjectPropertyAsString(m_isolate, timingInput, timingProperty, timi ngPropertyValue); 38 setV8ObjectPropertyAsString(m_isolate, timingInput, timingProperty, timi ngPropertyValue);
37 KeyframeEffectOptions timingInputDictionary; 39 KeyframeEffectOptions timingInputDictionary;
38 V8KeyframeEffectOptions::toImpl(m_isolate, timingInput, timingInputDicti onary, exceptionState); 40 V8KeyframeEffectOptions::toImpl(m_isolate, timingInput, timingInputDicti onary, exceptionState);
39 return TimingInput::convert(timingInputDictionary); 41 Timing result;
42 timingConversionSuccess = TimingInput::convert(timingInputDictionary, re sult, exceptionState);
43 return result;
40 } 44 }
41 45
42 v8::Isolate* m_isolate; 46 v8::Isolate* m_isolate;
43 TrackExceptionState exceptionState; 47 TrackExceptionState exceptionState;
44 48
45 private: 49 private:
46 V8TestingScope m_scope; 50 V8TestingScope m_scope;
47 }; 51 };
48 52
49 TEST_F(AnimationTimingInputTest, TimingInputStartDelay) 53 TEST_F(AnimationTimingInputTest, TimingInputStartDelay)
50 { 54 {
51 EXPECT_EQ(1.1, applyTimingInputNumber("delay", 1100).startDelay); 55 bool ignoredSuccess;
52 EXPECT_EQ(-1, applyTimingInputNumber("delay", -1000).startDelay); 56 EXPECT_EQ(1.1, applyTimingInputNumber("delay", 1100, ignoredSuccess).startDe lay);
53 EXPECT_EQ(1, applyTimingInputString("delay", "1000").startDelay); 57 EXPECT_EQ(-1, applyTimingInputNumber("delay", -1000, ignoredSuccess).startDe lay);
54 EXPECT_EQ(0, applyTimingInputString("delay", "1s").startDelay); 58 EXPECT_EQ(1, applyTimingInputString("delay", "1000", ignoredSuccess).startDe lay);
55 EXPECT_EQ(0, applyTimingInputString("delay", "Infinity").startDelay); 59 EXPECT_EQ(0, applyTimingInputString("delay", "1s", ignoredSuccess).startDela y);
56 EXPECT_EQ(0, applyTimingInputString("delay", "-Infinity").startDelay); 60 EXPECT_EQ(0, applyTimingInputString("delay", "Infinity", ignoredSuccess).sta rtDelay);
57 EXPECT_EQ(0, applyTimingInputString("delay", "NaN").startDelay); 61 EXPECT_EQ(0, applyTimingInputString("delay", "-Infinity", ignoredSuccess).st artDelay);
58 EXPECT_EQ(0, applyTimingInputString("delay", "rubbish").startDelay); 62 EXPECT_EQ(0, applyTimingInputString("delay", "NaN", ignoredSuccess).startDel ay);
63 EXPECT_EQ(0, applyTimingInputString("delay", "rubbish", ignoredSuccess).star tDelay);
59 } 64 }
60 65
61 TEST_F(AnimationTimingInputTest, TimingInputEndDelay) 66 TEST_F(AnimationTimingInputTest, TimingInputEndDelay)
62 { 67 {
63 EXPECT_EQ(10, applyTimingInputNumber("endDelay", 10000).endDelay); 68 bool ignoredSuccess;
64 EXPECT_EQ(-2.5, applyTimingInputNumber("endDelay", -2500).endDelay); 69 EXPECT_EQ(10, applyTimingInputNumber("endDelay", 10000, ignoredSuccess).endD elay);
70 EXPECT_EQ(-2.5, applyTimingInputNumber("endDelay", -2500, ignoredSuccess).en dDelay);
65 } 71 }
66 72
67 TEST_F(AnimationTimingInputTest, TimingInputFillMode) 73 TEST_F(AnimationTimingInputTest, TimingInputFillMode)
68 { 74 {
69 Timing::FillMode defaultFillMode = Timing::FillModeAuto; 75 Timing::FillMode defaultFillMode = Timing::FillModeAuto;
76 bool ignoredSuccess;
70 77
71 EXPECT_EQ(Timing::FillModeAuto, applyTimingInputString("fill", "auto").fillM ode); 78 EXPECT_EQ(Timing::FillModeAuto, applyTimingInputString("fill", "auto", ignor edSuccess).fillMode);
72 EXPECT_EQ(Timing::FillModeForwards, applyTimingInputString("fill", "forwards ").fillMode); 79 EXPECT_EQ(Timing::FillModeForwards, applyTimingInputString("fill", "forwards ", ignoredSuccess).fillMode);
73 EXPECT_EQ(Timing::FillModeNone, applyTimingInputString("fill", "none").fillM ode); 80 EXPECT_EQ(Timing::FillModeNone, applyTimingInputString("fill", "none", ignor edSuccess).fillMode);
74 EXPECT_EQ(Timing::FillModeBackwards, applyTimingInputString("fill", "backwar ds").fillMode); 81 EXPECT_EQ(Timing::FillModeBackwards, applyTimingInputString("fill", "backwar ds", ignoredSuccess).fillMode);
75 EXPECT_EQ(Timing::FillModeBoth, applyTimingInputString("fill", "both").fillM ode); 82 EXPECT_EQ(Timing::FillModeBoth, applyTimingInputString("fill", "both", ignor edSuccess).fillMode);
76 EXPECT_EQ(defaultFillMode, applyTimingInputString("fill", "everything!").fil lMode); 83 EXPECT_EQ(defaultFillMode, applyTimingInputString("fill", "everything!", ign oredSuccess).fillMode);
77 EXPECT_EQ(defaultFillMode, applyTimingInputString("fill", "backwardsandforwa rds").fillMode); 84 EXPECT_EQ(defaultFillMode, applyTimingInputString("fill", "backwardsandforwa rds", ignoredSuccess).fillMode);
78 EXPECT_EQ(defaultFillMode, applyTimingInputNumber("fill", 2).fillMode); 85 EXPECT_EQ(defaultFillMode, applyTimingInputNumber("fill", 2, ignoredSuccess) .fillMode);
79 } 86 }
80 87
81 TEST_F(AnimationTimingInputTest, TimingInputIterationStart) 88 TEST_F(AnimationTimingInputTest, TimingInputIterationStart)
82 { 89 {
83 EXPECT_EQ(1.1, applyTimingInputNumber("iterationStart", 1.1).iterationStart) ; 90 bool ignoredSuccess;
84 EXPECT_EQ(0, applyTimingInputNumber("iterationStart", -1).iterationStart); 91 EXPECT_EQ(1.1, applyTimingInputNumber("iterationStart", 1.1, ignoredSuccess) .iterationStart);
85 EXPECT_EQ(0, applyTimingInputString("iterationStart", "Infinity").iterationS tart); 92 EXPECT_EQ(0, applyTimingInputNumber("iterationStart", -1, ignoredSuccess).it erationStart);
86 EXPECT_EQ(0, applyTimingInputString("iterationStart", "-Infinity").iteration Start); 93 EXPECT_EQ(0, applyTimingInputString("iterationStart", "Infinity", ignoredSuc cess).iterationStart);
87 EXPECT_EQ(0, applyTimingInputString("iterationStart", "NaN").iterationStart) ; 94 EXPECT_EQ(0, applyTimingInputString("iterationStart", "-Infinity", ignoredSu ccess).iterationStart);
88 EXPECT_EQ(0, applyTimingInputString("iterationStart", "rubbish").iterationSt art); 95 EXPECT_EQ(0, applyTimingInputString("iterationStart", "NaN", ignoredSuccess) .iterationStart);
96 EXPECT_EQ(0, applyTimingInputString("iterationStart", "rubbish", ignoredSucc ess).iterationStart);
89 } 97 }
90 98
91 TEST_F(AnimationTimingInputTest, TimingInputIterationCount) 99 TEST_F(AnimationTimingInputTest, TimingInputIterationCount)
92 { 100 {
93 EXPECT_EQ(2.1, applyTimingInputNumber("iterations", 2.1).iterationCount); 101 bool ignoredSuccess;
94 EXPECT_EQ(0, applyTimingInputNumber("iterations", -1).iterationCount); 102 EXPECT_EQ(2.1, applyTimingInputNumber("iterations", 2.1, ignoredSuccess).ite rationCount);
103 EXPECT_EQ(0, applyTimingInputNumber("iterations", -1, ignoredSuccess).iterat ionCount);
95 104
96 Timing timing = applyTimingInputString("iterations", "Infinity"); 105 Timing timing = applyTimingInputString("iterations", "Infinity", ignoredSucc ess);
97 EXPECT_TRUE(std::isinf(timing.iterationCount)); 106 EXPECT_TRUE(std::isinf(timing.iterationCount));
98 EXPECT_GT(timing.iterationCount, 0); 107 EXPECT_GT(timing.iterationCount, 0);
99 108
100 EXPECT_EQ(0, applyTimingInputString("iterations", "-Infinity").iterationCoun t); 109 EXPECT_EQ(0, applyTimingInputString("iterations", "-Infinity", ignoredSucces s).iterationCount);
101 EXPECT_EQ(1, applyTimingInputString("iterations", "NaN").iterationCount); 110 EXPECT_EQ(1, applyTimingInputString("iterations", "NaN", ignoredSuccess).ite rationCount);
102 EXPECT_EQ(1, applyTimingInputString("iterations", "rubbish").iterationCount) ; 111 EXPECT_EQ(1, applyTimingInputString("iterations", "rubbish", ignoredSuccess) .iterationCount);
103 } 112 }
104 113
105 TEST_F(AnimationTimingInputTest, TimingInputIterationDuration) 114 TEST_F(AnimationTimingInputTest, TimingInputIterationDuration)
106 { 115 {
107 EXPECT_EQ(1.1, applyTimingInputNumber("duration", 1100).iterationDuration); 116 bool ignoredSuccess;
108 EXPECT_TRUE(std::isnan(applyTimingInputNumber("duration", -1000).iterationDu ration)); 117 EXPECT_EQ(1.1, applyTimingInputNumber("duration", 1100, ignoredSuccess).iter ationDuration);
109 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "1000").iterationD uration)); 118 EXPECT_TRUE(std::isnan(applyTimingInputNumber("duration", -1000, ignoredSucc ess).iterationDuration));
119 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "1000", ignoredSuc cess).iterationDuration));
110 120
111 Timing timing = applyTimingInputNumber("duration", std::numeric_limits<doubl e>::infinity()); 121 Timing timing = applyTimingInputNumber("duration", std::numeric_limits<doubl e>::infinity(), ignoredSuccess);
112 EXPECT_TRUE(std::isinf(timing.iterationDuration)); 122 EXPECT_TRUE(std::isinf(timing.iterationDuration));
113 EXPECT_GT(timing.iterationDuration, 0); 123 EXPECT_GT(timing.iterationDuration, 0);
114 124
115 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "-Infinity").itera tionDuration)); 125 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "-Infinity", ignor edSuccess).iterationDuration));
116 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "NaN").iterationDu ration)); 126 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "NaN", ignoredSucc ess).iterationDuration));
117 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "auto").iterationD uration)); 127 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "auto", ignoredSuc cess).iterationDuration));
118 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "rubbish").iterati onDuration)); 128 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "rubbish", ignored Success).iterationDuration));
119 } 129 }
120 130
121 TEST_F(AnimationTimingInputTest, TimingInputPlaybackRate) 131 TEST_F(AnimationTimingInputTest, TimingInputPlaybackRate)
122 { 132 {
123 EXPECT_EQ(2.1, applyTimingInputNumber("playbackRate", 2.1).playbackRate); 133 bool ignoredSuccess;
124 EXPECT_EQ(-1, applyTimingInputNumber("playbackRate", -1).playbackRate); 134 EXPECT_EQ(2.1, applyTimingInputNumber("playbackRate", 2.1, ignoredSuccess).p laybackRate);
125 EXPECT_EQ(1, applyTimingInputString("playbackRate", "Infinity").playbackRate ); 135 EXPECT_EQ(-1, applyTimingInputNumber("playbackRate", -1, ignoredSuccess).pla ybackRate);
126 EXPECT_EQ(1, applyTimingInputString("playbackRate", "-Infinity").playbackRat e); 136 EXPECT_EQ(1, applyTimingInputString("playbackRate", "Infinity", ignoredSucce ss).playbackRate);
127 EXPECT_EQ(1, applyTimingInputString("playbackRate", "NaN").playbackRate); 137 EXPECT_EQ(1, applyTimingInputString("playbackRate", "-Infinity", ignoredSucc ess).playbackRate);
128 EXPECT_EQ(1, applyTimingInputString("playbackRate", "rubbish").playbackRate) ; 138 EXPECT_EQ(1, applyTimingInputString("playbackRate", "NaN", ignoredSuccess).p laybackRate);
139 EXPECT_EQ(1, applyTimingInputString("playbackRate", "rubbish", ignoredSucces s).playbackRate);
129 } 140 }
130 141
131 TEST_F(AnimationTimingInputTest, TimingInputDirection) 142 TEST_F(AnimationTimingInputTest, TimingInputDirection)
132 { 143 {
133 Timing::PlaybackDirection defaultPlaybackDirection = Timing::PlaybackDirecti onNormal; 144 Timing::PlaybackDirection defaultPlaybackDirection = Timing::PlaybackDirecti onNormal;
145 bool ignoredSuccess;
134 146
135 EXPECT_EQ(Timing::PlaybackDirectionNormal, applyTimingInputString("direction ", "normal").direction); 147 EXPECT_EQ(Timing::PlaybackDirectionNormal, applyTimingInputString("direction ", "normal", ignoredSuccess).direction);
136 EXPECT_EQ(Timing::PlaybackDirectionReverse, applyTimingInputString("directio n", "reverse").direction); 148 EXPECT_EQ(Timing::PlaybackDirectionReverse, applyTimingInputString("directio n", "reverse", ignoredSuccess).direction);
137 EXPECT_EQ(Timing::PlaybackDirectionAlternate, applyTimingInputString("direct ion", "alternate").direction); 149 EXPECT_EQ(Timing::PlaybackDirectionAlternate, applyTimingInputString("direct ion", "alternate", ignoredSuccess).direction);
138 EXPECT_EQ(Timing::PlaybackDirectionAlternateReverse, applyTimingInputString( "direction", "alternate-reverse").direction); 150 EXPECT_EQ(Timing::PlaybackDirectionAlternateReverse, applyTimingInputString( "direction", "alternate-reverse", ignoredSuccess).direction);
139 EXPECT_EQ(defaultPlaybackDirection, applyTimingInputString("direction", "rub bish").direction); 151 EXPECT_EQ(defaultPlaybackDirection, applyTimingInputString("direction", "rub bish", ignoredSuccess).direction);
140 EXPECT_EQ(defaultPlaybackDirection, applyTimingInputNumber("direction", 2).d irection); 152 EXPECT_EQ(defaultPlaybackDirection, applyTimingInputNumber("direction", 2, i gnoredSuccess).direction);
141 } 153 }
142 154
143 TEST_F(AnimationTimingInputTest, TimingInputTimingFunction) 155 TEST_F(AnimationTimingInputTest, TimingInputTimingFunction)
144 { 156 {
145 const RefPtr<TimingFunction> defaultTimingFunction = LinearTimingFunction::s hared(); 157 const RefPtr<TimingFunction> defaultTimingFunction = LinearTimingFunction::s hared();
158 bool success;
146 159
147 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease ), *applyTimingInputString("easing", "ease").timingFunction); 160 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease ), *applyTimingInputString("easing", "ease", success).timingFunction);
148 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease In), *applyTimingInputString("easing", "ease-in").timingFunction); 161 EXPECT_TRUE(success);
149 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease Out), *applyTimingInputString("easing", "ease-out").timingFunction); 162 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease In), *applyTimingInputString("easing", "ease-in", success).timingFunction);
150 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease InOut), *applyTimingInputString("easing", "ease-in-out").timingFunction); 163 EXPECT_TRUE(success);
151 EXPECT_EQ(*LinearTimingFunction::shared(), *applyTimingInputString("easing", "linear").timingFunction); 164 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease Out), *applyTimingInputString("easing", "ease-out", success).timingFunction);
152 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::Start), *applyTi mingInputString("easing", "step-start").timingFunction); 165 EXPECT_TRUE(success);
153 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::Middle), *applyT imingInputString("easing", "step-middle").timingFunction); 166 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease InOut), *applyTimingInputString("easing", "ease-in-out", success).timingFunction );
154 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::End), *applyTimi ngInputString("easing", "step-end").timingFunction); 167 EXPECT_TRUE(success);
155 EXPECT_EQ(*CubicBezierTimingFunction::create(1, 1, 0.3, 0.3), *applyTimingIn putString("easing", "cubic-bezier(1, 1, 0.3, 0.3)").timingFunction); 168 EXPECT_EQ(*LinearTimingFunction::shared(), *applyTimingInputString("easing", "linear", success).timingFunction);
156 EXPECT_EQ(*StepsTimingFunction::create(3, StepsTimingFunction::Start), *appl yTimingInputString("easing", "steps(3, start)").timingFunction); 169 EXPECT_TRUE(success);
157 EXPECT_EQ(*StepsTimingFunction::create(5, StepsTimingFunction::Middle), *app lyTimingInputString("easing", "steps(5, middle)").timingFunction); 170 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::Start), *applyTi mingInputString("easing", "step-start", success).timingFunction);
158 EXPECT_EQ(*StepsTimingFunction::create(5, StepsTimingFunction::End), *applyT imingInputString("easing", "steps(5, end)").timingFunction); 171 EXPECT_TRUE(success);
159 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "steps(5 .6, end)").timingFunction); 172 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::Middle), *applyT imingInputString("easing", "step-middle", success).timingFunction);
160 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "cubic-b ezier(2, 2, 0.3, 0.3)").timingFunction); 173 EXPECT_TRUE(success);
161 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "rubbish ").timingFunction); 174 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::End), *applyTimi ngInputString("easing", "step-end", success).timingFunction);
162 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputNumber("easing", 2).timin gFunction); 175 EXPECT_TRUE(success);
163 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "initial ").timingFunction); 176 EXPECT_EQ(*CubicBezierTimingFunction::create(1, 1, 0.3, 0.3), *applyTimingIn putString("easing", "cubic-bezier(1, 1, 0.3, 0.3)", success).timingFunction);
177 EXPECT_TRUE(success);
178 EXPECT_EQ(*StepsTimingFunction::create(3, StepsTimingFunction::Start), *appl yTimingInputString("easing", "steps(3, start)", success).timingFunction);
179 EXPECT_TRUE(success);
180 EXPECT_EQ(*StepsTimingFunction::create(5, StepsTimingFunction::Middle), *app lyTimingInputString("easing", "steps(5, middle)", success).timingFunction);
181 EXPECT_TRUE(success);
182 EXPECT_EQ(*StepsTimingFunction::create(5, StepsTimingFunction::End), *applyT imingInputString("easing", "steps(5, end)", success).timingFunction);
183 EXPECT_TRUE(success);
184
185 applyTimingInputString("easing", "", success);
186 EXPECT_FALSE(success);
187 applyTimingInputString("easing", "steps(5.6, end)", success);
188 EXPECT_FALSE(success);
189 applyTimingInputString("easing", "cubic-bezier(2, 2, 0.3, 0.3)", success);
190 EXPECT_FALSE(success);
191 applyTimingInputString("easing", "rubbish", success);
192 EXPECT_FALSE(success);
193 applyTimingInputNumber("easing", 2, success);
194 EXPECT_FALSE(success);
195 applyTimingInputString("easing", "initial", success);
196 EXPECT_FALSE(success);
164 } 197 }
165 198
166 TEST_F(AnimationTimingInputTest, TimingInputEmpty) 199 TEST_F(AnimationTimingInputTest, TimingInputEmpty)
167 { 200 {
168 Timing controlTiming; 201 Timing controlTiming;
169 Timing updatedTiming = TimingInput::convert(KeyframeEffectOptions()); 202 Timing updatedTiming;
203 bool success = TimingInput::convert(KeyframeEffectOptions(), updatedTiming, exceptionState);
204 EXPECT_TRUE(success);
170 205
171 EXPECT_EQ(controlTiming.startDelay, updatedTiming.startDelay); 206 EXPECT_EQ(controlTiming.startDelay, updatedTiming.startDelay);
172 EXPECT_EQ(controlTiming.fillMode, updatedTiming.fillMode); 207 EXPECT_EQ(controlTiming.fillMode, updatedTiming.fillMode);
173 EXPECT_EQ(controlTiming.iterationStart, updatedTiming.iterationStart); 208 EXPECT_EQ(controlTiming.iterationStart, updatedTiming.iterationStart);
174 EXPECT_EQ(controlTiming.iterationCount, updatedTiming.iterationCount); 209 EXPECT_EQ(controlTiming.iterationCount, updatedTiming.iterationCount);
175 EXPECT_TRUE(std::isnan(updatedTiming.iterationDuration)); 210 EXPECT_TRUE(std::isnan(updatedTiming.iterationDuration));
176 EXPECT_EQ(controlTiming.playbackRate, updatedTiming.playbackRate); 211 EXPECT_EQ(controlTiming.playbackRate, updatedTiming.playbackRate);
177 EXPECT_EQ(controlTiming.direction, updatedTiming.direction); 212 EXPECT_EQ(controlTiming.direction, updatedTiming.direction);
178 EXPECT_EQ(*controlTiming.timingFunction, *updatedTiming.timingFunction); 213 EXPECT_EQ(*controlTiming.timingFunction, *updatedTiming.timingFunction);
179 } 214 }
180 215
181 } // namespace blink 216 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698