Ignore:
Timestamp:
2020-06-14T19:35:04+02:00 (4 years ago)
Author:
simon04
Message:

fix #18258 - OsmReader: Allow end user to know what the original id of a feature was (patch by taylor.smock, modified)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/io/OsmReaderTest.java

    r15470 r16641  
    2323import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
    2424import org.openstreetmap.josm.gui.progress.ProgressMonitor;
     25import org.openstreetmap.josm.io.OsmReader.Options;
    2526import org.openstreetmap.josm.testutils.JOSMTestRules;
    2627
     
    8384        try (InputStream in = new ByteArrayInputStream(
    8485                ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) {
    85             assertTrue(OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, parseUnknownAttributes).allPrimitives()
     86            assertTrue(OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, Options.CONVERT_UNKNOWN_TO_TAGS).allPrimitives()
    8687                    .isEmpty());
     88        }
     89        testUnknown(osm, parseUnknownAttributes, true);
     90        testUnknown(osm, parseUnknownAttributes, true);
     91    }
     92
     93    private static void testUnknown(String osm, boolean parseUnknownAttributes, boolean keepOriginalId)
     94            throws Exception {
     95        try (InputStream in = new ByteArrayInputStream(
     96                ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) {
     97            assertTrue(OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, Options.CONVERT_UNKNOWN_TO_TAGS, Options.SAVE_ORIGINAL_ID)
     98                    .allPrimitives().isEmpty());
    8799        }
    88100    }
     
    141153     * Test valid data.
    142154     * @param osm OSM data without XML prefix
    143      * @param parseUnknownAttributes if true, attempt to parse unknown xml attributes
     155     * @param options The options to use to parse the data
    144156     * @return parsed data set
    145157     * @throws Exception if any error occurs
    146158     */
    147     private static DataSet testValidData(String osm, boolean parseUnknownAttributes) throws Exception {
    148         try (InputStream in = new ByteArrayInputStream(
    149                 ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) {
    150             return OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, parseUnknownAttributes);
     159    private static DataSet testValidData(String osm, Options... options) throws Exception {
     160        try (InputStream in = new ByteArrayInputStream(
     161                ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) {
     162            return OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, options);
    151163        }
    152164    }
     
    183195        try (InputStream in = new ByteArrayInputStream(
    184196                ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) {
    185             OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, parseUnknownAttributes);
     197            OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, Options.CONVERT_UNKNOWN_TO_TAGS);
    186198            fail("should throw exception");
    187199        } catch (IllegalDataException e) {
     
    325337        String gdprChangeset = "<osm version='0.6'><node id='1' version='1' changeset='0'/></osm>";
    326338        testValidData(gdprChangeset);
    327         testValidData(gdprChangeset, true);
    328         testValidData(gdprChangeset, false);
     339        testValidData(gdprChangeset, Options.CONVERT_UNKNOWN_TO_TAGS);
     340        testValidData(gdprChangeset, (Options) null);
     341        testValidData(gdprChangeset, Options.SAVE_ORIGINAL_ID);
     342        testValidData(gdprChangeset, Options.values());
    329343    }
    330344
     
    406420                "<remark>runtime error: Query ran out of memory in \"query\" at line 5.</remark>\r\n" +
    407421                "</osm>";
    408         for (DataSet ds : Arrays.asList(testValidData(query), testValidData(query, true), testValidData(query, false))) {
     422        for (DataSet ds : Arrays.asList(testValidData(query), testValidData(query, Options.CONVERT_UNKNOWN_TO_TAGS), testValidData(query, (Options) null),
     423                testValidData(query, Options.SAVE_ORIGINAL_ID), testValidData(query, Options.values()))) {
    409424            assertEquals("runtime error: Query ran out of memory in \"query\" at line 5.", ds.getRemark());
    410425        }
     
    421436        DataSet ds = testValidData(testData);
    422437        assertEquals(0, ds.getNodes().iterator().next().getKeys().size());
    423 
    424         ds = testValidData(testData, true);
     438        assertEquals(1, ds.getNodes().iterator().next().getUniqueId());
     439
     440        ds = testValidData(testData, Options.CONVERT_UNKNOWN_TO_TAGS);
    425441        Node firstNode = ds.getNodes().iterator().next();
    426442        assertEquals(1, firstNode.getKeys().size());
    427443        assertEquals("randomvalue", firstNode.get("randomkey"));
    428 
    429         ds = testValidData(testData, false);
     444        assertEquals(1, ds.getNodes().iterator().next().getUniqueId());
     445
     446
     447        ds = testValidData(testData, (Options) null);
    430448        assertEquals(0, ds.getNodes().iterator().next().getKeys().size());
     449        assertEquals(1, ds.getNodes().iterator().next().getUniqueId());
    431450    }
    432451}
Note: See TracChangeset for help on using the changeset viewer.