OLD | NEW |
| (Empty) |
1 // Copyright 2016 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 "pdf/range_set.h" | |
6 | |
7 #include "testing/gtest/include/gtest/gtest.h" | |
8 | |
9 namespace chrome_pdf { | |
10 | |
11 TEST(RangeSetTest, Union) { | |
12 { | |
13 RangeSet range_set; | |
14 EXPECT_EQ("{}", range_set.ToString()); | |
15 range_set.Union(gfx::Range(50, 100)); | |
16 EXPECT_EQ("{[50,100)}", range_set.ToString()); | |
17 range_set.Union(gfx::Range(80, 150)); | |
18 EXPECT_EQ("{[50,150)}", range_set.ToString()); | |
19 range_set.Union(gfx::Range(0, 70)); | |
20 EXPECT_EQ("{[0,150)}", range_set.ToString()); | |
21 range_set.Union(gfx::Range(70, 120)); | |
22 EXPECT_EQ("{[0,150)}", range_set.ToString()); | |
23 range_set.Union(gfx::Range(200, 150)); | |
24 EXPECT_EQ("{[0,150)[151,201)}", range_set.ToString()); | |
25 range_set.Union(gfx::Range(150, 151)); | |
26 EXPECT_EQ("{[0,201)}", range_set.ToString()); | |
27 range_set.Union(gfx::Range(0, 300)); | |
28 EXPECT_EQ("{[0,300)}", range_set.ToString()); | |
29 range_set.Union(gfx::Range(500, 600)); | |
30 EXPECT_EQ("{[0,300)[500,600)}", range_set.ToString()); | |
31 } | |
32 { | |
33 RangeSet range_set_1; | |
34 range_set_1.Union(gfx::Range(0, 10)); | |
35 range_set_1.Union(gfx::Range(20, 30)); | |
36 range_set_1.Union(gfx::Range(40, 50)); | |
37 | |
38 EXPECT_EQ("{[0,10)[20,30)[40,50)}", range_set_1.ToString()); | |
39 range_set_1.Union(range_set_1); | |
40 EXPECT_EQ("{[0,10)[20,30)[40,50)}", range_set_1.ToString()); | |
41 | |
42 RangeSet range_set_2; | |
43 range_set_2.Union(gfx::Range(10, 20)); | |
44 range_set_2.Union(gfx::Range(30, 40)); | |
45 range_set_2.Union(gfx::Range(50, 60)); | |
46 | |
47 EXPECT_EQ("{[10,20)[30,40)[50,60)}", range_set_2.ToString()); | |
48 range_set_1.Union(range_set_2); | |
49 EXPECT_EQ("{[0,60)}", range_set_1.ToString()); | |
50 EXPECT_EQ(RangeSet(gfx::Range(0, 60)), range_set_1); | |
51 } | |
52 } | |
53 | |
54 TEST(RangeSetTest, Contains) { | |
55 RangeSet range_set; | |
56 range_set.Union(gfx::Range(10, 20)); | |
57 range_set.Union(gfx::Range(30, 40)); | |
58 range_set.Union(gfx::Range(50, 60)); | |
59 EXPECT_TRUE(range_set.Contains(range_set)); | |
60 | |
61 { | |
62 EXPECT_FALSE(range_set.Contains(9)); | |
63 EXPECT_FALSE(range_set.Contains(29)); | |
64 EXPECT_FALSE(range_set.Contains(49)); | |
65 | |
66 EXPECT_TRUE(range_set.Contains(10)); | |
67 EXPECT_TRUE(range_set.Contains(30)); | |
68 EXPECT_TRUE(range_set.Contains(50)); | |
69 | |
70 EXPECT_TRUE(range_set.Contains(15)); | |
71 EXPECT_TRUE(range_set.Contains(35)); | |
72 EXPECT_TRUE(range_set.Contains(55)); | |
73 | |
74 EXPECT_TRUE(range_set.Contains(19)); | |
75 EXPECT_TRUE(range_set.Contains(39)); | |
76 EXPECT_TRUE(range_set.Contains(59)); | |
77 | |
78 EXPECT_FALSE(range_set.Contains(20)); | |
79 EXPECT_FALSE(range_set.Contains(40)); | |
80 EXPECT_FALSE(range_set.Contains(60)); | |
81 } | |
82 { | |
83 EXPECT_FALSE(range_set.Contains(gfx::Range(0, 10))); | |
84 EXPECT_FALSE(range_set.Contains(gfx::Range(20, 30))); | |
85 EXPECT_FALSE(range_set.Contains(gfx::Range(40, 50))); | |
86 | |
87 EXPECT_FALSE(range_set.Contains(gfx::Range(5, 15))); | |
88 EXPECT_FALSE(range_set.Contains(gfx::Range(25, 35))); | |
89 EXPECT_FALSE(range_set.Contains(gfx::Range(45, 55))); | |
90 | |
91 EXPECT_TRUE(range_set.Contains(gfx::Range(10, 15))); | |
92 EXPECT_TRUE(range_set.Contains(gfx::Range(30, 35))); | |
93 EXPECT_TRUE(range_set.Contains(gfx::Range(50, 55))); | |
94 | |
95 EXPECT_TRUE(range_set.Contains(gfx::Range(15, 20))); | |
96 EXPECT_TRUE(range_set.Contains(gfx::Range(35, 40))); | |
97 EXPECT_TRUE(range_set.Contains(gfx::Range(55, 60))); | |
98 | |
99 EXPECT_TRUE(range_set.Contains(gfx::Range(10, 20))); | |
100 EXPECT_TRUE(range_set.Contains(gfx::Range(30, 40))); | |
101 EXPECT_TRUE(range_set.Contains(gfx::Range(50, 60))); | |
102 | |
103 EXPECT_FALSE(range_set.Contains(gfx::Range(15, 25))); | |
104 EXPECT_FALSE(range_set.Contains(gfx::Range(35, 45))); | |
105 EXPECT_FALSE(range_set.Contains(gfx::Range(55, 65))); | |
106 | |
107 EXPECT_FALSE(range_set.Contains(gfx::Range(20, 25))); | |
108 EXPECT_FALSE(range_set.Contains(gfx::Range(40, 45))); | |
109 EXPECT_FALSE(range_set.Contains(gfx::Range(60, 65))); | |
110 | |
111 EXPECT_FALSE(range_set.Contains(gfx::Range(0, 100))); | |
112 } | |
113 { | |
114 RangeSet range_set_2 = range_set; | |
115 EXPECT_TRUE(range_set_2.Contains(range_set)); | |
116 range_set_2.Union(gfx::Range(100, 200)); | |
117 EXPECT_TRUE(range_set_2.Contains(range_set)); | |
118 EXPECT_FALSE(range_set.Contains(range_set_2)); | |
119 } | |
120 } | |
121 | |
122 TEST(RangeSetTest, Intersects) { | |
123 RangeSet range_set; | |
124 range_set.Union(gfx::Range(10, 20)); | |
125 range_set.Union(gfx::Range(30, 40)); | |
126 range_set.Union(gfx::Range(50, 60)); | |
127 EXPECT_TRUE(range_set.Intersects(range_set)); | |
128 { | |
129 EXPECT_FALSE(range_set.Intersects(gfx::Range(0, 10))); | |
130 EXPECT_FALSE(range_set.Intersects(gfx::Range(20, 30))); | |
131 EXPECT_FALSE(range_set.Intersects(gfx::Range(40, 50))); | |
132 | |
133 EXPECT_TRUE(range_set.Intersects(gfx::Range(5, 15))); | |
134 EXPECT_TRUE(range_set.Intersects(gfx::Range(25, 35))); | |
135 EXPECT_TRUE(range_set.Intersects(gfx::Range(45, 55))); | |
136 | |
137 EXPECT_TRUE(range_set.Intersects(gfx::Range(10, 15))); | |
138 EXPECT_TRUE(range_set.Intersects(gfx::Range(30, 35))); | |
139 EXPECT_TRUE(range_set.Intersects(gfx::Range(50, 55))); | |
140 | |
141 EXPECT_TRUE(range_set.Intersects(gfx::Range(15, 20))); | |
142 EXPECT_TRUE(range_set.Intersects(gfx::Range(35, 40))); | |
143 EXPECT_TRUE(range_set.Intersects(gfx::Range(55, 60))); | |
144 | |
145 EXPECT_TRUE(range_set.Intersects(gfx::Range(10, 20))); | |
146 EXPECT_TRUE(range_set.Intersects(gfx::Range(30, 40))); | |
147 EXPECT_TRUE(range_set.Intersects(gfx::Range(50, 60))); | |
148 | |
149 EXPECT_TRUE(range_set.Intersects(gfx::Range(15, 25))); | |
150 EXPECT_TRUE(range_set.Intersects(gfx::Range(35, 45))); | |
151 EXPECT_TRUE(range_set.Intersects(gfx::Range(55, 65))); | |
152 | |
153 EXPECT_FALSE(range_set.Intersects(gfx::Range(20, 25))); | |
154 EXPECT_FALSE(range_set.Intersects(gfx::Range(40, 45))); | |
155 EXPECT_FALSE(range_set.Intersects(gfx::Range(60, 65))); | |
156 | |
157 EXPECT_TRUE(range_set.Intersects(gfx::Range(0, 100))); | |
158 } | |
159 { | |
160 RangeSet range_set_2; | |
161 range_set_2.Union(gfx::Range(5, 15)); | |
162 range_set_2.Union(gfx::Range(25, 35)); | |
163 range_set_2.Union(gfx::Range(45, 55)); | |
164 EXPECT_TRUE(range_set_2.Intersects(range_set)); | |
165 } | |
166 { | |
167 RangeSet range_set_2; | |
168 range_set_2.Union(gfx::Range(5, 10)); | |
169 range_set_2.Union(gfx::Range(25, 30)); | |
170 range_set_2.Union(gfx::Range(45, 50)); | |
171 EXPECT_FALSE(range_set_2.Intersects(range_set)); | |
172 } | |
173 } | |
174 | |
175 TEST(RangeSetTest, Intersect) { | |
176 { | |
177 RangeSet range_set; | |
178 range_set.Union(gfx::Range(10, 20)); | |
179 range_set.Union(gfx::Range(30, 40)); | |
180 range_set.Union(gfx::Range(50, 60)); | |
181 | |
182 EXPECT_EQ("{[10,20)[30,40)[50,60)}", range_set.ToString()); | |
183 range_set.Intersect(range_set); | |
184 EXPECT_EQ("{[10,20)[30,40)[50,60)}", range_set.ToString()); | |
185 range_set.Intersect(gfx::Range(0, 100)); | |
186 EXPECT_EQ("{[10,20)[30,40)[50,60)}", range_set.ToString()); | |
187 range_set.Intersect(gfx::Range(0, 55)); | |
188 EXPECT_EQ("{[10,20)[30,40)[50,55)}", range_set.ToString()); | |
189 range_set.Intersect(gfx::Range(15, 100)); | |
190 EXPECT_EQ("{[15,20)[30,40)[50,55)}", range_set.ToString()); | |
191 range_set.Intersect(gfx::Range(17, 53)); | |
192 EXPECT_EQ("{[17,20)[30,40)[50,53)}", range_set.ToString()); | |
193 range_set.Intersect(gfx::Range(19, 45)); | |
194 EXPECT_EQ("{[19,20)[30,40)}", range_set.ToString()); | |
195 range_set.Intersect(gfx::Range(30, 45)); | |
196 EXPECT_EQ("{[30,40)}", range_set.ToString()); | |
197 range_set.Intersect(gfx::Range(35, 40)); | |
198 EXPECT_EQ("{[35,40)}", range_set.ToString()); | |
199 range_set.Intersect(gfx::Range(35, 35)); | |
200 EXPECT_TRUE(range_set.IsEmpty()); | |
201 } | |
202 { | |
203 RangeSet range_set; | |
204 range_set.Union(gfx::Range(10, 20)); | |
205 range_set.Union(gfx::Range(30, 40)); | |
206 range_set.Union(gfx::Range(50, 60)); | |
207 | |
208 RangeSet range_set_2; | |
209 range_set_2.Union(gfx::Range(12, 17)); | |
210 range_set_2.Union(gfx::Range(25, 35)); | |
211 range_set_2.Union(gfx::Range(39, 55)); | |
212 range_set_2.Union(gfx::Range(59, 100)); | |
213 | |
214 range_set.Intersect(range_set_2); | |
215 EXPECT_EQ("{[12,17)[30,35)[39,40)[50,55)[59,60)}", range_set.ToString()); | |
216 } | |
217 } | |
218 | |
219 TEST(RangeSetTest, Subtract) { | |
220 { | |
221 RangeSet range_set; | |
222 range_set.Union(gfx::Range(10, 20)); | |
223 range_set.Union(gfx::Range(30, 40)); | |
224 range_set.Union(gfx::Range(50, 60)); | |
225 | |
226 EXPECT_EQ("{[10,20)[30,40)[50,60)}", range_set.ToString()); | |
227 range_set.Subtract(gfx::Range(35, 35)); | |
228 EXPECT_EQ("{[10,20)[30,40)[50,60)}", range_set.ToString()); | |
229 range_set.Subtract(gfx::Range(0, 5)); | |
230 EXPECT_EQ("{[10,20)[30,40)[50,60)}", range_set.ToString()); | |
231 range_set.Subtract(gfx::Range(70, 80)); | |
232 EXPECT_EQ("{[10,20)[30,40)[50,60)}", range_set.ToString()); | |
233 range_set.Subtract(gfx::Range(35, 39)); | |
234 EXPECT_EQ("{[10,20)[30,35)[39,40)[50,60)}", range_set.ToString()); | |
235 range_set.Subtract(gfx::Range(15, 32)); | |
236 EXPECT_EQ("{[10,15)[32,35)[39,40)[50,60)}", range_set.ToString()); | |
237 range_set.Subtract(gfx::Range(15, 55)); | |
238 EXPECT_EQ("{[10,15)[55,60)}", range_set.ToString()); | |
239 range_set.Subtract(gfx::Range(0, 100)); | |
240 EXPECT_EQ("{}", range_set.ToString()); | |
241 } | |
242 { | |
243 RangeSet range_set; | |
244 range_set.Union(gfx::Range(10, 20)); | |
245 range_set.Union(gfx::Range(30, 40)); | |
246 range_set.Union(gfx::Range(50, 60)); | |
247 range_set.Subtract(range_set); | |
248 EXPECT_EQ("{}", range_set.ToString()); | |
249 } | |
250 { | |
251 RangeSet range_set; | |
252 range_set.Union(gfx::Range(10, 20)); | |
253 range_set.Union(gfx::Range(30, 40)); | |
254 range_set.Union(gfx::Range(50, 60)); | |
255 | |
256 RangeSet range_set_2; | |
257 range_set_2.Union(gfx::Range(12, 17)); | |
258 range_set_2.Union(gfx::Range(25, 35)); | |
259 range_set_2.Union(gfx::Range(39, 55)); | |
260 range_set_2.Union(gfx::Range(59, 100)); | |
261 | |
262 range_set.Subtract(range_set_2); | |
263 EXPECT_EQ("{[10,12)[17,20)[35,39)[55,59)}", range_set.ToString()); | |
264 } | |
265 } | |
266 | |
267 TEST(RangeSetTest, Xor) { | |
268 { | |
269 RangeSet range_set; | |
270 range_set.Union(gfx::Range(10, 20)); | |
271 range_set.Union(gfx::Range(30, 40)); | |
272 range_set.Union(gfx::Range(50, 60)); | |
273 range_set.Xor(range_set); | |
274 EXPECT_EQ("{}", range_set.ToString()); | |
275 } | |
276 { | |
277 RangeSet range_set; | |
278 range_set.Union(gfx::Range(10, 20)); | |
279 range_set.Union(gfx::Range(30, 40)); | |
280 range_set.Union(gfx::Range(50, 60)); | |
281 | |
282 RangeSet range_set_2; | |
283 range_set_2.Union(gfx::Range(12, 17)); | |
284 range_set_2.Union(gfx::Range(25, 35)); | |
285 range_set_2.Union(gfx::Range(39, 55)); | |
286 range_set_2.Union(gfx::Range(59, 100)); | |
287 | |
288 range_set.Xor(range_set_2); | |
289 EXPECT_EQ("{[10,12)[17,20)[25,30)[35,39)[40,50)[55,59)[60,100)}", | |
290 range_set.ToString()); | |
291 } | |
292 } | |
293 | |
294 TEST(RangeSetTest, OperationsOnEmptySet) { | |
295 RangeSet range_set; | |
296 range_set.Intersect(gfx::Range(10, 20)); | |
297 range_set.Intersects(gfx::Range(10, 20)); | |
298 range_set.Subtract(gfx::Range(10, 20)); | |
299 range_set.Xor(gfx::Range(30, 40)); | |
300 range_set.Union(gfx::Range(10, 20)); | |
301 } | |
302 | |
303 } // namespace chrome_pdf | |
OLD | NEW |