Changeset 6606 in josm


Ignore:
Timestamp:
2014-01-03T10:36:41+01:00 (10 years ago)
Author:
simon04
Message:

see #8519 - Lanes validator: add test for lanes>=lanes:forward+lanes:backward

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/validation/tests/Lanes.java

    r6603 r6606  
    3434    }
    3535
    36     protected void checkEqualNumberOfLanes(final OsmPrimitive p, String lanesKey, String message) {
     36    protected void checkNumberOfLanesByKey(final OsmPrimitive p, String lanesKey, String message) {
    3737        final Collection<String> keysForPattern = Utils.filter(p.keySet(),
    3838                Predicates.stringContainsPattern(Pattern.compile(":" + lanesKey + "$")));
     
    6262    }
    6363
     64    protected void checkNumberOfLanes(final OsmPrimitive p) {
     65        final String lanes = p.get("lanes");
     66        final String forward = Utils.firstNonNull(p.get("lanes:forward"), "0");
     67        final String backward = Utils.firstNonNull(p.get("lanes:backward"), "0");
     68        try {
     69        if (Integer.parseInt(lanes) < Integer.parseInt(forward) + Integer.parseInt(backward)) {
     70            errors.add(new TestError(this, Severity.WARNING,
     71                    tr("Number of {0} greater than {1}", tr("{0}+{1}", "lanes:forward", "lanes:backward"), "lanes"), 3101, p));
     72        }
     73        } catch (NumberFormatException ignore) {
     74            Main.debug(ignore.getMessage());
     75        }
     76    }
     77
    6478    @Override
    6579    public void check(OsmPrimitive p) {
    66         checkEqualNumberOfLanes(p, "lanes", tr("Number of lane dependent values inconsistent"));
    67         checkEqualNumberOfLanes(p, "lanes:forward", tr("Number of lane dependent values inconsistent in forward direction"));
    68         checkEqualNumberOfLanes(p, "lanes:backward", tr("Number of lane dependent values inconsistent in backward direction"));
     80        checkNumberOfLanesByKey(p, "lanes", tr("Number of lane dependent values inconsistent"));
     81        checkNumberOfLanesByKey(p, "lanes:forward", tr("Number of lane dependent values inconsistent in forward direction"));
     82        checkNumberOfLanesByKey(p, "lanes:backward", tr("Number of lane dependent values inconsistent in backward direction"));
     83        checkNumberOfLanes(p);
    6984    }
    7085}
  • trunk/test/unit/org/openstreetmap/josm/data/validation/tests/LanesTest.groovy

    r6598 r6606  
    4949        assert lanes.errors.isEmpty()
    5050    }
     51
     52    void test7() {
     53        lanes.check(TestUtils.createPrimitive("way lanes=3 lanes:forward=3 lanes:backward=7"))
     54        assert lanes.errors.get(0).getMessage() == "Number of lanes:forward+lanes:backward greater than lanes"
     55    }
    5156}
Note: See TracChangeset for help on using the changeset viewer.