| 35 | | nodes.get(0).setCoor(new LatLon(34.2680878298, 133.56336369008)); |
| 36 | | nodes.get(1).setCoor(new LatLon(34.25096598132, 133.54891792012)); |
| 37 | | nodes.get(2).setCoor(new LatLon(34.24466741332, 133.56693544639)); |
| 38 | | nodes.get(3).setCoor(new LatLon(34.26815342405, 133.56066502976)); |
| 39 | | nodes.get(4).setCoor(new LatLon(34.26567411471, 133.56132705125)); |
| | 35 | nodes.get(0).setCoor(new LatLon(34.2680, 133.563)); |
| | 36 | nodes.get(1).setCoor(new LatLon(34.2509, 133.548)); |
| | 37 | nodes.get(2).setCoor(new LatLon(34.2446, 133.566)); |
| | 38 | nodes.get(3).setCoor(new LatLon(34.2681, 133.560)); |
| | 39 | nodes.get(4).setCoor(new LatLon(34.2656, 133.561)); |
| | 40 | nodes.get(5).setCoor(new LatLon(34.2655, 133.562)); |
| | 89 | * First node is identical to an inner node ("P"-Shape). |
| | 90 | * This is considered okay. |
| | 91 | */ |
| | 92 | @Test |
| | 93 | public void testUnclosedWayFirstRepeated() { |
| | 94 | List<Node> nodes = createNodes(); |
| | 95 | |
| | 96 | Way w = (Way) OsmUtils.createPrimitive("way "); |
| | 97 | List<Node> wayNodes = new ArrayList<>(); |
| | 98 | wayNodes.add(nodes.get(0)); |
| | 99 | wayNodes.add(nodes.get(1)); |
| | 100 | wayNodes.add(nodes.get(2)); |
| | 101 | wayNodes.add(nodes.get(0)); |
| | 102 | wayNodes.add(nodes.get(3)); |
| | 103 | wayNodes.add(nodes.get(4)); |
| | 104 | w.setNodes(wayNodes); |
| | 105 | SelfIntersectingWay test = new SelfIntersectingWay(); |
| | 106 | test.visit(w); |
| | 107 | Assert.assertEquals(0, test.getErrors().size()); |
| | 108 | } |
| | 109 | |
| | 110 | /** |
| | 156 | /** |
| | 157 | * Closed way contains a spike. |
| | 158 | * This is considered to be an error. |
| | 159 | */ |
| | 160 | @Test |
| | 161 | public void testSpikeWithStartInClosedWay() { |
| | 162 | List<Node> nodes = createNodes(); |
| | 163 | |
| | 164 | Way w = (Way) OsmUtils.createPrimitive("way "); |
| | 165 | List<Node> wayNodes = new ArrayList<>(); |
| | 166 | wayNodes.add(nodes.get(0)); |
| | 167 | wayNodes.add(nodes.get(1)); |
| | 168 | wayNodes.add(nodes.get(0)); // problem |
| | 169 | wayNodes.add(nodes.get(3)); |
| | 170 | wayNodes.add(nodes.get(4)); |
| | 171 | wayNodes.add(nodes.get(0)); |
| | 172 | w.setNodes(wayNodes); |
| | 173 | SelfIntersectingWay test = new SelfIntersectingWay(); |
| | 174 | test.visit(w); |
| | 175 | Assert.assertEquals(1, test.getErrors().size()); |
| | 176 | Assert.assertTrue(test.getErrors().iterator().next().getHighlighted().contains(nodes.get(0))); |
| | 177 | } |
| | 178 | |
| | 179 | /** |
| | 180 | * Closed way contains a spike. |
| | 181 | * This is considered to be an error. |
| | 182 | */ |
| | 183 | @Test |
| | 184 | public void testSpikeWithEndInClosedWay() { |
| | 185 | List<Node> nodes = createNodes(); |
| | 186 | |
| | 187 | Way w = (Way) OsmUtils.createPrimitive("way "); |
| | 188 | List<Node> wayNodes = new ArrayList<>(); |
| | 189 | wayNodes.add(nodes.get(0)); |
| | 190 | wayNodes.add(nodes.get(1)); |
| | 191 | wayNodes.add(nodes.get(2)); |
| | 192 | wayNodes.add(nodes.get(0)); // problem |
| | 193 | wayNodes.add(nodes.get(3)); |
| | 194 | wayNodes.add(nodes.get(0)); |
| | 195 | w.setNodes(wayNodes); |
| | 196 | SelfIntersectingWay test = new SelfIntersectingWay(); |
| | 197 | test.visit(w); |
| | 198 | Assert.assertEquals(1, test.getErrors().size()); |
| | 199 | Assert.assertTrue(test.getErrors().iterator().next().getHighlighted().contains(nodes.get(0))); |
| | 200 | } |
| | 201 | |
| | 202 | /** |
| | 203 | * Closed way contains a spike. |
| | 204 | * This is considered to be an error. |
| | 205 | */ |
| | 206 | @Test |
| | 207 | public void testSpikeInClosedWay() { |
| | 208 | List<Node> nodes = createNodes(); |
| | 209 | |
| | 210 | Way w = (Way) OsmUtils.createPrimitive("way "); |
| | 211 | List<Node> wayNodes = new ArrayList<>(); |
| | 212 | wayNodes.add(nodes.get(0)); |
| | 213 | wayNodes.add(nodes.get(1)); |
| | 214 | wayNodes.add(nodes.get(2)); |
| | 215 | wayNodes.add(nodes.get(3)); |
| | 216 | wayNodes.add(nodes.get(2)); |
| | 217 | wayNodes.add(nodes.get(0)); |
| | 218 | w.setNodes(wayNodes); |
| | 219 | SelfIntersectingWay test = new SelfIntersectingWay(); |
| | 220 | test.visit(w); |
| | 221 | Assert.assertEquals(1, test.getErrors().size()); |
| | 222 | Assert.assertTrue(test.getErrors().iterator().next().getHighlighted().contains(nodes.get(2))); |
| | 223 | } |
| | 224 | |
| | 225 | /** |
| | 226 | * Closed way with barbell shape (a-b-c-a-d-e-f-d). |
| | 227 | * This is considered to be an error. |
| | 228 | */ |
| | 229 | @Test |
| | 230 | public void testClosedWayBarbell() { |
| | 231 | List<Node> nodes = createNodes(); |
| | 232 | |
| | 233 | Way w = (Way) OsmUtils.createPrimitive("way "); |
| | 234 | List<Node> wayNodes = new ArrayList<>(); |
| | 235 | wayNodes.add(nodes.get(0)); |
| | 236 | wayNodes.add(nodes.get(1)); |
| | 237 | wayNodes.add(nodes.get(2)); |
| | 238 | wayNodes.add(nodes.get(0)); |
| | 239 | wayNodes.add(nodes.get(3)); |
| | 240 | wayNodes.add(nodes.get(4)); |
| | 241 | wayNodes.add(nodes.get(5)); |
| | 242 | wayNodes.add(nodes.get(3)); |
| | 243 | w.setNodes(wayNodes); |
| | 244 | SelfIntersectingWay test = new SelfIntersectingWay(); |
| | 245 | test.visit(w); |
| | 246 | Assert.assertEquals(1, test.getErrors().size()); |
| | 247 | Assert.assertTrue(test.getErrors().iterator().next().getHighlighted().contains(nodes.get(3))); |
| | 248 | } |
| | 249 | |