blob: 67bcf5f32063816f9615d2d6c7ae0f14469a4b3c [file] [log] [blame]
// Copyright 2017 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 "core/layout/CollapsedBorderValue.h"
#include "core/style/ComputedStyle.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace blink {
TEST(CollapsedBorderValueTest, Default) {
CollapsedBorderValue v;
EXPECT_EQ(0u, v.Width());
EXPECT_EQ(EBorderStyle::kNone, v.Style());
EXPECT_FALSE(v.Exists());
EXPECT_EQ(kBorderPrecedenceOff, v.Precedence());
EXPECT_FALSE(v.IsVisible());
EXPECT_TRUE(v.IsSameIgnoringColor(v));
EXPECT_TRUE(v.VisuallyEquals(v));
EXPECT_TRUE(v.IsSameIgnoringColor(CollapsedBorderValue()));
EXPECT_TRUE(v.VisuallyEquals(CollapsedBorderValue()));
}
TEST(CollapsedBorderValueTest, SolidZeroWidth) {
auto style = ComputedStyle::Create();
style->SetBorderLeftWidth(0);
style->SetBorderLeftStyle(EBorderStyle::kSolid);
CollapsedBorderValue v(style->BorderLeft(), Color(255, 0, 0),
kBorderPrecedenceCell);
EXPECT_TRUE(v.Exists());
EXPECT_EQ(0u, v.Width());
EXPECT_FALSE(v.IsTransparent());
EXPECT_FALSE(v.IsVisible());
EXPECT_TRUE(v.IsSameIgnoringColor(v));
EXPECT_TRUE(v.VisuallyEquals(v));
EXPECT_FALSE(v.IsSameIgnoringColor(CollapsedBorderValue()));
EXPECT_FALSE(v.IsSameIgnoringColor(
CollapsedBorderValue(ComputedStyle::Create()->BorderLeft(),
Color(0, 255, 0), kBorderPrecedenceCell)));
EXPECT_TRUE(v.VisuallyEquals(CollapsedBorderValue()));
}
TEST(CollapsedBorderValueTest, SolidNonZeroWidthTransparent) {
auto style = ComputedStyle::Create();
style->SetBorderLeftWidth(5);
style->SetBorderLeftStyle(EBorderStyle::kSolid);
EXPECT_EQ(style->BorderLeft().Width(), 5);
CollapsedBorderValue v(style->BorderLeft(), Color(), kBorderPrecedenceCell);
EXPECT_TRUE(v.Exists());
EXPECT_EQ(5u, v.Width());
EXPECT_TRUE(v.IsTransparent());
EXPECT_FALSE(v.IsVisible());
EXPECT_TRUE(v.IsSameIgnoringColor(v));
EXPECT_TRUE(v.VisuallyEquals(v));
EXPECT_FALSE(v.IsSameIgnoringColor(CollapsedBorderValue()));
EXPECT_TRUE(v.IsSameIgnoringColor(CollapsedBorderValue(
style->BorderLeft(), Color(0, 255, 0), kBorderPrecedenceCell)));
EXPECT_TRUE(v.VisuallyEquals(CollapsedBorderValue()));
}
TEST(CollapsedBorderValueTest, None) {
auto style = ComputedStyle::Create();
style->SetBorderLeftWidth(5);
style->SetBorderLeftStyle(EBorderStyle::kNone);
EXPECT_EQ(style->BorderLeft().Width(), 5);
CollapsedBorderValue v(style->BorderLeft(), Color(255, 0, 0),
kBorderPrecedenceCell);
EXPECT_TRUE(v.Exists());
EXPECT_EQ(0u, v.Width());
EXPECT_FALSE(v.IsTransparent());
EXPECT_FALSE(v.IsVisible());
EXPECT_TRUE(v.IsSameIgnoringColor(v));
EXPECT_TRUE(v.VisuallyEquals(v));
EXPECT_FALSE(v.IsSameIgnoringColor(CollapsedBorderValue()));
EXPECT_TRUE(v.IsSameIgnoringColor(
CollapsedBorderValue(ComputedStyle::Create()->BorderLeft(),
Color(0, 255, 0), kBorderPrecedenceCell)));
EXPECT_TRUE(v.VisuallyEquals(CollapsedBorderValue()));
}
TEST(CollapsedBorderValueTest, Hidden) {
auto style = ComputedStyle::Create();
style->SetBorderLeftWidth(5);
style->SetBorderLeftStyle(EBorderStyle::kHidden);
EXPECT_EQ(style->BorderLeft().Width(), 5);
CollapsedBorderValue v(style->BorderLeft(), Color(255, 0, 0),
kBorderPrecedenceCell);
EXPECT_TRUE(v.Exists());
EXPECT_EQ(0u, v.Width());
EXPECT_FALSE(v.IsTransparent());
EXPECT_FALSE(v.IsVisible());
EXPECT_TRUE(v.IsSameIgnoringColor(v));
EXPECT_TRUE(v.VisuallyEquals(v));
EXPECT_FALSE(v.IsSameIgnoringColor(CollapsedBorderValue()));
EXPECT_FALSE(v.IsSameIgnoringColor(
CollapsedBorderValue(ComputedStyle::Create()->BorderLeft(),
Color(0, 255, 0), kBorderPrecedenceCell)));
EXPECT_TRUE(v.VisuallyEquals(CollapsedBorderValue()));
}
TEST(CollapsedBorderValueTest, SolidNonZeroWidthNonTransparent) {
auto style = ComputedStyle::Create();
style->SetBorderLeftWidth(5);
style->SetBorderLeftStyle(EBorderStyle::kSolid);
EXPECT_EQ(style->BorderLeft().Width(), 5);
CollapsedBorderValue v(style->BorderLeft(), Color(255, 0, 0),
kBorderPrecedenceCell);
EXPECT_TRUE(v.Exists());
EXPECT_EQ(5u, v.Width());
EXPECT_FALSE(v.IsTransparent());
EXPECT_TRUE(v.IsVisible());
EXPECT_TRUE(v.IsSameIgnoringColor(v));
EXPECT_TRUE(v.VisuallyEquals(v));
EXPECT_FALSE(v.IsSameIgnoringColor(CollapsedBorderValue()));
EXPECT_FALSE(v.VisuallyEquals(CollapsedBorderValue()));
EXPECT_TRUE(v.IsSameIgnoringColor(CollapsedBorderValue(
style->BorderLeft(), Color(0, 255, 0), kBorderPrecedenceCell)));
EXPECT_FALSE(v.VisuallyEquals(CollapsedBorderValue(
style->BorderLeft(), Color(0, 255, 0), kBorderPrecedenceCell)));
EXPECT_FALSE(v.IsSameIgnoringColor(CollapsedBorderValue(
style->BorderLeft(), Color(255, 0, 0), kBorderPrecedenceTable)));
EXPECT_TRUE(v.VisuallyEquals(CollapsedBorderValue(
style->BorderLeft(), Color(255, 0, 0), kBorderPrecedenceTable)));
}
} // namespace blink