Changeset 16642 in josm for trunk/test/unit/org
- Timestamp:
- 2020-06-14T19:35:06+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/test/unit/org/openstreetmap/josm/io/OsmReaderTest.java
r16641 r16642 40 40 public JOSMTestRules test = new JOSMTestRules(); 41 41 42 private static Options[][] options() { 43 return new Options[][]{ 44 new Options[]{}, 45 new Options[]{Options.CONVERT_UNKNOWN_TO_TAGS}, 46 new Options[]{Options.SAVE_ORIGINAL_ID}, 47 new Options[]{Options.CONVERT_UNKNOWN_TO_TAGS, Options.SAVE_ORIGINAL_ID}, 48 }; 49 } 50 42 51 private static final class PostProcessorStub implements OsmServerReadPostprocessor { 43 52 boolean called; … … 72 81 } 73 82 74 private static void testUnknown(String osm) throws Exception { 83 private static void testUnknown(String osm, Options[] options) throws Exception { 75 84 try (InputStream in = new ByteArrayInputStream( 76 85 ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) { 77 assertTrue(OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE).allPrimitives().isEmpty()); 78 } 79 testUnknown(osm, true); 80 testUnknown(osm, false); 81 } 82 83 private static void testUnknown(String osm, boolean parseUnknownAttributes) throws Exception { 84 try (InputStream in = new ByteArrayInputStream( 85 ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) { 86 assertTrue(OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, Options.CONVERT_UNKNOWN_TO_TAGS).allPrimitives() 87 .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()); 86 assertTrue(OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, options).allPrimitives().isEmpty()); 99 87 } 100 88 } … … 106 94 @Test 107 95 public void testUnknownRoot() throws Exception { 108 testUnknown("<nonosm/>"); 96 for (Options[] options : options()) { 97 testUnknown("<nonosm/>", options); 98 } 109 99 } 110 100 … … 115 105 @Test 116 106 public void testUnknownMeta() throws Exception { 117 testUnknown("<osm version='0.6'><meta osm_base='2017-03-29T19:04:03Z'/></osm>"); 107 for (Options[] options : options()) { 108 testUnknown("<osm version='0.6'><meta osm_base='2017-03-29T19:04:03Z'/></osm>", options); 109 } 118 110 } 119 111 … … 124 116 @Test 125 117 public void testUnknownNote() throws Exception { 126 testUnknown("<osm version='0.6'><note>The data included in this document is from www.openstreetmap.org.</note></osm>"); 118 for (Options[] options : options()) { 119 testUnknown("<osm version='0.6'><note>The data included in this document is from www.openstreetmap.org.</note></osm>", options); 120 } 127 121 } 128 122 … … 133 127 @Test 134 128 public void testUnknownTag() throws Exception { 135 testUnknown("<osm version='0.6'><foo>bar</foo></osm>"); 136 testUnknown("<osm version='0.6'><foo><bar/></foo></osm>"); 129 for (Options[] options : options()) { 130 testUnknown("<osm version='0.6'><foo>bar</foo></osm>", options); 131 testUnknown("<osm version='0.6'><foo><bar/></foo></osm>", options); 132 } 137 133 } 138 134 … … 143 139 * @throws Exception if any error occurs 144 140 */ 145 private static DataSet testValidData(String osm) throws Exception { 146 try (InputStream in = new ByteArrayInputStream( 147 ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) { 148 return OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE); 149 } 150 } 151 152 /** 153 * Test valid data. 154 * @param osm OSM data without XML prefix 155 * @param options The options to use to parse the data 156 * @return parsed data set 157 * @throws Exception if any error occurs 158 */ 159 private static DataSet testValidData(String osm, Options... options) throws Exception { 141 private static DataSet testValidData(String osm, Options[] options) throws Exception { 160 142 try (InputStream in = new ByteArrayInputStream( 161 143 ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) { … … 178 160 assertEquals(expectedError, e.getMessage()); 179 161 } 180 testInvalidData(osm, expectedError, true);181 testInvalidData(osm, expectedError, false);182 }183 184 /**185 * Test invalid data.186 *187 * @param osm OSM data without XML prefix188 * @param expectedError expected error message189 * @param parseUnknownAttributes if true, attempt to parse unknown xml190 * attributes191 * @throws Exception if any error occurs192 */193 private static void testInvalidData(String osm, String expectedError, boolean parseUnknownAttributes)194 throws Exception {195 try (InputStream in = new ByteArrayInputStream(196 ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) {197 OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, Options.CONVERT_UNKNOWN_TO_TAGS);198 fail("should throw exception");199 } catch (IllegalDataException e) {200 assertEquals(expectedError, e.getMessage());201 }202 162 } 203 163 … … 336 296 public void testGdprChangeset() throws Exception { 337 297 String gdprChangeset = "<osm version='0.6'><node id='1' version='1' changeset='0'/></osm>"; 338 testValidData(gdprChangeset); 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()); 298 for (Options[] options : options()) { 299 testValidData(gdprChangeset, options); 300 } 343 301 } 344 302 … … 420 378 "<remark>runtime error: Query ran out of memory in \"query\" at line 5.</remark>\r\n" + 421 379 "</osm>"; 422 for ( DataSet ds : Arrays.asList(testValidData(query), testValidData(query,Options.CONVERT_UNKNOWN_TO_TAGS), testValidData(query, (Options) null),423 Options.SAVE_ORIGINAL_ID), testValidData(query, Options.values()))) {380 for (Options[] options : options()) { 381 DataSet ds = testValidData(query, options); 424 382 assertEquals("runtime error: Query ran out of memory in \"query\" at line 5.", ds.getRemark()); 425 383 } … … 434 392 String testData = "<osm version=\"0.6\" generator=\"fake generator\">" 435 393 + "<node id='1' version='1' visible='true' changeset='82' randomkey='randomvalue'></node>" + "</osm>"; 436 DataSet ds = testValidData(testData);437 assertEquals(0, ds.getNodes().iterator().next().getKeys().size());438 assertEquals(1,ds.getNodes().iterator().next().getUniqueId());439 440 ds = testValidData(testData, Options.CONVERT_UNKNOWN_TO_TAGS);441 Node firstNode = ds.getNodes().iterator().next();442 assertEquals(1,firstNode.getKeys().size());443 assertEquals("randomvalue", firstNode.get("randomkey"));444 assertEquals(1, ds.getNodes().iterator().next().getUniqueId());445 446 447 ds = testValidData(testData, (Options) null);448 assertEquals(0, ds.getNodes().iterator().next().getKeys().size());449 assertEquals(1, ds.getNodes().iterator().next().getUniqueId());394 for (Options[] options : options()) { 395 DataSet ds = testValidData(testData, options); 396 Node firstNode = ds.getNodes().iterator().next(); 397 if (Arrays.asList(options).contains(Options.CONVERT_UNKNOWN_TO_TAGS)) { 398 assertEquals("randomvalue", firstNode.get("randomkey")); 399 } else { 400 assertNull(firstNode.get("randomkey")); 401 } 402 if (Arrays.asList(options).contains(Options.SAVE_ORIGINAL_ID)) { 403 assertEquals("1", firstNode.get("current_id")); 404 } else { 405 assertNull(firstNode.get("current_id")); 406 } 407 } 450 408 } 451 409 }
Note:
See TracChangeset
for help on using the changeset viewer.