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/css/parser/CSSTokenizer.h" | 5 #include "core/css/parser/CSSTokenizer.h" |
6 | 6 |
7 #include "core/css/parser/CSSParserTokenRange.h" | 7 #include "core/css/parser/CSSParserTokenRange.h" |
8 #include "core/css/parser/MediaQueryBlockWatcher.h" | 8 #include "core/css/parser/MediaQueryBlockWatcher.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 #include "wtf/allocator/Partitions.h" | 10 #include "wtf/allocator/Partitions.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 { | 22 { |
23 ASSERT_EQ(expected.type(), actual.type()); | 23 ASSERT_EQ(expected.type(), actual.type()); |
24 switch (expected.type()) { | 24 switch (expected.type()) { |
25 case DelimiterToken: | 25 case DelimiterToken: |
26 ASSERT_EQ(expected.delimiter(), actual.delimiter()); | 26 ASSERT_EQ(expected.delimiter(), actual.delimiter()); |
27 break; | 27 break; |
28 case IdentToken: | 28 case IdentToken: |
29 case FunctionToken: | 29 case FunctionToken: |
30 case StringToken: | 30 case StringToken: |
31 case UrlToken: | 31 case UrlToken: |
32 ASSERT_EQ(String(expected.value()), String(actual.value())); | 32 ASSERT_EQ(expected.value(), actual.value()); |
33 break; | 33 break; |
34 case DimensionToken: | 34 case DimensionToken: |
35 ASSERT_EQ(String(expected.value()), String(actual.value())); | 35 ASSERT_EQ(expected.value(), actual.value()); |
36 ASSERT_EQ(expected.numericValueType(), actual.numericValueType()); | 36 ASSERT_EQ(expected.numericValueType(), actual.numericValueType()); |
37 ASSERT_DOUBLE_EQ(expected.numericValue(), actual.numericValue()); | 37 ASSERT_DOUBLE_EQ(expected.numericValue(), actual.numericValue()); |
38 break; | 38 break; |
39 case NumberToken: | 39 case NumberToken: |
40 ASSERT_EQ(expected.numericSign(), actual.numericSign()); | 40 ASSERT_EQ(expected.numericSign(), actual.numericSign()); |
41 // fallthrough | 41 // fallthrough |
42 case PercentageToken: | 42 case PercentageToken: |
43 ASSERT_EQ(expected.numericValueType(), actual.numericValueType()); | 43 ASSERT_EQ(expected.numericValueType(), actual.numericValueType()); |
44 ASSERT_DOUBLE_EQ(expected.numericValue(), actual.numericValue()); | 44 ASSERT_DOUBLE_EQ(expected.numericValue(), actual.numericValue()); |
45 break; | 45 break; |
46 case UnicodeRangeToken: | 46 case UnicodeRangeToken: |
47 ASSERT_EQ(expected.unicodeRangeStart(), actual.unicodeRangeStart()); | 47 ASSERT_EQ(expected.unicodeRangeStart(), actual.unicodeRangeStart()); |
48 ASSERT_EQ(expected.unicodeRangeEnd(), actual.unicodeRangeEnd()); | 48 ASSERT_EQ(expected.unicodeRangeEnd(), actual.unicodeRangeEnd()); |
49 break; | 49 break; |
50 case HashToken: | 50 case HashToken: |
51 ASSERT_EQ(String(expected.value()), String(actual.value())); | 51 ASSERT_EQ(expected.value(), actual.value()); |
52 ASSERT_EQ(expected.getHashTokenType(), actual.getHashTokenType()); | 52 ASSERT_EQ(expected.getHashTokenType(), actual.getHashTokenType()); |
53 break; | 53 break; |
54 default: | 54 default: |
55 break; | 55 break; |
56 } | 56 } |
57 } | 57 } |
58 | 58 |
59 void testTokens(const String& string, const CSSParserToken& token1, const CSSPar
serToken& token2 = CSSParserToken(EOFToken), const CSSParserToken& token3 = CSSP
arserToken(EOFToken)) | 59 void testTokens(const String& string, const CSSParserToken& token1, const CSSPar
serToken& token2 = CSSParserToken(EOFToken), const CSSParserToken& token3 = CSSP
arserToken(EOFToken)) |
60 { | 60 { |
61 Vector<CSSParserToken> expectedTokens; | 61 Vector<CSSParserToken> expectedTokens; |
62 expectedTokens.append(token1); | 62 expectedTokens.append(token1); |
63 if (token2.type() != EOFToken) { | 63 if (token2.type() != EOFToken) { |
64 expectedTokens.append(token2); | 64 expectedTokens.append(token2); |
65 if (token3.type() != EOFToken) | 65 if (token3.type() != EOFToken) |
66 expectedTokens.append(token3); | 66 expectedTokens.append(token3); |
67 } | 67 } |
68 | 68 |
69 CSSParserTokenRange expected(expectedTokens); | 69 CSSParserTokenRange expected(expectedTokens); |
70 | 70 |
71 CSSTokenizer::Scope actualScope(string); | 71 CSSTokenizer::Scope actualScope(string); |
72 CSSParserTokenRange actual = actualScope.tokenRange(); | 72 CSSParserTokenRange actual = actualScope.tokenRange(); |
73 | 73 |
74 // Just check that serialization doesn't hit any asserts | 74 // Just check that serialization doesn't hit any asserts |
75 actual.serialize(); | 75 actual.serialize(); |
76 | 76 |
77 while (!expected.atEnd() || !actual.atEnd()) | 77 while (!expected.atEnd() || !actual.atEnd()) |
78 compareTokens(expected.consume(), actual.consume()); | 78 compareTokens(expected.consume(), actual.consume()); |
79 } | 79 } |
80 | 80 |
81 static CSSParserString toParserString(const String& string) | 81 static CSSParserToken ident(const String& string) { return CSSParserToken(IdentT
oken, string); } |
82 { | 82 static CSSParserToken atKeyword(const String& string) { return CSSParserToken(At
KeywordToken, string); } |
83 CSSParserString result; | 83 static CSSParserToken string(const String& string) { return CSSParserToken(Strin
gToken, string); } |
84 result.init(string); | 84 static CSSParserToken function(const String& string) { return CSSParserToken(Fun
ctionToken, string); } |
85 return result; | 85 static CSSParserToken url(const String& string) { return CSSParserToken(UrlToken
, string); } |
86 } | 86 static CSSParserToken hash(const String& string, HashTokenType type) { return CS
SParserToken(type, string); } |
87 | |
88 static CSSParserToken ident(const String& string) { return CSSParserToken(IdentT
oken, toParserString(string)); } | |
89 static CSSParserToken atKeyword(const String& string) { return CSSParserToken(At
KeywordToken, toParserString(string)); } | |
90 static CSSParserToken string(const String& string) { return CSSParserToken(Strin
gToken, toParserString(string)); } | |
91 static CSSParserToken function(const String& string) { return CSSParserToken(Fun
ctionToken, toParserString(string)); } | |
92 static CSSParserToken url(const String& string) { return CSSParserToken(UrlToken
, toParserString(string)); } | |
93 static CSSParserToken hash(const String& string, HashTokenType type) { return CS
SParserToken(type, toParserString(string)); } | |
94 static CSSParserToken delim(char c) { return CSSParserToken(DelimiterToken, c);
} | 87 static CSSParserToken delim(char c) { return CSSParserToken(DelimiterToken, c);
} |
95 | 88 |
96 static CSSParserToken unicodeRange(UChar32 start, UChar32 end) | 89 static CSSParserToken unicodeRange(UChar32 start, UChar32 end) |
97 { | 90 { |
98 return CSSParserToken(UnicodeRangeToken, start, end); | 91 return CSSParserToken(UnicodeRangeToken, start, end); |
99 } | 92 } |
100 | 93 |
101 static CSSParserToken number(NumericValueType type, double value, NumericSign si
gn) | 94 static CSSParserToken number(NumericValueType type, double value, NumericSign si
gn) |
102 { | 95 { |
103 return CSSParserToken(NumberToken, value, type, sign); | 96 return CSSParserToken(NumberToken, value, type, sign); |
104 } | 97 } |
105 | 98 |
106 static CSSParserToken dimension(NumericValueType type, double value, const Strin
g& string) | 99 static CSSParserToken dimension(NumericValueType type, double value, const Strin
g& string) |
107 { | 100 { |
108 CSSParserToken token = number(type, value, NoSign); // sign ignored | 101 CSSParserToken token = number(type, value, NoSign); // sign ignored |
109 token.convertToDimensionWithUnit(toParserString(string)); | 102 token.convertToDimensionWithUnit(string); |
110 return token; | 103 return token; |
111 } | 104 } |
112 | 105 |
113 static CSSParserToken percentage(NumericValueType type, double value) | 106 static CSSParserToken percentage(NumericValueType type, double value) |
114 { | 107 { |
115 CSSParserToken token = number(type, value, NoSign); // sign ignored | 108 CSSParserToken token = number(type, value, NoSign); // sign ignored |
116 token.convertToPercentage(); | 109 token.convertToPercentage(); |
117 return token; | 110 return token; |
118 } | 111 } |
119 | 112 |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 blockWatcher.handleToken(range.consume()); | 486 blockWatcher.handleToken(range.consume()); |
494 level = blockWatcher.blockLevel(); | 487 level = blockWatcher.blockLevel(); |
495 maxLevel = std::max(level, maxLevel); | 488 maxLevel = std::max(level, maxLevel); |
496 } | 489 } |
497 ASSERT_EQ(testCases[i].maxLevel, maxLevel); | 490 ASSERT_EQ(testCases[i].maxLevel, maxLevel); |
498 ASSERT_EQ(testCases[i].finalLevel, level); | 491 ASSERT_EQ(testCases[i].finalLevel, level); |
499 } | 492 } |
500 } | 493 } |
501 | 494 |
502 } // namespace blink | 495 } // namespace blink |
OLD | NEW |