Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(241)

Side by Side Diff: ui/gfx/range/range_unittest.cc

Issue 876873003: Add float version of gfx::Range (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: revert to non-template implementation Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "testing/gtest/include/gtest/gtest.h" 5 #include "testing/gtest/include/gtest/gtest.h"
6 #include "ui/gfx/range/range.h" 6 #include "ui/gfx/range/range.h"
7 #include "ui/gfx/range/range_f.h"
7 8
8 TEST(RangeTest, EmptyInit) { 9 namespace {
9 gfx::Range r; 10
11 template <typename T>
12 class RangeTest : public testing::Test {
13 };
14
15 typedef testing::Types<gfx::Range, gfx::RangeF> RangeTypes;
16 TYPED_TEST_CASE(RangeTest, RangeTypes);
17
18 template <typename T>
19 void TestContainsAndIntersects(const T& r1,
20 const T& r2,
21 const T& r3) {
22 EXPECT_TRUE(r1.Intersects(r1));
23 EXPECT_TRUE(r1.Contains(r1));
24 EXPECT_EQ(T(10, 12), r1.Intersect(r1));
25
26 EXPECT_FALSE(r1.Intersects(r2));
27 EXPECT_FALSE(r1.Contains(r2));
28 EXPECT_TRUE(r1.Intersect(r2).is_empty());
29 EXPECT_FALSE(r2.Intersects(r1));
30 EXPECT_FALSE(r2.Contains(r1));
31 EXPECT_TRUE(r2.Intersect(r1).is_empty());
32
33 EXPECT_TRUE(r1.Intersects(r3));
34 EXPECT_TRUE(r3.Intersects(r1));
35 EXPECT_TRUE(r3.Contains(r1));
36 EXPECT_FALSE(r1.Contains(r3));
37 EXPECT_EQ(T(10, 12), r1.Intersect(r3));
38 EXPECT_EQ(T(10, 12), r3.Intersect(r1));
39
40 EXPECT_TRUE(r2.Intersects(r3));
41 EXPECT_TRUE(r3.Intersects(r2));
42 EXPECT_FALSE(r3.Contains(r2));
43 EXPECT_FALSE(r2.Contains(r3));
44 EXPECT_EQ(T(5, 8), r2.Intersect(r3));
45 EXPECT_EQ(T(5, 8), r3.Intersect(r2));
46 }
47
48 } // namespace
49
50 TYPED_TEST(RangeTest, EmptyInit) {
51 TypeParam r;
10 EXPECT_EQ(0U, r.start()); 52 EXPECT_EQ(0U, r.start());
11 EXPECT_EQ(0U, r.end()); 53 EXPECT_EQ(0U, r.end());
12 EXPECT_EQ(0U, r.length()); 54 EXPECT_EQ(0U, r.length());
13 EXPECT_FALSE(r.is_reversed()); 55 EXPECT_FALSE(r.is_reversed());
14 EXPECT_TRUE(r.is_empty()); 56 EXPECT_TRUE(r.is_empty());
15 EXPECT_TRUE(r.IsValid()); 57 EXPECT_TRUE(r.IsValid());
16 EXPECT_EQ(0U, r.GetMin()); 58 EXPECT_EQ(0U, r.GetMin());
17 EXPECT_EQ(0U, r.GetMax()); 59 EXPECT_EQ(0U, r.GetMax());
18 } 60 }
19 61
20 TEST(RangeTest, StartEndInit) { 62 TYPED_TEST(RangeTest, StartEndInit) {
21 gfx::Range r(10, 15); 63 TypeParam r(10, 15);
22 EXPECT_EQ(10U, r.start()); 64 EXPECT_EQ(10U, r.start());
23 EXPECT_EQ(15U, r.end()); 65 EXPECT_EQ(15U, r.end());
24 EXPECT_EQ(5U, r.length()); 66 EXPECT_EQ(5U, r.length());
25 EXPECT_FALSE(r.is_reversed()); 67 EXPECT_FALSE(r.is_reversed());
26 EXPECT_FALSE(r.is_empty()); 68 EXPECT_FALSE(r.is_empty());
27 EXPECT_TRUE(r.IsValid()); 69 EXPECT_TRUE(r.IsValid());
28 EXPECT_EQ(10U, r.GetMin()); 70 EXPECT_EQ(10U, r.GetMin());
29 EXPECT_EQ(15U, r.GetMax()); 71 EXPECT_EQ(15U, r.GetMax());
30 } 72 }
31 73
32 TEST(RangeTest, StartEndReversedInit) { 74 TYPED_TEST(RangeTest, StartEndReversedInit) {
33 gfx::Range r(10, 5); 75 TypeParam r(10, 5);
34 EXPECT_EQ(10U, r.start()); 76 EXPECT_EQ(10U, r.start());
35 EXPECT_EQ(5U, r.end()); 77 EXPECT_EQ(5U, r.end());
36 EXPECT_EQ(5U, r.length()); 78 EXPECT_EQ(5U, r.length());
37 EXPECT_TRUE(r.is_reversed()); 79 EXPECT_TRUE(r.is_reversed());
38 EXPECT_FALSE(r.is_empty()); 80 EXPECT_FALSE(r.is_empty());
39 EXPECT_TRUE(r.IsValid()); 81 EXPECT_TRUE(r.IsValid());
40 EXPECT_EQ(5U, r.GetMin()); 82 EXPECT_EQ(5U, r.GetMin());
41 EXPECT_EQ(10U, r.GetMax()); 83 EXPECT_EQ(10U, r.GetMax());
42 } 84 }
43 85
44 TEST(RangeTest, PositionInit) { 86 TYPED_TEST(RangeTest, PositionInit) {
45 gfx::Range r(12); 87 TypeParam r(12);
46 EXPECT_EQ(12U, r.start()); 88 EXPECT_EQ(12U, r.start());
47 EXPECT_EQ(12U, r.end()); 89 EXPECT_EQ(12U, r.end());
48 EXPECT_EQ(0U, r.length()); 90 EXPECT_EQ(0U, r.length());
49 EXPECT_FALSE(r.is_reversed()); 91 EXPECT_FALSE(r.is_reversed());
50 EXPECT_TRUE(r.is_empty()); 92 EXPECT_TRUE(r.is_empty());
51 EXPECT_TRUE(r.IsValid()); 93 EXPECT_TRUE(r.IsValid());
52 EXPECT_EQ(12U, r.GetMin()); 94 EXPECT_EQ(12U, r.GetMin());
53 EXPECT_EQ(12U, r.GetMax()); 95 EXPECT_EQ(12U, r.GetMax());
54 } 96 }
55 97
56 TEST(RangeTest, InvalidRange) { 98 TYPED_TEST(RangeTest, InvalidRange) {
57 gfx::Range r(gfx::Range::InvalidRange()); 99 TypeParam r(TypeParam::InvalidRange());
58 EXPECT_EQ(0U, r.length());
msw 2015/02/12 21:01:04 nit: please retain the length==0, start==end, reve
ckocagil 2015/02/13 18:47:47 start==end isn't possible since NaN isn't equal to
msw 2015/02/13 19:29:31 Does this mean you can't test against an invalid r
ckocagil 2015/02/13 20:05:50 Good call. Done. - Restored "start==end" case - A
59 EXPECT_EQ(r.start(), r.end());
60 EXPECT_FALSE(r.is_reversed());
61 EXPECT_TRUE(r.is_empty()); 100 EXPECT_TRUE(r.is_empty());
62 EXPECT_FALSE(r.IsValid()); 101 EXPECT_FALSE(r.IsValid());
63 } 102 }
64 103
65 TEST(RangeTest, Equality) { 104 TYPED_TEST(RangeTest, Equality) {
66 gfx::Range r1(10, 4); 105 TypeParam r1(10, 4);
67 gfx::Range r2(10, 4); 106 TypeParam r2(10, 4);
68 gfx::Range r3(10, 2); 107 TypeParam r3(10, 2);
69 EXPECT_EQ(r1, r2); 108 EXPECT_EQ(r1, r2);
70 EXPECT_NE(r1, r3); 109 EXPECT_NE(r1, r3);
71 EXPECT_NE(r2, r3); 110 EXPECT_NE(r2, r3);
72 111
73 gfx::Range r4(11, 4); 112 TypeParam r4(11, 4);
74 EXPECT_NE(r1, r4); 113 EXPECT_NE(r1, r4);
75 EXPECT_NE(r2, r4); 114 EXPECT_NE(r2, r4);
76 EXPECT_NE(r3, r4); 115 EXPECT_NE(r3, r4);
77 116
78 gfx::Range r5(12, 5); 117 TypeParam r5(12, 5);
79 EXPECT_NE(r1, r5); 118 EXPECT_NE(r1, r5);
80 EXPECT_NE(r2, r5); 119 EXPECT_NE(r2, r5);
81 EXPECT_NE(r3, r5); 120 EXPECT_NE(r3, r5);
82 } 121 }
83 122
84 TEST(RangeTest, EqualsIgnoringDirection) { 123 TYPED_TEST(RangeTest, EqualsIgnoringDirection) {
85 gfx::Range r1(10, 5); 124 TypeParam r1(10, 5);
86 gfx::Range r2(5, 10); 125 TypeParam r2(5, 10);
87 EXPECT_TRUE(r1.EqualsIgnoringDirection(r2)); 126 EXPECT_TRUE(r1.EqualsIgnoringDirection(r2));
88 } 127 }
89 128
90 TEST(RangeTest, SetStart) { 129 TYPED_TEST(RangeTest, SetStart) {
91 gfx::Range r(10, 20); 130 TypeParam r(10, 20);
92 EXPECT_EQ(10U, r.start()); 131 EXPECT_EQ(10U, r.start());
93 EXPECT_EQ(10U, r.length()); 132 EXPECT_EQ(10U, r.length());
94 133
95 r.set_start(42); 134 r.set_start(42);
96 EXPECT_EQ(42U, r.start()); 135 EXPECT_EQ(42U, r.start());
97 EXPECT_EQ(20U, r.end()); 136 EXPECT_EQ(20U, r.end());
98 EXPECT_EQ(22U, r.length()); 137 EXPECT_EQ(22U, r.length());
99 EXPECT_TRUE(r.is_reversed()); 138 EXPECT_TRUE(r.is_reversed());
100 } 139 }
101 140
102 TEST(RangeTest, SetEnd) { 141 TYPED_TEST(RangeTest, SetEnd) {
103 gfx::Range r(10, 13); 142 TypeParam r(10, 13);
104 EXPECT_EQ(10U, r.start()); 143 EXPECT_EQ(10U, r.start());
105 EXPECT_EQ(3U, r.length()); 144 EXPECT_EQ(3U, r.length());
106 145
107 r.set_end(20); 146 r.set_end(20);
108 EXPECT_EQ(10U, r.start()); 147 EXPECT_EQ(10U, r.start());
109 EXPECT_EQ(20U, r.end()); 148 EXPECT_EQ(20U, r.end());
110 EXPECT_EQ(10U, r.length()); 149 EXPECT_EQ(10U, r.length());
111 } 150 }
112 151
113 TEST(RangeTest, SetStartAndEnd) { 152 TYPED_TEST(RangeTest, SetStartAndEnd) {
114 gfx::Range r; 153 TypeParam r;
115 r.set_end(5); 154 r.set_end(5);
116 r.set_start(1); 155 r.set_start(1);
117 EXPECT_EQ(1U, r.start()); 156 EXPECT_EQ(1U, r.start());
118 EXPECT_EQ(5U, r.end()); 157 EXPECT_EQ(5U, r.end());
119 EXPECT_EQ(4U, r.length()); 158 EXPECT_EQ(4U, r.length());
120 EXPECT_EQ(1U, r.GetMin()); 159 EXPECT_EQ(1U, r.GetMin());
121 EXPECT_EQ(5U, r.GetMax()); 160 EXPECT_EQ(5U, r.GetMax());
122 } 161 }
123 162
124 TEST(RangeTest, ReversedRange) { 163 TYPED_TEST(RangeTest, ReversedRange) {
125 gfx::Range r(10, 5); 164 TypeParam r(10, 5);
126 EXPECT_EQ(10U, r.start()); 165 EXPECT_EQ(10U, r.start());
127 EXPECT_EQ(5U, r.end()); 166 EXPECT_EQ(5U, r.end());
128 EXPECT_EQ(5U, r.length()); 167 EXPECT_EQ(5U, r.length());
129 EXPECT_TRUE(r.is_reversed()); 168 EXPECT_TRUE(r.is_reversed());
130 EXPECT_TRUE(r.IsValid()); 169 EXPECT_TRUE(r.IsValid());
131 EXPECT_EQ(5U, r.GetMin()); 170 EXPECT_EQ(5U, r.GetMin());
132 EXPECT_EQ(10U, r.GetMax()); 171 EXPECT_EQ(10U, r.GetMax());
133 } 172 }
134 173
135 TEST(RangeTest, SetReversedRange) { 174 TYPED_TEST(RangeTest, SetReversedRange) {
136 gfx::Range r(10, 20); 175 TypeParam r(10, 20);
137 r.set_start(25); 176 r.set_start(25);
138 EXPECT_EQ(25U, r.start()); 177 EXPECT_EQ(25U, r.start());
139 EXPECT_EQ(20U, r.end()); 178 EXPECT_EQ(20U, r.end());
140 EXPECT_EQ(5U, r.length()); 179 EXPECT_EQ(5U, r.length());
141 EXPECT_TRUE(r.is_reversed()); 180 EXPECT_TRUE(r.is_reversed());
142 EXPECT_TRUE(r.IsValid()); 181 EXPECT_TRUE(r.IsValid());
143 182
144 r.set_end(21); 183 r.set_end(21);
145 EXPECT_EQ(25U, r.start()); 184 EXPECT_EQ(25U, r.start());
146 EXPECT_EQ(21U, r.end()); 185 EXPECT_EQ(21U, r.end());
147 EXPECT_EQ(4U, r.length()); 186 EXPECT_EQ(4U, r.length());
148 EXPECT_TRUE(r.IsValid()); 187 EXPECT_TRUE(r.IsValid());
149 EXPECT_EQ(21U, r.GetMin()); 188 EXPECT_EQ(21U, r.GetMin());
150 EXPECT_EQ(25U, r.GetMax()); 189 EXPECT_EQ(25U, r.GetMax());
151 } 190 }
152 191
153 void TestContainsAndIntersects(const gfx::Range& r1, 192 TYPED_TEST(RangeTest, ContainAndIntersect) {
154 const gfx::Range& r2,
155 const gfx::Range& r3) {
156 EXPECT_TRUE(r1.Intersects(r1));
157 EXPECT_TRUE(r1.Contains(r1));
158 EXPECT_EQ(gfx::Range(10, 12), r1.Intersect(r1));
159
160 EXPECT_FALSE(r1.Intersects(r2));
161 EXPECT_FALSE(r1.Contains(r2));
162 EXPECT_TRUE(r1.Intersect(r2).is_empty());
163 EXPECT_FALSE(r2.Intersects(r1));
164 EXPECT_FALSE(r2.Contains(r1));
165 EXPECT_TRUE(r2.Intersect(r1).is_empty());
166
167 EXPECT_TRUE(r1.Intersects(r3));
168 EXPECT_TRUE(r3.Intersects(r1));
169 EXPECT_TRUE(r3.Contains(r1));
170 EXPECT_FALSE(r1.Contains(r3));
171 EXPECT_EQ(gfx::Range(10, 12), r1.Intersect(r3));
172 EXPECT_EQ(gfx::Range(10, 12), r3.Intersect(r1));
173
174 EXPECT_TRUE(r2.Intersects(r3));
175 EXPECT_TRUE(r3.Intersects(r2));
176 EXPECT_FALSE(r3.Contains(r2));
177 EXPECT_FALSE(r2.Contains(r3));
178 EXPECT_EQ(gfx::Range(5, 8), r2.Intersect(r3));
179 EXPECT_EQ(gfx::Range(5, 8), r3.Intersect(r2));
180 }
181
182 TEST(RangeTest, ContainAndIntersect) {
183 { 193 {
184 SCOPED_TRACE("contain and intersect"); 194 SCOPED_TRACE("contain and intersect");
185 gfx::Range r1(10, 12); 195 TypeParam r1(10, 12);
186 gfx::Range r2(1, 8); 196 TypeParam r2(1, 8);
187 gfx::Range r3(5, 12); 197 TypeParam r3(5, 12);
188 TestContainsAndIntersects(r1, r2, r3); 198 TestContainsAndIntersects(r1, r2, r3);
189 } 199 }
190 { 200 {
191 SCOPED_TRACE("contain and intersect: reversed"); 201 SCOPED_TRACE("contain and intersect: reversed");
192 gfx::Range r1(12, 10); 202 TypeParam r1(12, 10);
193 gfx::Range r2(8, 1); 203 TypeParam r2(8, 1);
194 gfx::Range r3(12, 5); 204 TypeParam r3(12, 5);
195 TestContainsAndIntersects(r1, r2, r3); 205 TestContainsAndIntersects(r1, r2, r3);
196 } 206 }
197 // Invalid rect tests 207 // Invalid rect tests
198 gfx::Range r1(10, 12); 208 TypeParam r1(10, 12);
199 gfx::Range r2(8, 1); 209 TypeParam r2(8, 1);
200 gfx::Range invalid = r1.Intersect(r2); 210 TypeParam invalid = r1.Intersect(r2);
201 EXPECT_FALSE(invalid.IsValid()); 211 EXPECT_FALSE(invalid.IsValid());
202 EXPECT_FALSE(invalid.Contains(invalid)); 212 EXPECT_FALSE(invalid.Contains(invalid));
203 EXPECT_FALSE(invalid.Contains(r1)); 213 EXPECT_FALSE(invalid.Contains(r1));
204 EXPECT_FALSE(invalid.Intersects(invalid)); 214 EXPECT_FALSE(invalid.Intersects(invalid));
205 EXPECT_FALSE(invalid.Intersects(r1)); 215 EXPECT_FALSE(invalid.Intersects(r1));
206 EXPECT_FALSE(r1.Contains(invalid)); 216 EXPECT_FALSE(r1.Contains(invalid));
207 EXPECT_FALSE(r1.Intersects(invalid)); 217 EXPECT_FALSE(r1.Intersects(invalid));
208 } 218 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698