source: josm/trunk/test/unit/org/openstreetmap/josm/io/OsmChangeReaderTest.java@ 14138

Last change on this file since 14138 was 14101, checked in by Don-vip, 6 years ago

see #8765, fix #11086 - Support notes in osmChange (.osc) files created by OsmAnd

  • Property svn:eol-style set to native
File size: 2.4 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io;
3
4import static org.junit.Assert.assertEquals;
5
6import java.io.ByteArrayInputStream;
7import java.io.InputStream;
8import java.nio.charset.StandardCharsets;
9import java.util.Collection;
10
11import org.junit.Rule;
12import org.junit.Test;
13import org.openstreetmap.josm.data.coor.LatLon;
14import org.openstreetmap.josm.data.notes.Note;
15import org.openstreetmap.josm.data.osm.DataSet;
16import org.openstreetmap.josm.data.osm.NoteData;
17import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
18import org.openstreetmap.josm.testutils.JOSMTestRules;
19import org.openstreetmap.josm.tools.Pair;
20
21import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
22
23/**
24 * Unit tests of {@link OsmChangeReader}.
25 */
26public class OsmChangeReaderTest {
27
28 /**
29 * Setup rule
30 */
31 @Rule
32 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
33 public JOSMTestRules test = new JOSMTestRules();
34
35 /**
36 * Parse osmChange.
37 * @param osm OSM data in osmChange format, without header/footer
38 * @return data set
39 * @throws Exception if any error occurs
40 */
41 private static Pair<DataSet, NoteData> parse(String osm) throws Exception {
42 try (InputStream in = new ByteArrayInputStream((
43 "<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>\n" +
44 "<osmChange generator=\"test\" version=\"0.6\">" + osm + "</osmChange>")
45 .getBytes(StandardCharsets.UTF_8))) {
46 return OsmChangeReader.parseDataSetAndNotes(in, NullProgressMonitor.INSTANCE);
47 }
48 }
49
50 /**
51 * Checks reading of OsmAnd notes.
52 * @throws Exception never
53 */
54 @Test
55 public void testNotes() throws Exception {
56 NoteData nd = parse(
57 "<create>\r\n" +
58 " <note lat=\"50.23887555404037\" lon=\"13.358299552342795\" id=\"-2\">\r\n" +
59 " <comment text=\"something\" />\r\n" +
60 " </note>\r\n" +
61 " </create>\r\n" +
62 " <modify />\r\n" +
63 " <delete />").b;
64 Collection<Note> notes = nd.getNotes();
65 assertEquals(1, notes.size());
66 Note n = notes.iterator().next();
67 assertEquals(new LatLon(50.23887555404037, 13.358299552342795), n.getLatLon());
68 assertEquals("something", n.getFirstComment().getText());
69 }
70}
Note: See TracBrowser for help on using the repository browser.