Changeset 6598 in josm
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/src/org/openstreetmap/josm/data/validation/tests/Lanes.java ¶
r6592 r6598 10 10 import java.util.Collection; 11 11 import java.util.HashSet; 12 import java.util.Set; 12 13 import java.util.regex.Pattern; 13 14 … … 24 25 } 25 26 26 protected void checkEqualNumberOfLanes(final OsmPrimitive p, Pattern keyPattern, String message) { 27 final Collection<String> keysForPattern = Utils.filter(p.keySet(), Predicates.stringContainsPattern(keyPattern)); 28 if (keysForPattern.size() < 2) { 27 protected void checkEqualNumberOfLanes(final OsmPrimitive p, String lanesKey, String message) { 28 final Collection<String> keysForPattern = Utils.filter(p.keySet(), 29 Predicates.stringContainsPattern(Pattern.compile(":" + lanesKey + "$"))); 30 if (keysForPattern.size() < 1) { 29 31 // nothing to check 30 32 return; 31 33 } 32 final Collection<Integer> lanesCount = Utils.transform(keysForPattern, new Utils.Function<String, Integer>() {34 final Set<Integer> lanesCount = new HashSet<Integer>(Utils.transform(keysForPattern, new Utils.Function<String, Integer>() { 33 35 @Override 34 36 public Integer apply(String key) { 35 37 return getLanesCount(p.get(key)); 36 38 } 37 }); 38 // if not all numbers are the same39 if (new HashSet<Integer>(lanesCount).size() > 1) {39 })); 40 if (lanesCount.size() > 1) { 41 // if not all numbers are the same 40 42 errors.add(new TestError(this, Severity.WARNING, message, 3100, p)); 43 } else if (lanesCount.size() == 1 && p.hasKey(lanesKey)) { 44 // ensure that lanes <= *:lanes 45 try { 46 if (Integer.parseInt(p.get(lanesKey)) > lanesCount.iterator().next()) { 47 errors.add(new TestError(this, Severity.WARNING, tr("Number of {0} greater than {1}", lanesKey, "*:" + lanesKey), 3100, p)); 48 } 49 } catch (NumberFormatException ignore) { 50 } 41 51 } 42 52 } … … 44 54 @Override 45 55 public void check(OsmPrimitive p) { 46 checkEqualNumberOfLanes(p, Pattern.compile(":lanes$"), tr("Number of lane dependent values inconsistent"));47 checkEqualNumberOfLanes(p, Pattern.compile(":lanes:forward"), tr("Number of lane dependent values inconsistent in forward direction"));48 checkEqualNumberOfLanes(p, Pattern.compile(":lanes:backward"), tr("Number of lane dependent values inconsistent in backward direction"));56 checkEqualNumberOfLanes(p, "lanes", tr("Number of lane dependent values inconsistent")); 57 checkEqualNumberOfLanes(p, "lanes:forward", tr("Number of lane dependent values inconsistent in forward direction")); 58 checkEqualNumberOfLanes(p, "lanes:backward", tr("Number of lane dependent values inconsistent in backward direction")); 49 59 } 50 60 } -
TabularUnified trunk/test/unit/org/openstreetmap/josm/data/validation/tests/LanesTest.groovy ¶
r6592 r6598 39 39 assert lanes.errors.get(0).getMessage() == "Number of lane dependent values inconsistent in forward direction" 40 40 } 41 42 void test5() { 43 lanes.check(TestUtils.createPrimitive("way lanes:forward=5 turn:lanes:forward=left|right")) 44 assert lanes.errors.get(0).getMessage() == "Number of lanes:forward greater than *:lanes:forward" 45 } 46 47 void test6() { 48 lanes.check(TestUtils.createPrimitive("way lanes:forward=foo|bar turn:lanes:forward=foo+bar")) 49 assert lanes.errors.isEmpty() 50 } 41 51 }
Note:
See TracChangeset
for help on using the changeset viewer.