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/css/parser/BisonCSSParser.h" | 6 #include "core/css/parser/BisonCSSParser.h" |
7 | 7 |
8 #include "core/css/CSSTimingFunctionValue.h" | 8 #include "core/css/CSSTimingFunctionValue.h" |
9 #include "core/css/MediaList.h" | |
10 #include "core/css/StyleRule.h" | |
9 #include "platform/animation/TimingFunction.h" | 11 #include "platform/animation/TimingFunction.h" |
10 | 12 |
11 #include <gtest/gtest.h> | 13 #include <gtest/gtest.h> |
12 | 14 |
13 namespace WebCore { | 15 namespace WebCore { |
14 | 16 |
15 TEST(BisonCSSParserTest, ParseAnimationTimingFunctionValue) | 17 TEST(BisonCSSParserTest, ParseAnimationTimingFunctionValue) |
16 { | 18 { |
17 RefPtrWillBeRawPtr<CSSValue> timingFunctionValue; | 19 RefPtrWillBeRawPtr<CSSValue> timingFunctionValue; |
18 timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("eas e"); | 20 timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("eas e"); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
57 timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("ste ps(3)"); | 59 timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("ste ps(3)"); |
58 EXPECT_TRUE(CSSStepsTimingFunctionValue::create(3, StepsTimingFunction::Step AtEnd)->equals(toCSSStepsTimingFunctionValue(*timingFunctionValue.get()))); | 60 EXPECT_TRUE(CSSStepsTimingFunctionValue::create(3, StepsTimingFunction::Step AtEnd)->equals(toCSSStepsTimingFunctionValue(*timingFunctionValue.get()))); |
59 | 61 |
60 timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("cub ic-bezier(0.1, 5, 0.23, 0)"); | 62 timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("cub ic-bezier(0.1, 5, 0.23, 0)"); |
61 EXPECT_TRUE(CSSCubicBezierTimingFunctionValue::create(0.1, 5, 0.23, 0)->equa ls(toCSSCubicBezierTimingFunctionValue(*timingFunctionValue.get()))); | 63 EXPECT_TRUE(CSSCubicBezierTimingFunctionValue::create(0.1, 5, 0.23, 0)->equa ls(toCSSCubicBezierTimingFunctionValue(*timingFunctionValue.get()))); |
62 | 64 |
63 timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("cub ic-bezier(0.1, 0, 4, 0.4)"); | 65 timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("cub ic-bezier(0.1, 0, 4, 0.4)"); |
64 EXPECT_EQ(0, timingFunctionValue.get()); | 66 EXPECT_EQ(0, timingFunctionValue.get()); |
65 } | 67 } |
66 | 68 |
69 | |
70 static void testMediaQuery(const char* expected, MediaQuerySet& querySet) | |
71 { | |
72 const WillBeHeapVector<OwnPtrWillBeMember<MediaQuery> >& queryVector = query Set.queryVector(); | |
73 size_t queryVectorSize = queryVector.size(); | |
74 StringBuilder output; | |
75 | |
76 for (size_t i = 0; i < queryVectorSize; ) { | |
77 String queryText = queryVector[i]->cssText(); | |
78 output.append(queryText); | |
79 ++i; | |
80 if (i >= queryVectorSize) | |
81 break; | |
82 output.append(", "); | |
83 } | |
84 ASSERT_STREQ(expected, output.toString().ascii().data()); | |
85 } | |
86 | |
87 TEST(BisonCSSParserTest, MediaQuery) | |
88 { | |
89 struct { | |
90 const char* input; | |
91 const char* output; | |
92 } testCases[] = { | |
93 {"@media s} {}", "not all"}, | |
94 {"@media } {}", "not all"}, | |
95 {"@media tv {}", "tv"}, | |
96 {"@media tv, screen {}", "tv, screen"}, | |
97 {"@media s}, tv {}", "not all, tv"}, | |
98 {"@media tv, screen and (}) {}", "tv, not all"}, | |
99 {0, 0} // Do not remove the terminator line. | |
100 }; | |
101 | |
102 BisonCSSParser parser(strictCSSParserContext()); | |
103 | |
104 for (unsigned i = 0; testCases[i].input; ++i) { | |
Julien - ping for review
2014/07/18 21:14:31
You can actually do without the terminator as |tes
alancutter (OOO until 2018)
2014/07/21 05:58:10
We can go one step further and use the macro ARRAY
| |
105 RefPtrWillBeRawPtr<StyleRuleBase> rule = parser.parseRule(nullptr, Strin g(testCases[i].input)); | |
106 | |
107 EXPECT_TRUE(rule->isMediaRule()); | |
108 testMediaQuery(testCases[i].output, *static_cast<StyleRuleMedia*>(rule.g et())->mediaQueries()); | |
109 } | |
110 } | |
111 | |
67 } // namespace WebCore | 112 } // namespace WebCore |
OLD | NEW |