Lines Matching full:ranges
77 // Test the functions that maintain address ranges: in TEST()
80 AddressRanges Ranges; in TEST() local
81 Ranges.insert(AddressRange(0x1000, 0x2000)); in TEST()
82 Ranges.insert(AddressRange(0x2000, 0x3000)); in TEST()
83 Ranges.insert(AddressRange(0x4000, 0x5000)); in TEST()
85 EXPECT_FALSE(Ranges.contains(0)); in TEST()
86 EXPECT_FALSE(Ranges.contains(0x1000 - 1)); in TEST()
87 EXPECT_TRUE(Ranges.contains(0x1000)); in TEST()
88 EXPECT_TRUE(Ranges.contains(0x2000)); in TEST()
89 EXPECT_TRUE(Ranges.contains(0x4000)); in TEST()
90 EXPECT_TRUE(Ranges.contains(0x2000 - 1)); in TEST()
91 EXPECT_TRUE(Ranges.contains(0x3000 - 1)); in TEST()
92 EXPECT_FALSE(Ranges.contains(0x3000 + 1)); in TEST()
93 EXPECT_TRUE(Ranges.contains(0x5000 - 1)); in TEST()
94 EXPECT_FALSE(Ranges.contains(0x5000 + 1)); in TEST()
95 EXPECT_FALSE(Ranges.contains(UINT64_MAX)); in TEST()
97 EXPECT_FALSE(Ranges.contains(AddressRange())); in TEST()
98 EXPECT_FALSE(Ranges.contains(AddressRange(0x1000 - 1, 0x1000))); in TEST()
99 EXPECT_FALSE(Ranges.contains(AddressRange(0x1000, 0x1000))); in TEST()
100 EXPECT_TRUE(Ranges.contains(AddressRange(0x1000, 0x1000 + 1))); in TEST()
101 EXPECT_TRUE(Ranges.contains(AddressRange(0x1000, 0x2000))); in TEST()
102 EXPECT_TRUE(Ranges.contains(AddressRange(0x1000, 0x2001))); in TEST()
103 EXPECT_TRUE(Ranges.contains(AddressRange(0x2000, 0x3000))); in TEST()
104 EXPECT_FALSE(Ranges.contains(AddressRange(0x2000, 0x3001))); in TEST()
105 EXPECT_FALSE(Ranges.contains(AddressRange(0x3000, 0x3001))); in TEST()
106 EXPECT_FALSE(Ranges.contains(AddressRange(0x1500, 0x4500))); in TEST()
107 EXPECT_FALSE(Ranges.contains(AddressRange(0x5000, 0x5001))); in TEST()
109 // Verify that intersecting ranges get combined in TEST()
110 Ranges.clear(); in TEST()
111 Ranges.insert(AddressRange(0x1100, 0x1F00)); in TEST()
113 Ranges.insert(AddressRange(0x1500, 0x1F00)); in TEST()
114 EXPECT_EQ(Ranges.size(), 1u); in TEST()
115 EXPECT_EQ(Ranges[0], AddressRange(0x1100, 0x1F00)); in TEST()
118 Ranges.insert(AddressRange(0x1000, Ranges[0].start() + 1)); in TEST()
119 EXPECT_EQ(Ranges.size(), 1u); in TEST()
120 EXPECT_EQ(Ranges[0], AddressRange(0x1000, 0x1F00)); in TEST()
122 // Verify a range that starts inside and extends ranges gets combined. in TEST()
123 Ranges.insert(AddressRange(Ranges[0].end() - 1, 0x2000)); in TEST()
124 EXPECT_EQ(Ranges.size(), 1u); in TEST()
125 EXPECT_EQ(Ranges[0], AddressRange(0x1000, 0x2000)); in TEST()
127 // Verify that adjacent ranges get combined in TEST()
128 Ranges.insert(AddressRange(0x2000, 0x2fff)); in TEST()
129 EXPECT_EQ(Ranges.size(), 1u); in TEST()
130 EXPECT_EQ(Ranges[0], AddressRange(0x1000, 0x2fff)); in TEST()
132 // Verify that ranges having 1 byte gap do not get combined in TEST()
133 Ranges.insert(AddressRange(0x3000, 0x4000)); in TEST()
134 EXPECT_EQ(Ranges.size(), 2u); in TEST()
135 EXPECT_EQ(Ranges[0], AddressRange(0x1000, 0x2fff)); in TEST()
136 EXPECT_EQ(Ranges[1], AddressRange(0x3000, 0x4000)); in TEST()
138 // Verify if we add an address range that intersects two ranges in TEST()
140 Ranges.insert(AddressRange(Ranges[0].end() - 1, Ranges[1].start() + 1)); in TEST()
141 EXPECT_EQ(Ranges.size(), 1u); in TEST()
142 EXPECT_EQ(Ranges[0], AddressRange(0x1000, 0x4000)); in TEST()
144 Ranges.insert(AddressRange(0x3000, 0x4000)); in TEST()
145 Ranges.insert(AddressRange(0x4000, 0x5000)); in TEST()
146 Ranges.insert(AddressRange(0x2000, 0x4500)); in TEST()
147 EXPECT_EQ(Ranges.size(), 1u); in TEST()
148 EXPECT_EQ(Ranges[0], AddressRange(0x1000, 0x5000)); in TEST()
152 AddressRanges Ranges; in TEST() local
157 // Fill ranges. in TEST()
161 Ranges.insert({Start, End}); in TEST()
164 // Check ranges. in TEST()
165 for (size_t Idx = 0; Idx + 1 < Ranges.size(); Idx++) { in TEST()
166 // Check that ranges are not intersected. in TEST()
167 EXPECT_FALSE(Ranges[Idx].intersects(Ranges[Idx + 1])); in TEST()
169 // Check that ranges are sorted and not adjusted. in TEST()
170 EXPECT_TRUE(Ranges[Idx].end() < Ranges[Idx + 1].start()); in TEST()
175 AddressRangesMap Ranges; in TEST() local
177 EXPECT_EQ(Ranges.size(), 0u); in TEST()
178 EXPECT_TRUE(Ranges.empty()); in TEST()
181 Ranges.insert(AddressRange(0x1000, 0x2000), 0xfe); in TEST()
182 EXPECT_EQ(Ranges.size(), 1u); in TEST()
183 EXPECT_FALSE(Ranges.empty()); in TEST()
184 EXPECT_TRUE(Ranges.contains(0x1500)); in TEST()
185 EXPECT_TRUE(Ranges.contains(AddressRange(0x1000, 0x2000))); in TEST()
188 /// Check ranges with the same mapped value. in TEST()
190 // Clear ranges. in TEST()
191 Ranges.clear(); in TEST()
192 EXPECT_EQ(Ranges.size(), 0u); in TEST()
193 EXPECT_TRUE(Ranges.empty()); in TEST()
196 Ranges.insert(AddressRange(0x1000, 0x2000), 0x11); in TEST()
197 EXPECT_EQ(Ranges.size(), 1u); in TEST()
198 EXPECT_EQ(Ranges.getRangeThatContains(0x1000)->Value, 0x11); in TEST()
201 Ranges.insert(AddressRange(0x2000, 0x3000), 0x11); in TEST()
202 EXPECT_EQ(Ranges.size(), 2u); in TEST()
203 EXPECT_EQ(Ranges.getRangeThatContains(0x1000)->Value, 0x11); in TEST()
204 EXPECT_EQ(Ranges.getRangeThatContains(0x2000)->Value, 0x11); in TEST()
205 EXPECT_EQ(Ranges.getRangeThatContains(0x2900)->Value, 0x11); in TEST()
206 EXPECT_FALSE(Ranges.getRangeThatContains(0x3000)); in TEST()
209 Ranges.insert(AddressRange(0x1000, 0x3000), 0x11); in TEST()
210 EXPECT_EQ(Ranges.size(), 2u); in TEST()
211 EXPECT_EQ(Ranges.getRangeThatContains(0x1000)->Value, 0x11); in TEST()
214 Ranges.insert(AddressRange(0x4000, 0x5000), 0x11); in TEST()
215 EXPECT_EQ(Ranges.size(), 3u); in TEST()
216 EXPECT_EQ(Ranges[0].Range, AddressRange(0x1000, 0x2000)); in TEST()
217 EXPECT_EQ(Ranges[0].Value, 0x11); in TEST()
218 EXPECT_EQ(Ranges[1].Range, AddressRange(0x2000, 0x3000)); in TEST()
219 EXPECT_EQ(Ranges[1].Value, 0x11); in TEST()
220 EXPECT_EQ(Ranges[2].Range, AddressRange(0x4000, 0x5000)); in TEST()
221 EXPECT_EQ(Ranges[2].Value, 0x11); in TEST()
222 EXPECT_EQ(Ranges.getRangeThatContains(0x1000)->Value, 0x11); in TEST()
223 EXPECT_EQ(Ranges.getRangeThatContains(0x4000)->Value, 0x11); in TEST()
226 Ranges.insert(AddressRange(0x0, 0x6000), 0x11); in TEST()
227 EXPECT_EQ(Ranges.size(), 6u); in TEST()
228 EXPECT_EQ(Ranges.getRangeThatContains(0x1000)->Value, 0x11); in TEST()
230 // Check that mapped values are correctly preserved for combined ranges. in TEST()
231 Ranges.clear(); in TEST()
232 Ranges.insert(AddressRange(0x0, 0xff), 0x11); in TEST()
233 Ranges.insert(AddressRange(0x100, 0x1ff), 0x11); in TEST()
234 Ranges.insert(AddressRange(0x200, 0x2ff), 0x11); in TEST()
235 Ranges.insert(AddressRange(0x500, 0x5ff), 0x11); in TEST()
236 Ranges.insert(AddressRange(0x300, 0x3ff), 0x11); in TEST()
237 Ranges.insert(AddressRange(0x400, 0x4ff), 0x11); in TEST()
238 Ranges.insert(AddressRange(0x600, 0x6ff), 0x11); in TEST()
239 EXPECT_EQ(Ranges.size(), 7u); in TEST()
241 Ranges.insert(AddressRange(0x150, 0x350), 0x11); in TEST()
242 EXPECT_EQ(Ranges.size(), 9u); in TEST()
243 EXPECT_EQ(Ranges[0].Range, AddressRange(0x0, 0xff)); in TEST()
244 EXPECT_EQ(Ranges[0].Value, 0x11); in TEST()
245 EXPECT_EQ(Ranges[1].Range, AddressRange(0x100, 0x1ff)); in TEST()
246 EXPECT_EQ(Ranges[1].Value, 0x11); in TEST()
247 EXPECT_EQ(Ranges[2].Range, AddressRange(0x1ff, 0x200)); in TEST()
248 EXPECT_EQ(Ranges[2].Value, 0x11); in TEST()
249 EXPECT_EQ(Ranges[3].Range, AddressRange(0x200, 0x2ff)); in TEST()
250 EXPECT_EQ(Ranges[3].Value, 0x11); in TEST()
251 EXPECT_EQ(Ranges[4].Range, AddressRange(0x2ff, 0x300)); in TEST()
252 EXPECT_EQ(Ranges[4].Value, 0x11); in TEST()
253 EXPECT_EQ(Ranges[5].Range, AddressRange(0x300, 0x3ff)); in TEST()
254 EXPECT_EQ(Ranges[5].Value, 0x11); in TEST()
255 EXPECT_EQ(Ranges[6].Range, AddressRange(0x400, 0x4ff)); in TEST()
256 EXPECT_EQ(Ranges[6].Value, 0x11); in TEST()
257 EXPECT_EQ(Ranges[7].Range, AddressRange(0x500, 0x5ff)); in TEST()
258 EXPECT_EQ(Ranges[7].Value, 0x11); in TEST()
259 EXPECT_EQ(Ranges[8].Range, AddressRange(0x600, 0x6ff)); in TEST()
260 EXPECT_EQ(Ranges[8].Value, 0x11); in TEST()
262 Ranges.insert(AddressRange(0x3ff, 0x400), 0x11); in TEST()
263 EXPECT_EQ(Ranges.size(), 10u); in TEST()
264 EXPECT_EQ(Ranges[0].Range, AddressRange(0x0, 0xff)); in TEST()
265 EXPECT_EQ(Ranges[0].Value, 0x11); in TEST()
266 EXPECT_EQ(Ranges[1].Range, AddressRange(0x100, 0x1ff)); in TEST()
267 EXPECT_EQ(Ranges[1].Value, 0x11); in TEST()
268 EXPECT_EQ(Ranges[2].Range, AddressRange(0x1ff, 0x200)); in TEST()
269 EXPECT_EQ(Ranges[2].Value, 0x11); in TEST()
270 EXPECT_EQ(Ranges[3].Range, AddressRange(0x200, 0x2ff)); in TEST()
271 EXPECT_EQ(Ranges[3].Value, 0x11); in TEST()
272 EXPECT_EQ(Ranges[4].Range, AddressRange(0x2ff, 0x300)); in TEST()
273 EXPECT_EQ(Ranges[4].Value, 0x11); in TEST()
274 EXPECT_EQ(Ranges[5].Range, AddressRange(0x300, 0x3ff)); in TEST()
275 EXPECT_EQ(Ranges[5].Value, 0x11); in TEST()
276 EXPECT_EQ(Ranges[6].Range, AddressRange(0x3ff, 0x400)); in TEST()
277 EXPECT_EQ(Ranges[6].Value, 0x11); in TEST()
278 EXPECT_EQ(Ranges[7].Range, AddressRange(0x400, 0x4ff)); in TEST()
279 EXPECT_EQ(Ranges[7].Value, 0x11); in TEST()
280 EXPECT_EQ(Ranges[8].Range, AddressRange(0x500, 0x5ff)); in TEST()
281 EXPECT_EQ(Ranges[8].Value, 0x11); in TEST()
282 EXPECT_EQ(Ranges[9].Range, AddressRange(0x600, 0x6ff)); in TEST()
283 EXPECT_EQ(Ranges[9].Value, 0x11); in TEST()
286 /// Check ranges with various mapped values. in TEST()
288 // Clear ranges. in TEST()
289 Ranges.clear(); in TEST()
290 EXPECT_EQ(Ranges.size(), 0u); in TEST()
291 EXPECT_TRUE(Ranges.empty()); in TEST()
294 Ranges.insert(AddressRange(0x1000, 0x2000), 0xfe); in TEST()
295 EXPECT_EQ(Ranges.size(), 1u); in TEST()
296 EXPECT_EQ(Ranges.getRangeThatContains(0x1000)->Value, 0xfe); in TEST()
299 Ranges.insert(AddressRange(0x2000, 0x3000), 0xfc); in TEST()
300 EXPECT_EQ(Ranges.size(), 2u); in TEST()
301 EXPECT_EQ(Ranges.getRangeThatContains(0x1000)->Value, 0xfe); in TEST()
302 EXPECT_EQ(Ranges.getRangeThatContains(0x2000)->Value, 0xfc); in TEST()
303 EXPECT_EQ(Ranges.getRangeThatContains(0x2900)->Value, 0xfc); in TEST()
304 EXPECT_FALSE(Ranges.getRangeThatContains(0x3000)); in TEST()
307 Ranges.insert(AddressRange(0x1000, 0x3000), 0xff); in TEST()
308 EXPECT_EQ(Ranges.size(), 2u); in TEST()
309 EXPECT_EQ(Ranges.getRangeThatContains(0x1000)->Value, 0xfe); in TEST()
312 Ranges.insert(AddressRange(0x4000, 0x5000), 0x0); in TEST()
313 EXPECT_EQ(Ranges.size(), 3u); in TEST()
314 EXPECT_EQ(Ranges[0].Value, 0xfe); in TEST()
315 EXPECT_EQ(Ranges[1].Value, 0xfc); in TEST()
316 EXPECT_EQ(Ranges[2].Value, 0x0); in TEST()
317 EXPECT_EQ(Ranges.getRangeThatContains(0x1000)->Value, 0xfe); in TEST()
318 EXPECT_EQ(Ranges.getRangeThatContains(0x4000)->Value, 0x0); in TEST()
321 Ranges.insert(AddressRange(0x0, 0x6000), 0x1); in TEST()
322 EXPECT_EQ(Ranges.size(), 6u); in TEST()
323 EXPECT_EQ(Ranges[0].Value, 0x1); in TEST()
324 EXPECT_EQ(Ranges[1].Value, 0xfe); in TEST()
325 EXPECT_EQ(Ranges[2].Value, 0xfc); in TEST()
326 EXPECT_EQ(Ranges[3].Value, 0x1); in TEST()
327 EXPECT_EQ(Ranges[4].Value, 0x0); in TEST()
328 EXPECT_EQ(Ranges[5].Value, 0x1); in TEST()
329 EXPECT_EQ(Ranges.getRangeThatContains(0x1000)->Value, 0xfe); in TEST()
331 // Check that mapped values are correctly preserved for combined ranges. in TEST()
332 Ranges.clear(); in TEST()
333 Ranges.insert(AddressRange(0x0, 0xff), 0x1); in TEST()
334 Ranges.insert(AddressRange(0x100, 0x1ff), 0x2); in TEST()
335 Ranges.insert(AddressRange(0x200, 0x2ff), 0x3); in TEST()
336 Ranges.insert(AddressRange(0x300, 0x3ff), 0x4); in TEST()
337 Ranges.insert(AddressRange(0x500, 0x5ff), 0x6); in TEST()
338 Ranges.insert(AddressRange(0x400, 0x4ff), 0x5); in TEST()
339 Ranges.insert(AddressRange(0x600, 0x6ff), 0x7); in TEST()
340 EXPECT_EQ(Ranges.size(), 7u); in TEST()
342 Ranges.insert(AddressRange(0x150, 0x350), 0xff); in TEST()
343 EXPECT_EQ(Ranges.size(), 9u); in TEST()
344 EXPECT_EQ(Ranges[0].Range, AddressRange(0x0, 0xff)); in TEST()
345 EXPECT_EQ(Ranges[0].Value, 0x1); in TEST()
346 EXPECT_EQ(Ranges[1].Range, AddressRange(0x100, 0x1ff)); in TEST()
347 EXPECT_EQ(Ranges[1].Value, 0x2); in TEST()
348 EXPECT_EQ(Ranges[2].Range, AddressRange(0x1ff, 0x200)); in TEST()
349 EXPECT_EQ(Ranges[2].Value, 0xff); in TEST()
350 EXPECT_EQ(Ranges[3].Range, AddressRange(0x200, 0x2ff)); in TEST()
351 EXPECT_EQ(Ranges[3].Value, 0x3); in TEST()
352 EXPECT_EQ(Ranges[4].Range, AddressRange(0x2ff, 0x300)); in TEST()
353 EXPECT_EQ(Ranges[4].Value, 0xff); in TEST()
354 EXPECT_EQ(Ranges[5].Range, AddressRange(0x300, 0x3ff)); in TEST()
355 EXPECT_EQ(Ranges[5].Value, 0x4); in TEST()
356 EXPECT_EQ(Ranges[6].Range, AddressRange(0x400, 0x4ff)); in TEST()
357 EXPECT_EQ(Ranges[6].Value, 0x5); in TEST()
358 EXPECT_EQ(Ranges[7].Range, AddressRange(0x500, 0x5ff)); in TEST()
359 EXPECT_EQ(Ranges[7].Value, 0x6); in TEST()
360 EXPECT_EQ(Ranges[8].Range, AddressRange(0x600, 0x6ff)); in TEST()
361 EXPECT_EQ(Ranges[8].Value, 0x7); in TEST()
363 Ranges.insert(AddressRange(0x650, 0x700), 0x8); in TEST()
364 Ranges.insert(AddressRange(0x3ff, 0x400), 0x5); in TEST()
365 Ranges.insert(AddressRange(0x0, 0x40), 0xee); in TEST()
366 EXPECT_EQ(Ranges.size(), 11u); in TEST()
367 EXPECT_EQ(Ranges[0].Range, AddressRange(0x0, 0xff)); in TEST()
368 EXPECT_EQ(Ranges[0].Value, 0x1); in TEST()
369 EXPECT_EQ(Ranges[1].Range, AddressRange(0x100, 0x1ff)); in TEST()
370 EXPECT_EQ(Ranges[1].Value, 0x2); in TEST()
371 EXPECT_EQ(Ranges[2].Range, AddressRange(0x1ff, 0x200)); in TEST()
372 EXPECT_EQ(Ranges[2].Value, 0xff); in TEST()
373 EXPECT_EQ(Ranges[3].Range, AddressRange(0x200, 0x2ff)); in TEST()
374 EXPECT_EQ(Ranges[3].Value, 0x3); in TEST()
375 EXPECT_EQ(Ranges[4].Range, AddressRange(0x2ff, 0x300)); in TEST()
376 EXPECT_EQ(Ranges[4].Value, 0xff); in TEST()
377 EXPECT_EQ(Ranges[5].Range, AddressRange(0x300, 0x3ff)); in TEST()
378 EXPECT_EQ(Ranges[5].Value, 0x4); in TEST()
379 EXPECT_EQ(Ranges[6].Range, AddressRange(0x3ff, 0x400)); in TEST()
380 EXPECT_EQ(Ranges[6].Value, 0x5); in TEST()
381 EXPECT_EQ(Ranges[7].Range, AddressRange(0x400, 0x4ff)); in TEST()
382 EXPECT_EQ(Ranges[7].Value, 0x5); in TEST()
383 EXPECT_EQ(Ranges[8].Range, AddressRange(0x500, 0x5ff)); in TEST()
384 EXPECT_EQ(Ranges[8].Value, 0x6); in TEST()
385 EXPECT_EQ(Ranges[9].Range, AddressRange(0x600, 0x6ff)); in TEST()
386 EXPECT_EQ(Ranges[9].Value, 0x7); in TEST()
387 EXPECT_EQ(Ranges[10].Range, AddressRange(0x6ff, 0x700)); in TEST()
388 EXPECT_EQ(Ranges[10].Value, 0x8); in TEST()
392 AddressRangesMap Ranges; in TEST() local
397 // Fill ranges. Use the same mapped value. in TEST()
401 Ranges.insert({Start, End}, 0xffLL); in TEST()
404 // Check ranges. in TEST()
405 for (size_t Idx = 0; Idx + 1 < Ranges.size(); Idx++) { in TEST()
406 // Check that ranges are not intersected. in TEST()
407 EXPECT_FALSE(Ranges[Idx].Range.intersects(Ranges[Idx + 1].Range)); in TEST()
409 // Check that ranges are sorted and not adjusted. in TEST()
410 EXPECT_TRUE(Ranges[Idx].Range.end() <= Ranges[Idx + 1].Range.start()); in TEST()
413 Ranges.clear(); in TEST()
414 // Fill ranges. Use the various mapped value. in TEST()
419 Ranges.insert({Start, End}, Value); in TEST()
422 // Check ranges. in TEST()
423 for (size_t Idx = 0; Idx + 1 < Ranges.size(); Idx++) { in TEST()
424 // Check that ranges are not intersected. in TEST()
425 EXPECT_FALSE(Ranges[Idx].Range.intersects(Ranges[Idx + 1].Range)); in TEST()
427 // Check that ranges are sorted and not adjusted. in TEST()
428 EXPECT_TRUE(Ranges[Idx].Range.end() <= Ranges[Idx + 1].Range.start()); in TEST()