| 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 "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 |
| OLD | NEW |