blob: 0938c0c31d547236c9c5580b8b0b442d9d7726cf [file] [log] [blame]
// Copyright (c) 2018 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 "ui/views/layout/normalized_geometry.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/geometry/size.h"
namespace views {
TEST(NormalizedRectTest, Inset_NormalizedInsets) {
NormalizedRect rect(1, 2, 10, 11);
constexpr NormalizedInsets kInsets(1, 2, 3, 4);
rect.Inset(kInsets);
EXPECT_EQ(2, rect.origin_main());
EXPECT_EQ(4, rect.origin_cross());
EXPECT_EQ(6, rect.size_main());
EXPECT_EQ(5, rect.size_cross());
}
TEST(NormalizedRectTest, Inset_FourValue) {
NormalizedRect rect(1, 2, 10, 11);
rect.Inset(1, 2, 3, 4);
EXPECT_EQ(2, rect.origin_main());
EXPECT_EQ(4, rect.origin_cross());
EXPECT_EQ(6, rect.size_main());
EXPECT_EQ(5, rect.size_cross());
}
TEST(NormalizedRectTest, Inset_TwoValue) {
NormalizedRect rect(1, 2, 10, 11);
rect.Inset(3, 4);
EXPECT_EQ(4, rect.origin_main());
EXPECT_EQ(6, rect.origin_cross());
EXPECT_EQ(4, rect.size_main());
EXPECT_EQ(3, rect.size_cross());
}
TEST(NormalizedRectTest, Inset_Negative) {
NormalizedRect rect(1, 2, 10, 11);
rect.Inset(-1, -2, -3, -4);
EXPECT_EQ(0, rect.origin_main());
EXPECT_EQ(0, rect.origin_cross());
EXPECT_EQ(14, rect.size_main());
EXPECT_EQ(17, rect.size_cross());
}
TEST(NormalizedGeometryTest, GetMainAxis_Size) {
gfx::Size size(1, 2);
EXPECT_EQ(1, GetMainAxis(LayoutOrientation::kHorizontal, size));
EXPECT_EQ(2, GetMainAxis(LayoutOrientation::kVertical, size));
}
TEST(NormalizedGeometryTest, GetMainAxis_SizeBounds) {
SizeBounds size(1, 2);
SizeBounds size2;
EXPECT_EQ(1, GetMainAxis(LayoutOrientation::kHorizontal, size));
EXPECT_EQ(2, GetMainAxis(LayoutOrientation::kVertical, size));
EXPECT_EQ(SizeBound(), GetMainAxis(LayoutOrientation::kHorizontal, size2));
EXPECT_EQ(SizeBound(), GetMainAxis(LayoutOrientation::kVertical, size2));
}
TEST(NormalizedGeometryTest, GetCrossAxis_Size) {
gfx::Size size(1, 2);
EXPECT_EQ(2, GetCrossAxis(LayoutOrientation::kHorizontal, size));
EXPECT_EQ(1, GetCrossAxis(LayoutOrientation::kVertical, size));
}
TEST(NormalizedGeometryTest, GetCrossAxis_SizeBounds) {
SizeBounds size{1, 2};
SizeBounds size2;
EXPECT_EQ(2, GetCrossAxis(LayoutOrientation::kHorizontal, size));
EXPECT_EQ(1, GetCrossAxis(LayoutOrientation::kVertical, size));
EXPECT_EQ(SizeBound(), GetCrossAxis(LayoutOrientation::kHorizontal, size2));
EXPECT_EQ(SizeBound(), GetCrossAxis(LayoutOrientation::kVertical, size2));
}
TEST(NormalizedGeometryTest, SetMainAxis_Size) {
gfx::Size size(1, 2);
SetMainAxis(&size, LayoutOrientation::kHorizontal, 3);
SetMainAxis(&size, LayoutOrientation::kVertical, 4);
EXPECT_EQ(gfx::Size(3, 4), size);
}
TEST(NormalizedGeometryTest, SetMainAxis_SizeBounds) {
SizeBounds size(1, 2);
SetMainAxis(&size, LayoutOrientation::kHorizontal, 3);
SetMainAxis(&size, LayoutOrientation::kVertical, 4);
EXPECT_EQ(SizeBounds(3, 4), size);
SetMainAxis(&size, LayoutOrientation::kHorizontal, SizeBound());
EXPECT_EQ(SizeBounds(SizeBound(), 4), size);
SetMainAxis(&size, LayoutOrientation::kVertical, SizeBound());
EXPECT_EQ(SizeBounds(), size);
}
TEST(NormalizedGeometryTest, SetCrossAxis_Size) {
gfx::Size size(1, 2);
SetCrossAxis(&size, LayoutOrientation::kHorizontal, 3);
SetCrossAxis(&size, LayoutOrientation::kVertical, 4);
EXPECT_EQ(gfx::Size(4, 3), size);
}
TEST(NormalizedGeometryTest, SetCrossAxis_SizeBounds) {
SizeBounds size(1, 2);
SetCrossAxis(&size, LayoutOrientation::kHorizontal, 3);
SetCrossAxis(&size, LayoutOrientation::kVertical, 4);
EXPECT_EQ(SizeBounds(4, 3), size);
SetCrossAxis(&size, LayoutOrientation::kHorizontal, SizeBound());
EXPECT_EQ(SizeBounds(4, SizeBound()), size);
SetCrossAxis(&size, LayoutOrientation::kVertical, SizeBound());
EXPECT_EQ(SizeBounds(), size);
}
} // namespace views