Chromium Code Reviews| 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 |