source: josm/trunk/test/unit/org/openstreetmap/josm/data/validation/tests/PublicTransportRouteTestTest.java@ 10141

Last change on this file since 10141 was 10141, checked in by simon04, 8 years ago

Validate that stop position lies on public transport route

File size: 3.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.validation.tests;
3
4import static org.junit.Assert.assertEquals;
5
6import java.util.Arrays;
7import java.util.List;
8
9import org.junit.Before;
10import org.junit.Test;
11import org.openstreetmap.josm.JOSMFixture;
12import org.openstreetmap.josm.TestUtils;
13import org.openstreetmap.josm.data.osm.Node;
14import org.openstreetmap.josm.data.osm.Relation;
15import org.openstreetmap.josm.data.osm.RelationMember;
16import org.openstreetmap.josm.data.osm.Way;
17
18/**
19 * JUnit Test of "Public Transport Route" validation test.
20 */
21public class PublicTransportRouteTestTest {
22
23 final PublicTransportRouteTest test = new PublicTransportRouteTest();
24
25 /**
26 * Setup test.
27 */
28 @Before
29 public void setUp() {
30 JOSMFixture.createUnitTestFixture().init();
31 }
32
33 /**
34 * Performs various tests.
35 */
36 @Test
37 public void test() {
38 final List<Node> nodes = Arrays.asList(new Node(), new Node(), new Node(), new Node(), new Node(), new Node());
39 final Way w1 = TestUtils.newWay("", nodes.get(0), nodes.get(1));
40 final Way w2 = TestUtils.newWay("", nodes.get(1), nodes.get(2));
41 final Way w3 = TestUtils.newWay("", nodes.get(3), nodes.get(2));
42 final Way w4 = TestUtils.newWay("", nodes.get(3), nodes.get(4));
43
44 test.startTest(null);
45 test.visit(TestUtils.newRelation("type=route route=tram public_transport:version=2"));
46 test.visit(TestUtils.newRelation("type=unknown"));
47 assertEquals(0, test.getErrors().size());
48
49 final Relation r2 = TestUtils.newRelation("type=route route=tram public_transport:version=2",
50 new RelationMember("", w1), new RelationMember("", w2), new RelationMember("", w3), new RelationMember("", w4));
51 test.startTest(null);
52 test.visit(r2);
53 assertEquals(0, test.getErrors().size());
54
55 final Relation r3 = TestUtils.newRelation("type=route route=tram public_transport:version=2",
56 new RelationMember("forward", w1));
57 test.startTest(null);
58 test.visit(r3);
59 assertEquals(1, test.getErrors().size());
60 assertEquals("Route relation contains a 'forward/backward' role", test.getErrors().get(0).getMessage());
61
62 final Relation r4 = TestUtils.newRelation("type=route route=tram public_transport:version=2",
63 new RelationMember("", w1), new RelationMember("", w3), new RelationMember("", w2));
64 test.startTest(null);
65 test.visit(r4);
66 assertEquals(1, test.getErrors().size());
67 assertEquals("Route relation contains a gap", test.getErrors().get(0).getMessage());
68
69 final Relation r5 = TestUtils.newRelation("type=route route=tram public_transport:version=2",
70 new RelationMember("", w1), new RelationMember("", w2), new RelationMember("", w3),
71 new RelationMember("stop", w1.firstNode()), new RelationMember("stop", w4.lastNode()));
72 test.startTest(null);
73 test.visit(r5);
74 assertEquals(1, test.getErrors().size());
75 assertEquals("Stop position not part of route", test.getErrors().get(0).getMessage());
76 assertEquals(w4.lastNode(), test.getErrors().get(0).getPrimitives().iterator().next());
77
78 }
79}
Note: See TracBrowser for help on using the repository browser.