Chromium Code Reviews| Index: Source/core/css/parser/BisonCSSParserTest.cpp |
| diff --git a/Source/core/css/parser/BisonCSSParserTest.cpp b/Source/core/css/parser/BisonCSSParserTest.cpp |
| index f2e2f36e11fed9c0a03c8171d0b910882e8014d5..4313f9bf24deb794d803b048580606ed4c31e157 100644 |
| --- a/Source/core/css/parser/BisonCSSParserTest.cpp |
| +++ b/Source/core/css/parser/BisonCSSParserTest.cpp |
| @@ -6,6 +6,8 @@ |
| #include "core/css/parser/BisonCSSParser.h" |
| #include "core/css/CSSTimingFunctionValue.h" |
| +#include "core/css/MediaList.h" |
| +#include "core/css/StyleRule.h" |
| #include "platform/animation/TimingFunction.h" |
| #include <gtest/gtest.h> |
| @@ -64,4 +66,47 @@ TEST(BisonCSSParserTest, ParseAnimationTimingFunctionValue) |
| EXPECT_EQ(0, timingFunctionValue.get()); |
| } |
| + |
| +static void testMediaQuery(const char* expected, MediaQuerySet& querySet) |
| +{ |
| + const WillBeHeapVector<OwnPtrWillBeMember<MediaQuery> >& queryVector = querySet.queryVector(); |
| + size_t queryVectorSize = queryVector.size(); |
| + StringBuilder output; |
| + |
| + for (size_t i = 0; i < queryVectorSize; ) { |
| + String queryText = queryVector[i]->cssText(); |
| + output.append(queryText); |
| + ++i; |
| + if (i >= queryVectorSize) |
| + break; |
| + output.append(", "); |
| + } |
| + ASSERT_STREQ(expected, output.toString().ascii().data()); |
| +} |
| + |
| +TEST(BisonCSSParserTest, MediaQuery) |
| +{ |
| + struct { |
| + const char* input; |
| + const char* output; |
| + } testCases[] = { |
| + {"@media s} {}", "not all"}, |
| + {"@media } {}", "not all"}, |
| + {"@media tv {}", "tv"}, |
| + {"@media tv, screen {}", "tv, screen"}, |
| + {"@media s}, tv {}", "not all, tv"}, |
| + {"@media tv, screen and (}) {}", "tv, not all"}, |
| + {0, 0} // Do not remove the terminator line. |
| + }; |
| + |
| + BisonCSSParser parser(strictCSSParserContext()); |
| + |
| + 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
|
| + RefPtrWillBeRawPtr<StyleRuleBase> rule = parser.parseRule(nullptr, String(testCases[i].input)); |
| + |
| + EXPECT_TRUE(rule->isMediaRule()); |
| + testMediaQuery(testCases[i].output, *static_cast<StyleRuleMedia*>(rule.get())->mediaQueries()); |
| + } |
| +} |
| + |
| } // namespace WebCore |