TEST_F(RuleFeatureSetTest, contentPseudo) { updateInvalidationSets(".a ::content .b"); updateInvalidationSets(".a .c"); InvalidationLists invalidationLists; collectInvalidationSetsForClass(invalidationLists, "a"); expectClassInvalidation("c", invalidationLists.descendants); updateInvalidationSets(".a .b"); invalidationLists.descendants.clear(); collectInvalidationSetsForClass(invalidationLists, "a"); expectClassesInvalidation("b", "c", invalidationLists.descendants); }
TEST_F(RuleFeatureSetTest, descendantSiblingAny) { updateInvalidationSets(".u .v ~ :-webkit-any(.w, .x)"); InvalidationLists invalidationLists; collectInvalidationSetsForClass(invalidationLists, "u"); expectClassesInvalidation("w", "x", invalidationLists.descendants); expectNoInvalidation(invalidationLists.siblings); }
TEST_F(RuleFeatureSetTest, any) { updateInvalidationSets(":-webkit-any(.w, .x)"); InvalidationLists invalidationLists; collectInvalidationSetsForClass(invalidationLists, "w"); expectSelfInvalidation(invalidationLists.descendants); expectNoInvalidation(invalidationLists.siblings); }
TEST_F(RuleFeatureSetTest, anySibling) { updateInvalidationSets(":-webkit-any(.q, .r) ~ .s .t"); InvalidationLists invalidationLists; collectInvalidationSetsForClass(invalidationLists, "q"); expectNoInvalidation(invalidationLists.descendants); expectSiblingDescendantInvalidation(UINT_MAX, "s", "t", invalidationLists.siblings); }
TEST_F(RuleFeatureSetTest, interleavedDescendantSibling6) { updateInvalidationSets(".k > .l ~ .m + .n .o + .p"); InvalidationLists invalidationLists; collectInvalidationSetsForClass(invalidationLists, "k"); expectClassInvalidation("p", invalidationLists.descendants); expectNoInvalidation(invalidationLists.siblings); }
TEST_F(RuleFeatureSetTest, interleavedDescendantSibling5) { updateInvalidationSets(".l ~ .m + .n .o + .p"); InvalidationLists invalidationLists; collectInvalidationSetsForClass(invalidationLists, "l"); expectNoInvalidation(invalidationLists.descendants); expectSiblingDescendantInvalidation(UINT_MAX, "n", "p", invalidationLists.siblings); }
TEST_F(RuleFeatureSetTest, interleavedDescendantSibling2) { updateInvalidationSets(".o + .p"); InvalidationLists invalidationLists; collectInvalidationSetsForClass(invalidationLists, "o"); expectNoInvalidation(invalidationLists.descendants); expectSiblingInvalidation(1, "p", invalidationLists.siblings); }