| OLD | NEW |
| (Empty) |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "config.h" | |
| 6 #include "core/css/resolver/MatchResult.h" | |
| 7 | |
| 8 #include "core/css/StylePropertySet.h" | |
| 9 #include <gtest/gtest.h> | |
| 10 | |
| 11 namespace blink { | |
| 12 | |
| 13 class MatchResultTest : public ::testing::Test { | |
| 14 protected: | |
| 15 void SetUp() override; | |
| 16 | |
| 17 const StylePropertySet* propertySet(unsigned index) const | |
| 18 { | |
| 19 return propertySets[index].get(); | |
| 20 } | |
| 21 | |
| 22 private: | |
| 23 WillBePersistentHeapVector<RefPtrWillBeMember<MutableStylePropertySet>, 6> p
ropertySets; | |
| 24 }; | |
| 25 | |
| 26 void MatchResultTest::SetUp() | |
| 27 { | |
| 28 for (unsigned i = 0; i < 6; i++) | |
| 29 propertySets.append(MutableStylePropertySet::create()); | |
| 30 } | |
| 31 | |
| 32 void testMatchedPropertiesRange(const MatchedPropertiesRange& range, int expecte
dLength, const StylePropertySet** expectedSets) | |
| 33 { | |
| 34 EXPECT_EQ(expectedLength, range.end() - range.begin()); | |
| 35 for (const auto& matchedProperties : range) | |
| 36 EXPECT_EQ(*expectedSets++, matchedProperties.properties); | |
| 37 } | |
| 38 | |
| 39 TEST_F(MatchResultTest, UARules) | |
| 40 { | |
| 41 const StylePropertySet* uaSets[] = { propertySet(0), propertySet(1) }; | |
| 42 | |
| 43 MatchResult result; | |
| 44 result.addMatchedProperties(uaSets[0]); | |
| 45 result.addMatchedProperties(uaSets[1]); | |
| 46 result.finishAddingUARules(); | |
| 47 | |
| 48 result.finishAddingAuthorRulesForTreeScope(); | |
| 49 | |
| 50 testMatchedPropertiesRange(result.allRules(), 2, uaSets); | |
| 51 testMatchedPropertiesRange(result.uaRules(), 2, uaSets); | |
| 52 testMatchedPropertiesRange(result.authorRules(), 0, nullptr); | |
| 53 | |
| 54 ImportantAuthorRanges important(result); | |
| 55 EXPECT_EQ(important.end(), important.begin()); | |
| 56 } | |
| 57 | |
| 58 TEST_F(MatchResultTest, AuthorRules) | |
| 59 { | |
| 60 const StylePropertySet* authorSets[] = { propertySet(0), propertySet(1) }; | |
| 61 | |
| 62 MatchResult result; | |
| 63 | |
| 64 result.finishAddingUARules(); | |
| 65 result.addMatchedProperties(authorSets[0]); | |
| 66 result.addMatchedProperties(authorSets[1]); | |
| 67 result.finishAddingAuthorRulesForTreeScope(); | |
| 68 | |
| 69 testMatchedPropertiesRange(result.allRules(), 2, authorSets); | |
| 70 testMatchedPropertiesRange(result.uaRules(), 0, nullptr); | |
| 71 testMatchedPropertiesRange(result.authorRules(), 2, authorSets); | |
| 72 | |
| 73 ImportantAuthorRanges important(result); | |
| 74 EXPECT_EQ(important.end(), ++important.begin()); | |
| 75 } | |
| 76 | |
| 77 TEST_F(MatchResultTest, UAAndAuthorRules) | |
| 78 { | |
| 79 const StylePropertySet* allSets[] = { propertySet(0), propertySet(1), proper
tySet(2), propertySet(3) }; | |
| 80 const StylePropertySet** uaSets = &allSets[0]; | |
| 81 const StylePropertySet** authorSets = &allSets[2]; | |
| 82 | |
| 83 MatchResult result; | |
| 84 | |
| 85 result.addMatchedProperties(uaSets[0]); | |
| 86 result.addMatchedProperties(uaSets[1]); | |
| 87 result.finishAddingUARules(); | |
| 88 | |
| 89 result.addMatchedProperties(authorSets[0]); | |
| 90 result.addMatchedProperties(authorSets[1]); | |
| 91 result.finishAddingAuthorRulesForTreeScope(); | |
| 92 | |
| 93 testMatchedPropertiesRange(result.allRules(), 4, allSets); | |
| 94 testMatchedPropertiesRange(result.uaRules(), 2, uaSets); | |
| 95 testMatchedPropertiesRange(result.authorRules(), 2, authorSets); | |
| 96 | |
| 97 ImportantAuthorRanges important(result); | |
| 98 EXPECT_EQ(important.end(), ++important.begin()); | |
| 99 } | |
| 100 | |
| 101 TEST_F(MatchResultTest, AuthorRulesMultipleScopes) | |
| 102 { | |
| 103 const StylePropertySet* authorSets[] = { propertySet(0), propertySet(1), pro
pertySet(2), propertySet(3) }; | |
| 104 | |
| 105 MatchResult result; | |
| 106 | |
| 107 result.finishAddingUARules(); | |
| 108 | |
| 109 result.addMatchedProperties(authorSets[0]); | |
| 110 result.addMatchedProperties(authorSets[1]); | |
| 111 result.finishAddingAuthorRulesForTreeScope(); | |
| 112 | |
| 113 result.addMatchedProperties(authorSets[2]); | |
| 114 result.addMatchedProperties(authorSets[3]); | |
| 115 result.finishAddingAuthorRulesForTreeScope(); | |
| 116 | |
| 117 testMatchedPropertiesRange(result.allRules(), 4, authorSets); | |
| 118 testMatchedPropertiesRange(result.uaRules(), 0, nullptr); | |
| 119 testMatchedPropertiesRange(result.authorRules(), 4, authorSets); | |
| 120 | |
| 121 ImportantAuthorRanges important(result); | |
| 122 | |
| 123 auto iter = important.begin(); | |
| 124 EXPECT_NE(important.end(), iter); | |
| 125 testMatchedPropertiesRange(*iter, 2, &authorSets[2]); | |
| 126 | |
| 127 ++iter; | |
| 128 EXPECT_NE(important.end(), iter); | |
| 129 testMatchedPropertiesRange(*iter, 2, authorSets); | |
| 130 | |
| 131 ++iter; | |
| 132 EXPECT_EQ(important.end(), iter); | |
| 133 } | |
| 134 | |
| 135 TEST_F(MatchResultTest, UARulesAndAuthorRulesMultipleScopes) | |
| 136 { | |
| 137 const StylePropertySet* allSets[] = { propertySet(0), propertySet(1), proper
tySet(2), propertySet(3), propertySet(4), propertySet(5) }; | |
| 138 const StylePropertySet** uaSets = &allSets[0]; | |
| 139 const StylePropertySet** authorSets = &allSets[2]; | |
| 140 | |
| 141 MatchResult result; | |
| 142 | |
| 143 result.addMatchedProperties(uaSets[0]); | |
| 144 result.addMatchedProperties(uaSets[1]); | |
| 145 result.finishAddingUARules(); | |
| 146 | |
| 147 result.addMatchedProperties(authorSets[0]); | |
| 148 result.addMatchedProperties(authorSets[1]); | |
| 149 result.finishAddingAuthorRulesForTreeScope(); | |
| 150 | |
| 151 result.addMatchedProperties(authorSets[2]); | |
| 152 result.addMatchedProperties(authorSets[3]); | |
| 153 result.finishAddingAuthorRulesForTreeScope(); | |
| 154 | |
| 155 testMatchedPropertiesRange(result.allRules(), 6, allSets); | |
| 156 testMatchedPropertiesRange(result.uaRules(), 2, uaSets); | |
| 157 testMatchedPropertiesRange(result.authorRules(), 4, authorSets); | |
| 158 | |
| 159 ImportantAuthorRanges important(result); | |
| 160 | |
| 161 ImportantAuthorRangeIterator iter = important.begin(); | |
| 162 EXPECT_NE(important.end(), iter); | |
| 163 testMatchedPropertiesRange(*iter, 2, &authorSets[2]); | |
| 164 | |
| 165 ++iter; | |
| 166 EXPECT_NE(important.end(), iter); | |
| 167 testMatchedPropertiesRange(*iter, 2, authorSets); | |
| 168 | |
| 169 ++iter; | |
| 170 EXPECT_EQ(important.end(), iter); | |
| 171 } | |
| 172 | |
| 173 } // namespace blink | |
| OLD | NEW |