xref: /aosp_15_r20/external/libchrome/ui/gfx/geometry/box_unittest.cc (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
1*635a8641SAndroid Build Coastguard Worker // Copyright 2013 The Chromium Authors. All rights reserved.
2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file.
4*635a8641SAndroid Build Coastguard Worker 
5*635a8641SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h"
6*635a8641SAndroid Build Coastguard Worker #include "ui/gfx/geometry/box_f.h"
7*635a8641SAndroid Build Coastguard Worker 
8*635a8641SAndroid Build Coastguard Worker namespace gfx {
9*635a8641SAndroid Build Coastguard Worker 
TEST(BoxTest,Constructors)10*635a8641SAndroid Build Coastguard Worker TEST(BoxTest, Constructors) {
11*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF(0.f, 0.f, 0.f, 0.f, 0.f, 0.f).ToString(),
12*635a8641SAndroid Build Coastguard Worker             BoxF().ToString());
13*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF(0.f, 0.f, 0.f, -3.f, -5.f, -7.f).ToString(),
14*635a8641SAndroid Build Coastguard Worker             BoxF().ToString());
15*635a8641SAndroid Build Coastguard Worker 
16*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF(0.f, 0.f, 0.f, 3.f, 5.f, 7.f).ToString(),
17*635a8641SAndroid Build Coastguard Worker             BoxF(3.f, 5.f, 7.f).ToString());
18*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF(0.f, 0.f, 0.f, 0.f, 0.f, 0.f).ToString(),
19*635a8641SAndroid Build Coastguard Worker             BoxF(-3.f, -5.f, -7.f).ToString());
20*635a8641SAndroid Build Coastguard Worker 
21*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF(2.f, 4.f, 6.f, 3.f, 5.f, 7.f).ToString(),
22*635a8641SAndroid Build Coastguard Worker             BoxF(Point3F(2.f, 4.f, 6.f), 3.f, 5.f, 7.f).ToString());
23*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF(2.f, 4.f, 6.f, 0.f, 0.f, 0.f).ToString(),
24*635a8641SAndroid Build Coastguard Worker             BoxF(Point3F(2.f, 4.f, 6.f), -3.f, -5.f, -7.f).ToString());
25*635a8641SAndroid Build Coastguard Worker }
26*635a8641SAndroid Build Coastguard Worker 
TEST(BoxTest,IsEmpty)27*635a8641SAndroid Build Coastguard Worker TEST(BoxTest, IsEmpty) {
28*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF(0.f, 0.f, 0.f, 0.f, 0.f, 0.f).IsEmpty());
29*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF(1.f, 2.f, 3.f, 0.f, 0.f, 0.f).IsEmpty());
30*635a8641SAndroid Build Coastguard Worker 
31*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF(0.f, 0.f, 0.f, 2.f, 0.f, 0.f).IsEmpty());
32*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF(1.f, 2.f, 3.f, 2.f, 0.f, 0.f).IsEmpty());
33*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF(0.f, 0.f, 0.f, 0.f, 2.f, 0.f).IsEmpty());
34*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF(1.f, 2.f, 3.f, 0.f, 2.f, 0.f).IsEmpty());
35*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF(0.f, 0.f, 0.f, 0.f, 0.f, 2.f).IsEmpty());
36*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF(1.f, 2.f, 3.f, 0.f, 0.f, 2.f).IsEmpty());
37*635a8641SAndroid Build Coastguard Worker 
38*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF(0.f, 0.f, 0.f, 0.f, 2.f, 2.f).IsEmpty());
39*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF(1.f, 2.f, 3.f, 0.f, 2.f, 2.f).IsEmpty());
40*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF(0.f, 0.f, 0.f, 2.f, 0.f, 2.f).IsEmpty());
41*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF(1.f, 2.f, 3.f, 2.f, 0.f, 2.f).IsEmpty());
42*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF(0.f, 0.f, 0.f, 2.f, 2.f, 0.f).IsEmpty());
43*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF(1.f, 2.f, 3.f, 2.f, 2.f, 0.f).IsEmpty());
44*635a8641SAndroid Build Coastguard Worker 
45*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF(0.f, 0.f, 0.f, 2.f, 2.f, 2.f).IsEmpty());
46*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF(1.f, 2.f, 3.f, 2.f, 2.f, 2.f).IsEmpty());
47*635a8641SAndroid Build Coastguard Worker }
48*635a8641SAndroid Build Coastguard Worker 
TEST(BoxTest,Union)49*635a8641SAndroid Build Coastguard Worker TEST(BoxTest, Union) {
50*635a8641SAndroid Build Coastguard Worker   BoxF empty_box;
51*635a8641SAndroid Build Coastguard Worker   BoxF box1(0.f, 0.f, 0.f, 1.f, 1.f, 1.f);
52*635a8641SAndroid Build Coastguard Worker   BoxF box2(0.f, 0.f, 0.f, 4.f, 6.f, 8.f);
53*635a8641SAndroid Build Coastguard Worker   BoxF box3(3.f, 4.f, 5.f, 6.f, 4.f, 0.f);
54*635a8641SAndroid Build Coastguard Worker 
55*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(empty_box.ToString(), UnionBoxes(empty_box, empty_box).ToString());
56*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(box1.ToString(), UnionBoxes(empty_box, box1).ToString());
57*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(box1.ToString(), UnionBoxes(box1, empty_box).ToString());
58*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(box2.ToString(), UnionBoxes(empty_box, box2).ToString());
59*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(box2.ToString(), UnionBoxes(box2, empty_box).ToString());
60*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(box3.ToString(), UnionBoxes(empty_box, box3).ToString());
61*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(box3.ToString(), UnionBoxes(box3, empty_box).ToString());
62*635a8641SAndroid Build Coastguard Worker 
63*635a8641SAndroid Build Coastguard Worker   // box_1 is contained in box_2
64*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(box2.ToString(), UnionBoxes(box1, box2).ToString());
65*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(box2.ToString(), UnionBoxes(box2, box1).ToString());
66*635a8641SAndroid Build Coastguard Worker 
67*635a8641SAndroid Build Coastguard Worker   // box_1 and box_3 are disjoint
68*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF(0.f, 0.f, 0.f, 9.f, 8.f, 5.f).ToString(),
69*635a8641SAndroid Build Coastguard Worker             UnionBoxes(box1, box3).ToString());
70*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF(0.f, 0.f, 0.f, 9.f, 8.f, 5.f).ToString(),
71*635a8641SAndroid Build Coastguard Worker             UnionBoxes(box3, box1).ToString());
72*635a8641SAndroid Build Coastguard Worker 
73*635a8641SAndroid Build Coastguard Worker   // box_2 and box_3 intersect, but neither contains the other
74*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF(0.f, 0.f, 0.f, 9.f, 8.f, 8.f).ToString(),
75*635a8641SAndroid Build Coastguard Worker             UnionBoxes(box2, box3).ToString());
76*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF(0.f, 0.f, 0.f, 9.f, 8.f, 8.f).ToString(),
77*635a8641SAndroid Build Coastguard Worker             UnionBoxes(box3, box2).ToString());
78*635a8641SAndroid Build Coastguard Worker }
79*635a8641SAndroid Build Coastguard Worker 
TEST(BoxTest,ExpandTo)80*635a8641SAndroid Build Coastguard Worker TEST(BoxTest, ExpandTo) {
81*635a8641SAndroid Build Coastguard Worker   BoxF box1;
82*635a8641SAndroid Build Coastguard Worker   BoxF box2(0.f, 0.f, 0.f, 1.f, 1.f, 1.f);
83*635a8641SAndroid Build Coastguard Worker   BoxF box3(1.f, 1.f, 1.f, 0.f, 0.f, 0.f);
84*635a8641SAndroid Build Coastguard Worker 
85*635a8641SAndroid Build Coastguard Worker   Point3F point1(0.5f, 0.5f, 0.5f);
86*635a8641SAndroid Build Coastguard Worker   Point3F point2(-0.5f, -0.5f, -0.5f);
87*635a8641SAndroid Build Coastguard Worker 
88*635a8641SAndroid Build Coastguard Worker   BoxF expected1_1(0.f, 0.f, 0.f, 0.5f, 0.5f, 0.5f);
89*635a8641SAndroid Build Coastguard Worker   BoxF expected1_2(-0.5f, -0.5f, -0.5f, 1.f, 1.f, 1.f);
90*635a8641SAndroid Build Coastguard Worker 
91*635a8641SAndroid Build Coastguard Worker   BoxF expected2_1 = box2;
92*635a8641SAndroid Build Coastguard Worker   BoxF expected2_2(-0.5f, -0.5f, -0.5f, 1.5f, 1.5f, 1.5f);
93*635a8641SAndroid Build Coastguard Worker 
94*635a8641SAndroid Build Coastguard Worker   BoxF expected3_1(0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f);
95*635a8641SAndroid Build Coastguard Worker   BoxF expected3_2(-0.5f, -0.5f, -0.5f, 1.5f, 1.5f, 1.5f);
96*635a8641SAndroid Build Coastguard Worker 
97*635a8641SAndroid Build Coastguard Worker   box1.ExpandTo(point1);
98*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(expected1_1.ToString(), box1.ToString());
99*635a8641SAndroid Build Coastguard Worker   box1.ExpandTo(point2);
100*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(expected1_2.ToString(), box1.ToString());
101*635a8641SAndroid Build Coastguard Worker 
102*635a8641SAndroid Build Coastguard Worker   box2.ExpandTo(point1);
103*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(expected2_1.ToString(), box2.ToString());
104*635a8641SAndroid Build Coastguard Worker   box2.ExpandTo(point2);
105*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(expected2_2.ToString(), box2.ToString());
106*635a8641SAndroid Build Coastguard Worker 
107*635a8641SAndroid Build Coastguard Worker   box3.ExpandTo(point1);
108*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(expected3_1.ToString(), box3.ToString());
109*635a8641SAndroid Build Coastguard Worker   box3.ExpandTo(point2);
110*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(expected3_2.ToString(), box3.ToString());
111*635a8641SAndroid Build Coastguard Worker }
112*635a8641SAndroid Build Coastguard Worker 
TEST(BoxTest,Scale)113*635a8641SAndroid Build Coastguard Worker TEST(BoxTest, Scale) {
114*635a8641SAndroid Build Coastguard Worker   BoxF box1(2.f, 3.f, 4.f, 5.f, 6.f, 7.f);
115*635a8641SAndroid Build Coastguard Worker 
116*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF().ToString(), ScaleBox(box1, 0.f).ToString());
117*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(box1.ToString(), ScaleBox(box1, 1.f).ToString());
118*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF(4.f, 12.f, 24.f, 10.f, 24.f, 42.f).ToString(),
119*635a8641SAndroid Build Coastguard Worker             ScaleBox(box1, 2.f, 4.f, 6.f).ToString());
120*635a8641SAndroid Build Coastguard Worker 
121*635a8641SAndroid Build Coastguard Worker   BoxF box2 = box1;
122*635a8641SAndroid Build Coastguard Worker   box2.Scale(0.f);
123*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF().ToString(), box2.ToString());
124*635a8641SAndroid Build Coastguard Worker 
125*635a8641SAndroid Build Coastguard Worker   box2 = box1;
126*635a8641SAndroid Build Coastguard Worker   box2.Scale(1.f);
127*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(box1.ToString(), box2.ToString());
128*635a8641SAndroid Build Coastguard Worker 
129*635a8641SAndroid Build Coastguard Worker   box2.Scale(2.f, 4.f, 6.f);
130*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF(4.f, 12.f, 24.f, 10.f, 24.f, 42.f).ToString(),
131*635a8641SAndroid Build Coastguard Worker             box2.ToString());
132*635a8641SAndroid Build Coastguard Worker }
133*635a8641SAndroid Build Coastguard Worker 
TEST(BoxTest,Equals)134*635a8641SAndroid Build Coastguard Worker TEST(BoxTest, Equals) {
135*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF() == BoxF());
136*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF(2.f, 3.f, 4.f, 6.f, 8.f, 10.f) ==
137*635a8641SAndroid Build Coastguard Worker               BoxF(2.f, 3.f, 4.f, 6.f, 8.f, 10.f));
138*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF() == BoxF(0.f, 0.f, 0.f, 0.f, 0.f, 1.f));
139*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF() == BoxF(0.f, 0.f, 0.f, 0.f, 1.f, 0.f));
140*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF() == BoxF(0.f, 0.f, 0.f, 1.f, 0.f, 0.f));
141*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF() == BoxF(0.f, 0.f, 1.f, 0.f, 0.f, 0.f));
142*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF() == BoxF(0.f, 1.f, 0.f, 0.f, 0.f, 0.f));
143*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF() == BoxF(1.f, 0.f, 0.f, 0.f, 0.f, 0.f));
144*635a8641SAndroid Build Coastguard Worker }
145*635a8641SAndroid Build Coastguard Worker 
TEST(BoxTest,NotEquals)146*635a8641SAndroid Build Coastguard Worker TEST(BoxTest, NotEquals) {
147*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF() != BoxF());
148*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(BoxF(2.f, 3.f, 4.f, 6.f, 8.f, 10.f) !=
149*635a8641SAndroid Build Coastguard Worker                BoxF(2.f, 3.f, 4.f, 6.f, 8.f, 10.f));
150*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF() != BoxF(0.f, 0.f, 0.f, 0.f, 0.f, 1.f));
151*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF() != BoxF(0.f, 0.f, 0.f, 0.f, 1.f, 0.f));
152*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF() != BoxF(0.f, 0.f, 0.f, 1.f, 0.f, 0.f));
153*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF() != BoxF(0.f, 0.f, 1.f, 0.f, 0.f, 0.f));
154*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF() != BoxF(0.f, 1.f, 0.f, 0.f, 0.f, 0.f));
155*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(BoxF() != BoxF(1.f, 0.f, 0.f, 0.f, 0.f, 0.f));
156*635a8641SAndroid Build Coastguard Worker }
157*635a8641SAndroid Build Coastguard Worker 
158*635a8641SAndroid Build Coastguard Worker 
TEST(BoxTest,Offset)159*635a8641SAndroid Build Coastguard Worker TEST(BoxTest, Offset) {
160*635a8641SAndroid Build Coastguard Worker   BoxF box1(2.f, 3.f, 4.f, 5.f, 6.f, 7.f);
161*635a8641SAndroid Build Coastguard Worker 
162*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(box1.ToString(), (box1 + Vector3dF(0.f, 0.f, 0.f)).ToString());
163*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF(3.f, 1.f, 0.f, 5.f, 6.f, 7.f).ToString(),
164*635a8641SAndroid Build Coastguard Worker             (box1 + Vector3dF(1.f, -2.f, -4.f)).ToString());
165*635a8641SAndroid Build Coastguard Worker 
166*635a8641SAndroid Build Coastguard Worker   BoxF box2 = box1;
167*635a8641SAndroid Build Coastguard Worker   box2 += Vector3dF(0.f, 0.f, 0.f);
168*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(box1.ToString(), box2.ToString());
169*635a8641SAndroid Build Coastguard Worker 
170*635a8641SAndroid Build Coastguard Worker   box2 += Vector3dF(1.f, -2.f, -4.f);
171*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(BoxF(3.f, 1.f, 0.f, 5.f, 6.f, 7.f).ToString(),
172*635a8641SAndroid Build Coastguard Worker             box2.ToString());
173*635a8641SAndroid Build Coastguard Worker }
174*635a8641SAndroid Build Coastguard Worker 
175*635a8641SAndroid Build Coastguard Worker }  // namespace gfx
176