|
11 | 11 |
|
12 | 12 | #include "geom.hpp" |
13 | 13 |
|
| 14 | +#include <array> |
| 15 | + |
14 | 16 | using Coordinates = osmium::geom::Coordinates; |
15 | 17 |
|
16 | 18 | TEST_CASE("geom::distance", "[NoDB]") |
@@ -72,136 +74,108 @@ TEST_CASE("geom::split_linestring w/o split", "[NoDB]") |
72 | 74 | geom::split_linestring(line, 10.0, &result); |
73 | 75 |
|
74 | 76 | REQUIRE(result.size() == 1); |
75 | | - |
76 | | - REQUIRE(result[0].size() == 3); |
77 | | - REQUIRE(result[0][0] == Coordinates{0, 0}); |
78 | | - REQUIRE(result[0][1] == Coordinates{1, 2}); |
79 | | - REQUIRE(result[0][2] == Coordinates{2, 2}); |
| 77 | + REQUIRE(result[0] == line); |
80 | 78 | } |
81 | 79 |
|
82 | 80 | TEST_CASE("geom::split_linestring with split 0.5", "[NoDB]") |
83 | 81 | { |
84 | 82 | geom::linestring_t const line{Coordinates{0, 0}, Coordinates{1, 0}}; |
85 | 83 |
|
| 84 | + std::array<geom::linestring_t, 2> const expected{ |
| 85 | + geom::linestring_t{Coordinates{0, 0}, Coordinates{0.5, 0}}, |
| 86 | + geom::linestring_t{Coordinates{0.5, 0}, Coordinates{1, 0}}}; |
| 87 | + |
86 | 88 | std::vector<geom::linestring_t> result; |
87 | 89 |
|
88 | 90 | geom::split_linestring(line, 0.5, &result); |
89 | 91 |
|
90 | 92 | REQUIRE(result.size() == 2); |
91 | | - |
92 | | - REQUIRE(result[0].size() == 2); |
93 | | - REQUIRE(result[0][0] == Coordinates{0, 0}); |
94 | | - REQUIRE(result[0][1] == Coordinates{0.5, 0}); |
95 | | - |
96 | | - REQUIRE(result[1].size() == 2); |
97 | | - REQUIRE(result[1][0] == Coordinates{0.5, 0}); |
98 | | - REQUIRE(result[1][1] == Coordinates{1, 0}); |
| 93 | + REQUIRE(result[0] == expected[0]); |
| 94 | + REQUIRE(result[1] == expected[1]); |
99 | 95 | } |
100 | 96 |
|
101 | 97 | TEST_CASE("geom::split_linestring with split 0.4", "[NoDB]") |
102 | 98 | { |
103 | 99 | geom::linestring_t const line{Coordinates{0, 0}, Coordinates{1, 0}}; |
104 | 100 |
|
| 101 | + std::array<geom::linestring_t, 3> const expected{ |
| 102 | + geom::linestring_t{Coordinates{0, 0}, Coordinates{0.4, 0}}, |
| 103 | + geom::linestring_t{Coordinates{0.4, 0}, Coordinates{0.8, 0}}, |
| 104 | + geom::linestring_t{Coordinates{0.8, 0}, Coordinates{1, 0}}}; |
| 105 | + |
105 | 106 | std::vector<geom::linestring_t> result; |
106 | 107 |
|
107 | 108 | geom::split_linestring(line, 0.4, &result); |
108 | 109 |
|
109 | 110 | REQUIRE(result.size() == 3); |
110 | | - |
111 | | - REQUIRE(result[0].size() == 2); |
112 | | - REQUIRE(result[0][0] == Coordinates{0, 0}); |
113 | | - REQUIRE(result[0][1] == Coordinates{0.4, 0}); |
114 | | - |
115 | | - REQUIRE(result[1].size() == 2); |
116 | | - REQUIRE(result[1][0] == Coordinates{0.4, 0}); |
117 | | - REQUIRE(result[1][1] == Coordinates{0.8, 0}); |
118 | | - |
119 | | - REQUIRE(result[2].size() == 2); |
120 | | - REQUIRE(result[2][0] == Coordinates{0.8, 0}); |
121 | | - REQUIRE(result[2][1] == Coordinates{1, 0}); |
| 111 | + REQUIRE(result[0] == expected[0]); |
| 112 | + REQUIRE(result[1] == expected[1]); |
| 113 | + REQUIRE(result[2] == expected[2]); |
122 | 114 | } |
123 | 115 |
|
124 | 116 | TEST_CASE("geom::split_linestring with split 1.0 at start", "[NoDB]") |
125 | 117 | { |
126 | 118 | geom::linestring_t const line{Coordinates{0, 0}, Coordinates{2, 0}, |
127 | 119 | Coordinates{3, 0}, Coordinates{4, 0}}; |
128 | 120 |
|
| 121 | + std::array<geom::linestring_t, 4> const expected{ |
| 122 | + geom::linestring_t{Coordinates{0, 0}, Coordinates{1, 0}}, |
| 123 | + geom::linestring_t{Coordinates{1, 0}, Coordinates{2, 0}}, |
| 124 | + geom::linestring_t{Coordinates{2, 0}, Coordinates{3, 0}}, |
| 125 | + geom::linestring_t{Coordinates{3, 0}, Coordinates{4, 0}}}; |
| 126 | + |
129 | 127 | std::vector<geom::linestring_t> result; |
130 | 128 |
|
131 | 129 | geom::split_linestring(line, 1.0, &result); |
132 | 130 |
|
133 | 131 | REQUIRE(result.size() == 4); |
134 | | - |
135 | | - REQUIRE(result[0].size() == 2); |
136 | | - REQUIRE(result[0][0] == Coordinates{0, 0}); |
137 | | - REQUIRE(result[0][1] == Coordinates{1, 0}); |
138 | | - |
139 | | - REQUIRE(result[1].size() == 2); |
140 | | - REQUIRE(result[1][0] == Coordinates{1, 0}); |
141 | | - REQUIRE(result[1][1] == Coordinates{2, 0}); |
142 | | - |
143 | | - REQUIRE(result[2].size() == 2); |
144 | | - REQUIRE(result[2][0] == Coordinates{2, 0}); |
145 | | - REQUIRE(result[2][1] == Coordinates{3, 0}); |
146 | | - |
147 | | - REQUIRE(result[3].size() == 2); |
148 | | - REQUIRE(result[3][0] == Coordinates{3, 0}); |
149 | | - REQUIRE(result[3][1] == Coordinates{4, 0}); |
| 132 | + REQUIRE(result[0] == expected[0]); |
| 133 | + REQUIRE(result[1] == expected[1]); |
| 134 | + REQUIRE(result[2] == expected[2]); |
| 135 | + REQUIRE(result[3] == expected[3]); |
150 | 136 | } |
151 | 137 |
|
152 | 138 | TEST_CASE("geom::split_linestring with split 1.0 in middle", "[NoDB]") |
153 | 139 | { |
154 | 140 | geom::linestring_t const line{Coordinates{0, 0}, Coordinates{1, 0}, |
155 | 141 | Coordinates{3, 0}, Coordinates{4, 0}}; |
156 | 142 |
|
| 143 | + std::array<geom::linestring_t, 4> const expected{ |
| 144 | + geom::linestring_t{Coordinates{0, 0}, Coordinates{1, 0}}, |
| 145 | + geom::linestring_t{Coordinates{1, 0}, Coordinates{2, 0}}, |
| 146 | + geom::linestring_t{Coordinates{2, 0}, Coordinates{3, 0}}, |
| 147 | + geom::linestring_t{Coordinates{3, 0}, Coordinates{4, 0}}}; |
| 148 | + |
157 | 149 | std::vector<geom::linestring_t> result; |
158 | 150 |
|
159 | 151 | geom::split_linestring(line, 1.0, &result); |
160 | 152 |
|
161 | 153 | REQUIRE(result.size() == 4); |
162 | | - |
163 | | - REQUIRE(result[0].size() == 2); |
164 | | - REQUIRE(result[0][0] == Coordinates{0, 0}); |
165 | | - REQUIRE(result[0][1] == Coordinates{1, 0}); |
166 | | - |
167 | | - REQUIRE(result[1].size() == 2); |
168 | | - REQUIRE(result[1][0] == Coordinates{1, 0}); |
169 | | - REQUIRE(result[1][1] == Coordinates{2, 0}); |
170 | | - |
171 | | - REQUIRE(result[2].size() == 2); |
172 | | - REQUIRE(result[2][0] == Coordinates{2, 0}); |
173 | | - REQUIRE(result[2][1] == Coordinates{3, 0}); |
174 | | - |
175 | | - REQUIRE(result[3].size() == 2); |
176 | | - REQUIRE(result[3][0] == Coordinates{3, 0}); |
177 | | - REQUIRE(result[3][1] == Coordinates{4, 0}); |
| 154 | + REQUIRE(result[0] == expected[0]); |
| 155 | + REQUIRE(result[1] == expected[1]); |
| 156 | + REQUIRE(result[2] == expected[2]); |
| 157 | + REQUIRE(result[3] == expected[3]); |
178 | 158 | } |
179 | 159 |
|
180 | 160 | TEST_CASE("geom::split_linestring with split 1.0 at end", "[NoDB]") |
181 | 161 | { |
182 | 162 | geom::linestring_t const line{Coordinates{0, 0}, Coordinates{1, 0}, |
183 | 163 | Coordinates{2, 0}, Coordinates{4, 0}}; |
184 | 164 |
|
| 165 | + std::array<geom::linestring_t, 4> const expected{ |
| 166 | + geom::linestring_t{Coordinates{0, 0}, Coordinates{1, 0}}, |
| 167 | + geom::linestring_t{Coordinates{1, 0}, Coordinates{2, 0}}, |
| 168 | + geom::linestring_t{Coordinates{2, 0}, Coordinates{3, 0}}, |
| 169 | + geom::linestring_t{Coordinates{3, 0}, Coordinates{4, 0}}}; |
| 170 | + |
185 | 171 | std::vector<geom::linestring_t> result; |
186 | 172 |
|
187 | 173 | geom::split_linestring(line, 1.0, &result); |
188 | 174 |
|
189 | 175 | REQUIRE(result.size() == 4); |
190 | | - |
191 | | - REQUIRE(result[0].size() == 2); |
192 | | - REQUIRE(result[0][0] == Coordinates{0, 0}); |
193 | | - REQUIRE(result[0][1] == Coordinates{1, 0}); |
194 | | - |
195 | | - REQUIRE(result[1].size() == 2); |
196 | | - REQUIRE(result[1][0] == Coordinates{1, 0}); |
197 | | - REQUIRE(result[1][1] == Coordinates{2, 0}); |
198 | | - |
199 | | - REQUIRE(result[2].size() == 2); |
200 | | - REQUIRE(result[2][0] == Coordinates{2, 0}); |
201 | | - REQUIRE(result[2][1] == Coordinates{3, 0}); |
202 | | - |
203 | | - REQUIRE(result[3].size() == 2); |
204 | | - REQUIRE(result[3][0] == Coordinates{3, 0}); |
205 | | - REQUIRE(result[3][1] == Coordinates{4, 0}); |
| 176 | + REQUIRE(result[0] == expected[0]); |
| 177 | + REQUIRE(result[1] == expected[1]); |
| 178 | + REQUIRE(result[2] == expected[2]); |
| 179 | + REQUIRE(result[3] == expected[3]); |
206 | 180 | } |
207 | 181 |
|
0 commit comments