1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/basictypes.h" 6 #include "testing/gtest/include/gtest/gtest.h" 7 #include "ui/gfx/box_f.h" 8 9 namespace gfx { 10 11 TEST(BoxTest, Constructors) { 12 EXPECT_EQ(BoxF(0.f, 0.f, 0.f, 0.f, 0.f, 0.f).ToString(), 13 BoxF().ToString()); 14 EXPECT_EQ(BoxF(0.f, 0.f, 0.f, -3.f, -5.f, -7.f).ToString(), 15 BoxF().ToString()); 16 17 EXPECT_EQ(BoxF(0.f, 0.f, 0.f, 3.f, 5.f, 7.f).ToString(), 18 BoxF(3.f, 5.f, 7.f).ToString()); 19 EXPECT_EQ(BoxF(0.f, 0.f, 0.f, 0.f, 0.f, 0.f).ToString(), 20 BoxF(-3.f, -5.f, -7.f).ToString()); 21 22 EXPECT_EQ(BoxF(2.f, 4.f, 6.f, 3.f, 5.f, 7.f).ToString(), 23 BoxF(Point3F(2.f, 4.f, 6.f), 3.f, 5.f, 7.f).ToString()); 24 EXPECT_EQ(BoxF(2.f, 4.f, 6.f, 0.f, 0.f, 0.f).ToString(), 25 BoxF(Point3F(2.f, 4.f, 6.f), -3.f, -5.f, -7.f).ToString()); 26 } 27 28 TEST(BoxTest, IsEmpty) { 29 EXPECT_TRUE(BoxF(0.f, 0.f, 0.f, 0.f, 0.f, 0.f).IsEmpty()); 30 EXPECT_TRUE(BoxF(1.f, 2.f, 3.f, 0.f, 0.f, 0.f).IsEmpty()); 31 32 EXPECT_TRUE(BoxF(0.f, 0.f, 0.f, 2.f, 0.f, 0.f).IsEmpty()); 33 EXPECT_TRUE(BoxF(1.f, 2.f, 3.f, 2.f, 0.f, 0.f).IsEmpty()); 34 EXPECT_TRUE(BoxF(0.f, 0.f, 0.f, 0.f, 2.f, 0.f).IsEmpty()); 35 EXPECT_TRUE(BoxF(1.f, 2.f, 3.f, 0.f, 2.f, 0.f).IsEmpty()); 36 EXPECT_TRUE(BoxF(0.f, 0.f, 0.f, 0.f, 0.f, 2.f).IsEmpty()); 37 EXPECT_TRUE(BoxF(1.f, 2.f, 3.f, 0.f, 0.f, 2.f).IsEmpty()); 38 39 EXPECT_FALSE(BoxF(0.f, 0.f, 0.f, 0.f, 2.f, 2.f).IsEmpty()); 40 EXPECT_FALSE(BoxF(1.f, 2.f, 3.f, 0.f, 2.f, 2.f).IsEmpty()); 41 EXPECT_FALSE(BoxF(0.f, 0.f, 0.f, 2.f, 0.f, 2.f).IsEmpty()); 42 EXPECT_FALSE(BoxF(1.f, 2.f, 3.f, 2.f, 0.f, 2.f).IsEmpty()); 43 EXPECT_FALSE(BoxF(0.f, 0.f, 0.f, 2.f, 2.f, 0.f).IsEmpty()); 44 EXPECT_FALSE(BoxF(1.f, 2.f, 3.f, 2.f, 2.f, 0.f).IsEmpty()); 45 46 EXPECT_FALSE(BoxF(0.f, 0.f, 0.f, 2.f, 2.f, 2.f).IsEmpty()); 47 EXPECT_FALSE(BoxF(1.f, 2.f, 3.f, 2.f, 2.f, 2.f).IsEmpty()); 48 } 49 50 TEST(BoxTest, Union) { 51 BoxF empty_box; 52 BoxF box1(0.f, 0.f, 0.f, 1.f, 1.f, 1.f); 53 BoxF box2(0.f, 0.f, 0.f, 4.f, 6.f, 8.f); 54 BoxF box3(3.f, 4.f, 5.f, 6.f, 4.f, 0.f); 55 56 EXPECT_EQ(empty_box.ToString(), UnionBoxes(empty_box, empty_box).ToString()); 57 EXPECT_EQ(box1.ToString(), UnionBoxes(empty_box, box1).ToString()); 58 EXPECT_EQ(box1.ToString(), UnionBoxes(box1, empty_box).ToString()); 59 EXPECT_EQ(box2.ToString(), UnionBoxes(empty_box, box2).ToString()); 60 EXPECT_EQ(box2.ToString(), UnionBoxes(box2, empty_box).ToString()); 61 EXPECT_EQ(box3.ToString(), UnionBoxes(empty_box, box3).ToString()); 62 EXPECT_EQ(box3.ToString(), UnionBoxes(box3, empty_box).ToString()); 63 64 // box_1 is contained in box_2 65 EXPECT_EQ(box2.ToString(), UnionBoxes(box1, box2).ToString()); 66 EXPECT_EQ(box2.ToString(), UnionBoxes(box2, box1).ToString()); 67 68 // box_1 and box_3 are disjoint 69 EXPECT_EQ(BoxF(0.f, 0.f, 0.f, 9.f, 8.f, 5.f).ToString(), 70 UnionBoxes(box1, box3).ToString()); 71 EXPECT_EQ(BoxF(0.f, 0.f, 0.f, 9.f, 8.f, 5.f).ToString(), 72 UnionBoxes(box3, box1).ToString()); 73 74 // box_2 and box_3 intersect, but neither contains the other 75 EXPECT_EQ(BoxF(0.f, 0.f, 0.f, 9.f, 8.f, 8.f).ToString(), 76 UnionBoxes(box2, box3).ToString()); 77 EXPECT_EQ(BoxF(0.f, 0.f, 0.f, 9.f, 8.f, 8.f).ToString(), 78 UnionBoxes(box3, box2).ToString()); 79 } 80 81 TEST(BoxTest, Scale) { 82 BoxF box1(2.f, 3.f, 4.f, 5.f, 6.f, 7.f); 83 84 EXPECT_EQ(BoxF().ToString(), ScaleBox(box1, 0.f).ToString()); 85 EXPECT_EQ(box1.ToString(), ScaleBox(box1, 1.f).ToString()); 86 EXPECT_EQ(BoxF(4.f, 12.f, 24.f, 10.f, 24.f, 42.f).ToString(), 87 ScaleBox(box1, 2.f, 4.f, 6.f).ToString()); 88 89 BoxF box2 = box1; 90 box2.Scale(0.f); 91 EXPECT_EQ(BoxF().ToString(), box2.ToString()); 92 93 box2 = box1; 94 box2.Scale(1.f); 95 EXPECT_EQ(box1.ToString(), box2.ToString()); 96 97 box2.Scale(2.f, 4.f, 6.f); 98 EXPECT_EQ(BoxF(4.f, 12.f, 24.f, 10.f, 24.f, 42.f).ToString(), 99 box2.ToString()); 100 } 101 102 TEST(BoxTest, Equals) { 103 EXPECT_TRUE(BoxF() == BoxF()); 104 EXPECT_TRUE(BoxF(2.f, 3.f, 4.f, 6.f, 8.f, 10.f) == 105 BoxF(2.f, 3.f, 4.f, 6.f, 8.f, 10.f)); 106 EXPECT_FALSE(BoxF() == BoxF(0.f, 0.f, 0.f, 0.f, 0.f, 1.f)); 107 EXPECT_FALSE(BoxF() == BoxF(0.f, 0.f, 0.f, 0.f, 1.f, 0.f)); 108 EXPECT_FALSE(BoxF() == BoxF(0.f, 0.f, 0.f, 1.f, 0.f, 0.f)); 109 EXPECT_FALSE(BoxF() == BoxF(0.f, 0.f, 1.f, 0.f, 0.f, 0.f)); 110 EXPECT_FALSE(BoxF() == BoxF(0.f, 1.f, 0.f, 0.f, 0.f, 0.f)); 111 EXPECT_FALSE(BoxF() == BoxF(1.f, 0.f, 0.f, 0.f, 0.f, 0.f)); 112 } 113 114 TEST(BoxTest, NotEquals) { 115 EXPECT_FALSE(BoxF() != BoxF()); 116 EXPECT_FALSE(BoxF(2.f, 3.f, 4.f, 6.f, 8.f, 10.f) != 117 BoxF(2.f, 3.f, 4.f, 6.f, 8.f, 10.f)); 118 EXPECT_TRUE(BoxF() != BoxF(0.f, 0.f, 0.f, 0.f, 0.f, 1.f)); 119 EXPECT_TRUE(BoxF() != BoxF(0.f, 0.f, 0.f, 0.f, 1.f, 0.f)); 120 EXPECT_TRUE(BoxF() != BoxF(0.f, 0.f, 0.f, 1.f, 0.f, 0.f)); 121 EXPECT_TRUE(BoxF() != BoxF(0.f, 0.f, 1.f, 0.f, 0.f, 0.f)); 122 EXPECT_TRUE(BoxF() != BoxF(0.f, 1.f, 0.f, 0.f, 0.f, 0.f)); 123 EXPECT_TRUE(BoxF() != BoxF(1.f, 0.f, 0.f, 0.f, 0.f, 0.f)); 124 } 125 126 127 TEST(BoxTest, Offset) { 128 BoxF box1(2.f, 3.f, 4.f, 5.f, 6.f, 7.f); 129 130 EXPECT_EQ(box1.ToString(), (box1 + Vector3dF(0.f, 0.f, 0.f)).ToString()); 131 EXPECT_EQ(BoxF(3.f, 1.f, 0.f, 5.f, 6.f, 7.f).ToString(), 132 (box1 + Vector3dF(1.f, -2.f, -4.f)).ToString()); 133 134 BoxF box2 = box1; 135 box2 += Vector3dF(0.f, 0.f, 0.f); 136 EXPECT_EQ(box1.ToString(), box2.ToString()); 137 138 box2 += Vector3dF(1.f, -2.f, -4.f); 139 EXPECT_EQ(BoxF(3.f, 1.f, 0.f, 5.f, 6.f, 7.f).ToString(), 140 box2.ToString()); 141 } 142 143 } // namespace gfx 144