source: josm/trunk/test/unit/org/openstreetmap/josm/data/validation/tests/SelfIntersectingWayTest.java@ 11201

Last change on this file since 11201 was 11201, checked in by Don-vip, 8 years ago

sonar - squid:S3578 - Test methods should comply with a naming convention

  • Property svn:eol-style set to native
File size: 4.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.validation.tests;
3
4import java.util.ArrayList;
5import java.util.List;
6
7import org.junit.Assert;
8import org.junit.BeforeClass;
9import org.junit.Test;
10import org.openstreetmap.josm.JOSMFixture;
11import org.openstreetmap.josm.data.coor.LatLon;
12import org.openstreetmap.josm.data.osm.Node;
13import org.openstreetmap.josm.data.osm.OsmUtils;
14import org.openstreetmap.josm.data.osm.Way;
15
16/**
17 * JUnit Test of Multipolygon validation test.
18 */
19public class SelfIntersectingWayTest {
20
21 /**
22 * Setup test.
23 * @throws Exception if test cannot be initialized
24 */
25 @BeforeClass
26 public static void setUp() throws Exception {
27 JOSMFixture.createUnitTestFixture().init(true);
28 }
29
30 private static List<Node> createNodes() {
31 List<Node> nodes = new ArrayList<>();
32 for (int i = 0; i < 5; i++) {
33 nodes.add(new Node(i+1));
34 }
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));
40 return nodes;
41 }
42
43 /**
44 * Self-Intersection at inner node (not first / last).
45 */
46 @Test
47 public void testUnclosedWayNormal() {
48 List<Node> nodes = createNodes();
49
50 Way w = (Way) OsmUtils.createPrimitive("way ");
51 List<Node> wayNodes = new ArrayList<>();
52 wayNodes.add(nodes.get(0));
53 wayNodes.add(nodes.get(1));
54 wayNodes.add(nodes.get(2));
55 wayNodes.add(nodes.get(1)); // problem
56 wayNodes.add(nodes.get(3));
57 wayNodes.add(nodes.get(4));
58 w.setNodes(wayNodes);
59 SelfIntersectingWay test = new SelfIntersectingWay();
60 test.visit(w);
61 Assert.assertEquals(1, test.getErrors().size());
62 Assert.assertTrue(test.getErrors().iterator().next().getHighlighted().contains(nodes.get(1)));
63 }
64
65 /**
66 * First node is identical to an inner node ("P"-Shape).
67 * This is considered okay.
68 */
69 @Test
70 public void testUnclosedWayFirst() {
71 List<Node> nodes = createNodes();
72
73 Way w = (Way) OsmUtils.createPrimitive("way ");
74 List<Node> wayNodes = new ArrayList<>();
75 wayNodes.add(nodes.get(0));
76 wayNodes.add(nodes.get(1));
77 wayNodes.add(nodes.get(2));
78 wayNodes.add(nodes.get(0)); // problem
79 wayNodes.add(nodes.get(3));
80 wayNodes.add(nodes.get(4));
81 w.setNodes(wayNodes);
82 SelfIntersectingWay test = new SelfIntersectingWay();
83 test.visit(w);
84 Assert.assertEquals(0, test.getErrors().size());
85 }
86
87 /**
88 * Last node is identical to an inner node ("b"-Shape).
89 * This is considered okay.
90 */
91 @Test
92 public void testUnclosedWayLast() {
93 List<Node> nodes = createNodes();
94
95 Way w = (Way) OsmUtils.createPrimitive("way ");
96 List<Node> wayNodes = new ArrayList<>();
97 wayNodes.add(nodes.get(0));
98 wayNodes.add(nodes.get(1)); // problem node
99 wayNodes.add(nodes.get(2));
100 wayNodes.add(nodes.get(3));
101 wayNodes.add(nodes.get(4));
102 wayNodes.add(nodes.get(1));
103 w.setNodes(wayNodes);
104 SelfIntersectingWay test = new SelfIntersectingWay();
105 test.visit(w);
106 Assert.assertEquals(0, test.getErrors().size());
107 }
108
109 /**
110 * Both endpoints join at one inner node ("8"-shape).
111 * This is considered okay.
112 */
113 @Test
114 public void testClosedWay() {
115 List<Node> nodes = createNodes();
116
117 Way w = (Way) OsmUtils.createPrimitive("way ");
118 List<Node> wayNodes = new ArrayList<>();
119 wayNodes.add(nodes.get(0));
120 wayNodes.add(nodes.get(1));
121 wayNodes.add(nodes.get(2));
122 wayNodes.add(nodes.get(0)); // problem
123 wayNodes.add(nodes.get(3));
124 wayNodes.add(nodes.get(4));
125 wayNodes.add(nodes.get(0));
126 w.setNodes(wayNodes);
127 SelfIntersectingWay test = new SelfIntersectingWay();
128 test.visit(w);
129 Assert.assertEquals(0, test.getErrors().size());
130 }
131
132}
Note: See TracBrowser for help on using the repository browser.