Ticket #19008: 19008.link-roads.patch

File 19008.link-roads.patch, 4.1 KB (added by GerdP, 6 years ago)
  • src/org/openstreetmap/josm/data/validation/tests/Highways.java

     
    160160     */
    161161    public static boolean isHighwayLinkOkay(final Way way) {
    162162        final String highway = way.get(HIGHWAY);
    163         if (highway == null || !highway.endsWith("_link")
    164                 || !IN_DOWNLOADED_AREA.test(way.getNode(0)) || !IN_DOWNLOADED_AREA.test(way.getNode(way.getNodesCount()-1))) {
     163        if (highway == null || !highway.endsWith("_link")) {
    165164            return true;
    166165        }
    167166
     
    192191            }
    193192        }
    194193        // Link roads should always at least one adjacent segment of same class
    195         return !sameClass.isEmpty();
     194        return !sameClass.isEmpty() || !IN_DOWNLOADED_AREA_STRICT.test(way.getNode(0)) || !IN_DOWNLOADED_AREA_STRICT.test(way.lastNode());
    196195    }
    197196
    198197    private void testHighwayLink(final Way way) {
  • test/unit/org/openstreetmap/josm/data/validation/tests/HighwaysTest.java

     
    1313import org.junit.Test;
    1414import org.openstreetmap.josm.JOSMFixture;
    1515import org.openstreetmap.josm.TestUtils;
     16import org.openstreetmap.josm.data.Bounds;
     17import org.openstreetmap.josm.data.DataSource;
    1618import org.openstreetmap.josm.data.coor.LatLon;
    1719import org.openstreetmap.josm.data.osm.DataSet;
    1820import org.openstreetmap.josm.data.osm.Node;
     
    3335        JOSMFixture.createUnitTestFixture().init();
    3436    }
    3537
    36     private static Way createTestSetting(String highway, String highwayLink) {
     38    private static Way createTestSetting(String highway, String highwayLink, boolean withArea) {
    3739        DataSet ds = new DataSet();
    3840
    3941        Node n00 = new Node(LatLon.ZERO);
     
    6870        ds.addPrimitive(major);
    6971        ds.addPrimitive(link);
    7072        ds.addPrimitive(unclassified);
    71 
     73        if (withArea) {
     74            ds.addDataSource(new DataSource(new Bounds(-90, -180, 90, 180), "Everywhere"));
     75        }
    7276        return link;
    7377    }
    7478
     
    7781     */
    7882    @Test
    7983    public void testCombinations() {
    80         assertTrue(Highways.isHighwayLinkOkay(createTestSetting("primary", "primary_link")));
    81         assertTrue(Highways.isHighwayLinkOkay(createTestSetting("primary", "primary")));
    82         assertFalse(Highways.isHighwayLinkOkay(createTestSetting("primary", "secondary_link")));
    83         assertFalse(Highways.isHighwayLinkOkay(createTestSetting("secondary", "primary_link")));
    84         assertFalse(Highways.isHighwayLinkOkay(createTestSetting("secondary", "tertiary_link")));
    85         assertTrue(Highways.isHighwayLinkOkay(createTestSetting("residential", "residential")));
     84        assertTrue(Highways.isHighwayLinkOkay(createTestSetting("primary", "primary_link", true)));
     85        assertTrue(Highways.isHighwayLinkOkay(createTestSetting("primary", "primary", true)));
     86        assertFalse(Highways.isHighwayLinkOkay(createTestSetting("primary", "secondary_link", true)));
     87        assertFalse(Highways.isHighwayLinkOkay(createTestSetting("secondary", "primary_link", true)));
     88        assertFalse(Highways.isHighwayLinkOkay(createTestSetting("secondary", "tertiary_link", true)));
     89        assertTrue(Highways.isHighwayLinkOkay(createTestSetting("residential", "residential", true)));
     90        // link to high: don't warn when no download area
     91        assertTrue(Highways.isHighwayLinkOkay(createTestSetting("secondary", "primary_link", false)));
    8692    }
    8793
    8894    /**
     
    9096     */
    9197    @Test
    9298    public void testSourceMaxSpeedUnitedKingdom() {
    93         Way link = createTestSetting("primary", "primary");
     99        Way link = createTestSetting("primary", "primary", false);
    94100        link.put("maxspeed", "60 mph");
    95101        link.put("source:maxspeed", "UK:nsl_single");
    96102        Highways test = new Highways();