Commit | Line | Data |
---|---|---|
a79b1bc6 SM |
1 | /* Self tests for mem ranges for GDB, the GNU debugger. |
2 | ||
b811d2c2 | 3 | Copyright (C) 2017-2020 Free Software Foundation, Inc. |
a79b1bc6 SM |
4 | |
5 | This file is part of GDB. | |
6 | ||
7 | This program is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 3 of the License, or | |
10 | (at your option) any later version. | |
11 | ||
12 | This program is distributed in the hope that it will be useful, | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
19 | ||
20 | #include "defs.h" | |
268a13a5 | 21 | #include "gdbsupport/selftest.h" |
a79b1bc6 SM |
22 | #include "memrange.h" |
23 | ||
24 | namespace selftests { | |
25 | namespace memrange_tests { | |
26 | ||
27 | static void | |
28 | normalize_mem_ranges_tests () | |
29 | { | |
30 | /* Empty vector. */ | |
31 | { | |
32 | std::vector<mem_range> ranges; | |
33 | ||
34 | normalize_mem_ranges (&ranges); | |
35 | ||
36 | SELF_CHECK (ranges.size () == 0); | |
37 | } | |
38 | ||
39 | /* With one range. */ | |
40 | { | |
41 | std::vector<mem_range> ranges; | |
42 | ||
43 | ranges.emplace_back (10, 20); | |
44 | ||
45 | normalize_mem_ranges (&ranges); | |
46 | ||
47 | SELF_CHECK (ranges.size () == 1); | |
48 | SELF_CHECK (ranges[0] == mem_range (10, 20)); | |
49 | } | |
50 | ||
51 | /* Completely disjoint ranges. */ | |
52 | { | |
53 | std::vector<mem_range> ranges; | |
54 | ||
55 | ranges.emplace_back (20, 1); | |
56 | ranges.emplace_back (10, 1); | |
57 | ||
58 | normalize_mem_ranges (&ranges); | |
59 | ||
60 | SELF_CHECK (ranges.size () == 2); | |
61 | SELF_CHECK (ranges[0] == mem_range (10, 1)); | |
62 | SELF_CHECK (ranges[1] == mem_range (20, 1)); | |
63 | } | |
64 | ||
65 | /* Overlapping and contiguous ranges. */ | |
66 | { | |
67 | std::vector<mem_range> ranges; | |
68 | ||
69 | ranges.emplace_back (5, 10); | |
70 | ranges.emplace_back (10, 10); | |
71 | ranges.emplace_back (15, 10); | |
72 | ||
73 | normalize_mem_ranges (&ranges); | |
74 | ||
75 | SELF_CHECK (ranges.size () == 1); | |
76 | SELF_CHECK (ranges[0] == mem_range (5, 20)); | |
77 | } | |
78 | ||
79 | /* Duplicate ranges. */ | |
80 | { | |
81 | std::vector<mem_range> ranges; | |
82 | ||
83 | ranges.emplace_back (10, 10); | |
84 | ranges.emplace_back (10, 10); | |
85 | ||
86 | normalize_mem_ranges (&ranges); | |
87 | ||
88 | SELF_CHECK (ranges.size () == 1); | |
89 | SELF_CHECK (ranges[0] == mem_range (10, 10)); | |
90 | } | |
91 | ||
92 | /* Range completely inside another. */ | |
93 | { | |
94 | std::vector<mem_range> ranges; | |
95 | ||
96 | ranges.emplace_back (14, 2); | |
97 | ranges.emplace_back (10, 10); | |
98 | ||
99 | normalize_mem_ranges (&ranges); | |
100 | ||
101 | SELF_CHECK (ranges.size () == 1); | |
102 | SELF_CHECK (ranges[0] == mem_range (10, 10)); | |
103 | } | |
104 | } | |
105 | ||
106 | } /* namespace memrange_tests */ | |
107 | } /* namespace selftests */ | |
108 | ||
6c265988 | 109 | void _initialize_memrange_selftests (); |
a79b1bc6 SM |
110 | void |
111 | _initialize_memrange_selftests () | |
112 | { | |
113 | selftests::register_test | |
114 | ("normalize_mem_ranges", | |
115 | selftests::memrange_tests::normalize_mem_ranges_tests); | |
116 | } |