diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/css/resolver/cascade_filter_test.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/css/resolver/cascade_filter_test.cc | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/core/css/resolver/cascade_filter_test.cc b/chromium/third_party/blink/renderer/core/css/resolver/cascade_filter_test.cc new file mode 100644 index 00000000000..2ef0adaa4f6 --- /dev/null +++ b/chromium/third_party/blink/renderer/core/css/resolver/cascade_filter_test.cc @@ -0,0 +1,121 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/core/css/resolver/cascade_filter.h" +#include <gtest/gtest.h> + +namespace blink { + +TEST(CascadeFilterTest, FilterNothing) { + CascadeFilter filter; + EXPECT_FALSE(filter.Rejects(GetCSSPropertyBackgroundColor())); + EXPECT_FALSE(filter.Rejects(GetCSSPropertyColor())); + EXPECT_FALSE(filter.Rejects(GetCSSPropertyDisplay())); + EXPECT_FALSE(filter.Rejects(GetCSSPropertyFloat())); + EXPECT_FALSE(filter.Rejects(GetCSSPropertyInternalVisitedColor())); +} + +TEST(CascadeFilterTest, ConstructorBehavesLikeSingleAdd) { + EXPECT_EQ(CascadeFilter().Add(CSSProperty::kInherited, true), + CascadeFilter(CSSProperty::kInherited, true)); + EXPECT_EQ(CascadeFilter().Add(CSSProperty::kInherited, false), + CascadeFilter(CSSProperty::kInherited, false)); +} + +TEST(CascadeFilterTest, Equals) { + EXPECT_EQ(CascadeFilter(CSSProperty::kInherited, true), + CascadeFilter(CSSProperty::kInherited, true)); + EXPECT_EQ(CascadeFilter(CSSProperty::kInherited, false), + CascadeFilter(CSSProperty::kInherited, false)); +} + +TEST(CascadeFilterTest, NotEqualsMask) { + EXPECT_NE(CascadeFilter(CSSProperty::kInherited, true), + CascadeFilter(CSSProperty::kInherited, false)); + EXPECT_NE(CascadeFilter(CSSProperty::kInherited, false), + CascadeFilter(CSSProperty::kVisited, false)); + EXPECT_NE(CascadeFilter(CSSProperty::kInherited, false), + CascadeFilter(CSSProperty::kInherited, false) + .Add(CSSProperty::kVisited, false)); + EXPECT_NE(CascadeFilter(CSSProperty::kInherited, false), CascadeFilter()); +} + +TEST(CascadeFilterTest, FilterInherited) { + CascadeFilter filter(CSSProperty::kInherited, true); + EXPECT_FALSE(filter.Rejects(GetCSSPropertyBackgroundColor())); + EXPECT_TRUE(filter.Rejects(GetCSSPropertyColor())); + EXPECT_TRUE(filter.Rejects(GetCSSPropertyFontSize())); + EXPECT_FALSE(filter.Rejects(GetCSSPropertyDisplay())); + EXPECT_FALSE(filter.Rejects(GetCSSPropertyFloat())); + EXPECT_TRUE(filter.Rejects(GetCSSPropertyInternalVisitedColor())); +} + +TEST(CascadeFilterTest, FilterNonInherited) { + CascadeFilter filter(CSSProperty::kInherited, false); + EXPECT_TRUE(filter.Rejects(GetCSSPropertyBackgroundColor())); + EXPECT_FALSE(filter.Rejects(GetCSSPropertyColor())); + EXPECT_TRUE(filter.Rejects(GetCSSPropertyDisplay())); + EXPECT_TRUE(filter.Rejects(GetCSSPropertyFloat())); + EXPECT_FALSE(filter.Rejects(GetCSSPropertyInternalVisitedColor())); +} + +TEST(CascadeFilterTest, FilterVisitedAndInherited) { + auto filter = CascadeFilter() + .Add(CSSProperty::kVisited, true) + .Add(CSSProperty::kInherited, true); + EXPECT_FALSE(filter.Rejects(GetCSSPropertyBackgroundColor())); + EXPECT_TRUE(filter.Rejects(GetCSSPropertyColor())); + EXPECT_FALSE(filter.Rejects(GetCSSPropertyDisplay())); + EXPECT_FALSE(filter.Rejects(GetCSSPropertyFloat())); + EXPECT_TRUE(filter.Rejects(GetCSSPropertyInternalVisitedBackgroundColor())); +} + +TEST(CascadeFilterTest, FilterVisitedAndNonInherited) { + auto filter = CascadeFilter() + .Add(CSSProperty::kVisited, true) + .Add(CSSProperty::kInherited, false); + EXPECT_TRUE(filter.Rejects(GetCSSPropertyBackgroundColor())); + EXPECT_FALSE(filter.Rejects(GetCSSPropertyColor())); + EXPECT_TRUE(filter.Rejects(GetCSSPropertyDisplay())); + EXPECT_TRUE(filter.Rejects(GetCSSPropertyFloat())); + EXPECT_TRUE(filter.Rejects(GetCSSPropertyInternalVisitedColor())); +} + +TEST(CascadeFilterTest, RejectFlag) { + auto filter = CascadeFilter() + .Add(CSSProperty::kVisited, true) + .Add(CSSProperty::kInherited, false); + EXPECT_TRUE(filter.Rejects(CSSProperty::kVisited, true)); + EXPECT_TRUE(filter.Rejects(CSSProperty::kInherited, false)); + EXPECT_FALSE(filter.Rejects(CSSProperty::kVisited, false)); + EXPECT_FALSE(filter.Rejects(CSSProperty::kInherited, true)); +} + +TEST(CascadeFilterTest, AddDoesNotOverwrite) { + auto filter = CascadeFilter() + .Add(CSSProperty::kVisited, true) + .Add(CSSProperty::kInherited, false); + EXPECT_TRUE(filter.Rejects(CSSProperty::kVisited, true)); + EXPECT_TRUE(filter.Rejects(CSSProperty::kInherited, false)); + filter = filter.Add(CSSProperty::kVisited, false); + filter = filter.Add(CSSProperty::kInherited, true); + // Add has no effect if flags are already set: + EXPECT_TRUE(filter.Rejects(CSSProperty::kVisited, true)); + EXPECT_TRUE(filter.Rejects(CSSProperty::kInherited, false)); +} + +TEST(CascadeFilterTest, SetDoesOverwrite) { + auto filter = CascadeFilter() + .Add(CSSProperty::kVisited, true) + .Add(CSSProperty::kInherited, false); + EXPECT_TRUE(filter.Rejects(CSSProperty::kVisited, true)); + EXPECT_TRUE(filter.Rejects(CSSProperty::kInherited, false)); + filter = filter.Set(CSSProperty::kVisited, false); + filter = filter.Set(CSSProperty::kInherited, true); + // Add has no effect if flags are already set: + EXPECT_TRUE(filter.Rejects(CSSProperty::kVisited, false)); + EXPECT_TRUE(filter.Rejects(CSSProperty::kInherited, true)); +} + +} // namespace blink |