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 |