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 |