Ignore:
Timestamp:
2016-09-17T14:37:53+02:00 (8 years ago)
Author:
Don-vip
Message:

fix #13643 - prevent creation of DuplicateNode errors with empty list of primitives, improve unit test

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/data/validation/tests/DuplicateNodeTest.java

    r10945 r11007  
    99import org.openstreetmap.josm.data.osm.DataSet;
    1010import org.openstreetmap.josm.data.osm.Node;
     11import org.openstreetmap.josm.data.osm.Tag;
     12import org.openstreetmap.josm.data.osm.Way;
     13import org.openstreetmap.josm.data.validation.TestError;
    1114import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
    1215import org.openstreetmap.josm.testutils.JOSMTestRules;
     
    2629    public JOSMTestRules test = new JOSMTestRules();
    2730
     31    private static final DuplicateNode TEST = new DuplicateNode();
     32
     33    private static void doTest(int code, Tag ... tags) {
     34        performTest(code, buildDataSet(tags), true);
     35    }
     36
     37    private static void performTest(int code, DataSet ds, boolean fixable) {
     38        TEST.startTest(NullProgressMonitor.INSTANCE);
     39        TEST.visit(ds.allPrimitives());
     40        TEST.endTest();
     41
     42        assertEquals(1, TEST.getErrors().size());
     43        TestError error = TEST.getErrors().iterator().next();
     44        assertEquals(code, error.getCode());
     45        assertEquals(fixable, error.isFixable());
     46    }
     47
     48    private static DataSet buildDataSet(Tag... tags) {
     49        DataSet ds = new DataSet();
     50
     51        Node a = new Node(new LatLon(10.0, 5.0));
     52        Node b = new Node(new LatLon(10.0, 5.0));
     53        ds.addPrimitive(a);
     54        ds.addPrimitive(b);
     55
     56        if (tags.length > 0) {
     57            Way parent = new Way();
     58            parent.addNode(a);
     59            parent.addNode(b);
     60            for (Tag tag : tags) {
     61                parent.put(tag);
     62            }
     63            ds.addPrimitive(parent);
     64        }
     65        return ds;
     66    }
     67
    2868    /**
    29      * Test of "Duplicate node" validation test.
     69     * Test of "Duplicate node" validation test - different tag sets.
    3070     */
    3171    @Test
     
    3878        ds.addPrimitive(b);
    3979
    40         DuplicateNode test = new DuplicateNode();
    41         test.startTest(NullProgressMonitor.INSTANCE);
    42         test.visit(ds.allPrimitives());
    43         test.endTest();
     80        a.put("foo", "bar");
     81        b.put("bar", "foo");
    4482
    45         assertEquals(1, test.getErrors().size());
     83        performTest(DuplicateNode.DUPLICATE_NODE, ds, false);
     84    }
     85
     86    /**
     87     * Test of "Duplicate node" validation test - mixed case.
     88     */
     89    @Test
     90    public void testDuplicateNodeMixed() {
     91        doTest(DuplicateNode.DUPLICATE_NODE_MIXED, new Tag("building", "foo"), new Tag("highway", "bar"));
     92    }
     93
     94    /**
     95     * Test of "Duplicate node" validation test - other case.
     96     */
     97    @Test
     98    public void testDuplicateNodeOther() {
     99        doTest(DuplicateNode.DUPLICATE_NODE_OTHER);
     100    }
     101
     102    /**
     103     * Test of "Duplicate node" validation test - building case.
     104     */
     105    @Test
     106    public void testDuplicateNodeBuilding() {
     107        doTest(DuplicateNode.DUPLICATE_NODE_BUILDING, new Tag("building", "foo"));
     108    }
     109
     110    /**
     111     * Test of "Duplicate node" validation test - boundary case.
     112     */
     113    @Test
     114    public void testDuplicateNodeBoundary() {
     115        doTest(DuplicateNode.DUPLICATE_NODE_BOUNDARY, new Tag("boundary", "foo"));
     116    }
     117
     118    /**
     119     * Test of "Duplicate node" validation test - highway case.
     120     */
     121    @Test
     122    public void testDuplicateNodeHighway() {
     123        doTest(DuplicateNode.DUPLICATE_NODE_HIGHWAY, new Tag("highway", "foo"));
     124    }
     125
     126    /**
     127     * Test of "Duplicate node" validation test - landuse case.
     128     */
     129    @Test
     130    public void testDuplicateNodeLanduse() {
     131        doTest(DuplicateNode.DUPLICATE_NODE_LANDUSE, new Tag("landuse", "foo"));
     132    }
     133
     134    /**
     135     * Test of "Duplicate node" validation test - natural case.
     136     */
     137    @Test
     138    public void testDuplicateNodeNatural() {
     139        doTest(DuplicateNode.DUPLICATE_NODE_NATURAL, new Tag("natural", "foo"));
     140    }
     141
     142    /**
     143     * Test of "Duplicate node" validation test - power case.
     144     */
     145    @Test
     146    public void testDuplicateNodePower() {
     147        doTest(DuplicateNode.DUPLICATE_NODE_POWER, new Tag("power", "foo"));
     148    }
     149
     150    /**
     151     * Test of "Duplicate node" validation test - railway case.
     152     */
     153    @Test
     154    public void testDuplicateNodeRailway() {
     155        doTest(DuplicateNode.DUPLICATE_NODE_RAILWAY, new Tag("railway", "foo"));
     156    }
     157
     158    /**
     159     * Test of "Duplicate node" validation test - waterway case.
     160     */
     161    @Test
     162    public void testDuplicateNodeWaterway() {
     163        doTest(DuplicateNode.DUPLICATE_NODE_WATERWAY, new Tag("waterway", "foo"));
    46164    }
    47165}
Note: See TracChangeset for help on using the changeset viewer.