// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.data.validation.tests; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import org.openstreetmap.josm.JOSMFixture; import org.openstreetmap.josm.data.coor.LatLon; import org.openstreetmap.josm.data.osm.DataSet; import org.openstreetmap.josm.data.osm.Node; import org.openstreetmap.josm.data.osm.Way; import org.openstreetmap.josm.data.validation.TestError; /** * Unit test of {@link HighwaysTest}. */ public class HighwaysTest { /** * Setup test. */ @Before public void setUp() { JOSMFixture.createUnitTestFixture().init(); } private static Way createTestSetting(String highway, String highwayLink) { DataSet ds = new DataSet(); Node n00 = new Node(LatLon.ZERO); Node n10 = new Node(new LatLon(1, 0)); Node n20 = new Node(new LatLon(2, 0)); Node n01 = new Node(new LatLon(0, 1)); Node n11 = new Node(new LatLon(1, 1)); Node n21 = new Node(new LatLon(2, 1)); ds.addPrimitive(n00); ds.addPrimitive(n10); ds.addPrimitive(n20); ds.addPrimitive(n01); ds.addPrimitive(n11); ds.addPrimitive(n21); Way major = new Way(); major.addNode(n00); major.addNode(n10); major.addNode(n20); major.put("highway", highway); Way link = new Way(); link.addNode(n10); link.addNode(n11); link.put("highway", highwayLink); Way unclassified = new Way(); unclassified.addNode(n01); unclassified.addNode(n11); unclassified.addNode(n21); unclassified.put("highway", "unclassified"); ds.addPrimitive(major); ds.addPrimitive(link); ds.addPrimitive(unclassified); return link; } /** * Unit test of {@link Highways#isHighwayLinkOkay}. */ @Test public void testCombinations() { assertTrue(Highways.isHighwayLinkOkay(createTestSetting("primary", "primary_link"))); assertTrue(Highways.isHighwayLinkOkay(createTestSetting("primary", "primary"))); assertFalse(Highways.isHighwayLinkOkay(createTestSetting("primary", "secondary_link"))); assertFalse(Highways.isHighwayLinkOkay(createTestSetting("secondary", "primary_link"))); assertFalse(Highways.isHighwayLinkOkay(createTestSetting("secondary", "tertiary_link"))); assertTrue(Highways.isHighwayLinkOkay(createTestSetting("residential", "residential"))); } /** * Test source:maxspeed in United Kingdom. */ @Test public void testSourceMaxSpeedUnitedKingdom() { Way link = createTestSetting("primary", "primary"); link.put("maxspeed", "60 mph"); link.put("source:maxspeed", "UK:nsl_single"); Highways test = new Highways(); test.visit(link); assertEquals(1, test.getErrors().size()); TestError error = test.getErrors().get(0); assertTrue(error.isFixable()); assertTrue(error.getFix().executeCommand()); assertEquals("GB:nsl_single", link.get("source:maxspeed")); } }