Changeset 14047 in josm for trunk


Ignore:
Timestamp:
2018-07-24T22:17:01+02:00 (11 months ago)
Author:
Don-vip
Message:

see #16498 - convert two more unit tests to Java

Location:
trunk/test/unit/org/openstreetmap/josm/io
Files:
2 moved

Legend:

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

    r14043 r14047  
     1// License: GPL. For details, see LICENSE file.
    12package org.openstreetmap.josm.io;
    23
    3 import static groovy.test.GroovyAssert.shouldFail
    4 import static org.junit.Assert.*
     4import static org.junit.Assert.assertEquals;
     5import static org.junit.Assert.fail;
    56
    6 import org.junit.Test
    7 import org.openstreetmap.josm.data.coor.LatLon
    8 import org.openstreetmap.josm.data.osm.Changeset
    9 import org.openstreetmap.josm.data.osm.Node
     7import java.util.Arrays;
    108
    11 class OsmChangeBuilderTest {
     9import org.junit.Rule;
     10import org.junit.Test;
     11import org.openstreetmap.josm.data.coor.LatLon;
     12import org.openstreetmap.josm.data.osm.Changeset;
     13import org.openstreetmap.josm.data.osm.Node;
     14import org.openstreetmap.josm.testutils.JOSMTestRules;
     15import org.openstreetmap.josm.tools.Logging;
     16
     17import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
     18
     19/**
     20 * Unit tests of {@link OsmChangeBuilder}
     21 */
     22public class OsmChangeBuilderTest {
     23
     24    /**
     25     * Setup rule
     26     */
     27    @Rule
     28    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
     29    public JOSMTestRules test = new JOSMTestRules();
     30
     31    private static void shouldFail(Runnable r) {
     32        try {
     33            r.run();
     34            fail("should throw exception");
     35        } catch (IllegalStateException e) {
     36            Logging.trace(e);
     37        }
     38    }
    1239
    1340    /**
     
    1643    @Test
    1744    public void testConstructor() {
    18         def Changeset cs = new Changeset(1)
     45        Changeset cs = new Changeset(1);
    1946        // should not fail
    20         OsmChangeBuilder builder = new OsmChangeBuilder(cs)
    21 
    22         // should not fail either - null allowed
    23         builder = new OsmChangeBuilder(null)
    24 
    25         // should not fail
    26         builder = new OsmChangeBuilder(cs, "0.5")
    27 
    28         builder = new OsmChangeBuilder(cs, null)
    29 
    30         builder = new OsmChangeBuilder(null, null)
     47        new OsmChangeBuilder(cs);
     48        new OsmChangeBuilder(null);
     49        new OsmChangeBuilder(cs, "0.5");
     50        new OsmChangeBuilder(cs, null);
     51        new OsmChangeBuilder(null, null);
    3152    }
    3253
     
    3758    @Test
    3859    public void testSequenceOfMethodCalls() {
    39         def Changeset cs = new Changeset(1)
    40         OsmChangeBuilder builder = new OsmChangeBuilder(cs)
     60        Changeset cs = new Changeset(1);
     61        OsmChangeBuilder csBuilder = new OsmChangeBuilder(cs);
    4162
    4263        // should be OK
    43         builder.start()
    44         Node n = new Node(LatLon.ZERO)
    45         builder.append n
    46         builder.finish()
     64        csBuilder.start();
     65        Node n = new Node(LatLon.ZERO);
     66        csBuilder.append(n);
     67        csBuilder.finish();
    4768
    48         shouldFail(IllegalStateException) {
    49             builder = new OsmChangeBuilder(cs)
    50             builder.append n
    51         }
     69        shouldFail(() -> {
     70            OsmChangeBuilder builder = new OsmChangeBuilder(cs);
     71            builder.append(n);
     72        });
    5273
    53         shouldFail(IllegalStateException) {
    54             builder = new OsmChangeBuilder(cs)
    55             builder.append([n])
    56         }
     74        shouldFail(() -> {
     75            OsmChangeBuilder builder = new OsmChangeBuilder(cs);
     76            builder.append(Arrays.asList(n));
     77        });
    5778
    58         shouldFail(IllegalStateException) {
    59             builder = new OsmChangeBuilder(cs)
    60             builder.finish()
    61         }
     79        shouldFail(() -> {
     80            OsmChangeBuilder builder = new OsmChangeBuilder(cs);
     81            builder.finish();
     82        });
    6283
    63         shouldFail(IllegalStateException) {
    64             builder = new OsmChangeBuilder(cs)
    65             builder.start()
    66             builder.start()
    67         }
     84        shouldFail(() -> {
     85            OsmChangeBuilder builder = new OsmChangeBuilder(cs);
     86            builder.start();
     87            builder.start();
     88        });
    6889    }
    6990
     91    /**
     92     * Test building a document with a new node
     93     */
    7094    @Test
    7195    public void testDocumentWithNewNode() {
    72         def Changeset cs = new Changeset(1)
    73         OsmChangeBuilder builder = new OsmChangeBuilder(cs)
    74         Node n = new Node(LatLon.ZERO)
     96        Changeset cs = new Changeset(1);
     97        OsmChangeBuilder builder = new OsmChangeBuilder(cs);
     98        Node n = new Node(LatLon.ZERO);
    7599
    76         builder.start()
    77         builder.append n
    78         builder.finish()
     100        builder.start();
     101        builder.append(n);
     102        builder.finish();
    79103
    80         def doc = new XmlParser().parseText(builder.document)
    81         assert doc.@version == "0.6"
    82         assert doc.@generator == "JOSM"
    83         assert doc.name() == "osmChange"
    84         assert doc.children().size() == 1
    85         def create = doc.create
    86         assert create != null
    87 
    88         assert create.size() == 1
    89         def nodes = create[0].node
    90         assert nodes.size() == 1
    91         def node = nodes[0]
    92         assert node.@id == n.uniqueId.toString()
    93         assert node.@lat != null
    94         assert node.@lon != null
    95         assert node.@changeset == cs.id.toString()
     104        assertEquals(String.format(
     105                "<osmChange version=\"0.6\" generator=\"JOSM\">%n" +
     106                "<create>%n" +
     107                "  <node id='-6' changeset='1' lat='0.0' lon='0.0' />%n" +
     108                "</create>%n" +
     109                "</osmChange>%n"), builder.getDocument());
    96110    }
    97111
     
    101115    @Test
    102116    public void testDocumentWithModifiedNode() {
    103         def Changeset cs = new Changeset(1)
    104         OsmChangeBuilder builder = new OsmChangeBuilder(cs)
    105         Node n = new Node(1)
    106         n.coor = LatLon.ZERO
    107         n.incomplete = false
    108         n.modified = true
     117        Changeset cs = new Changeset(1);
     118        OsmChangeBuilder builder = new OsmChangeBuilder(cs);
     119        Node n = new Node(LatLon.ZERO);
     120        n.setOsmId(1, 1);
     121        n.setModified(true);
    109122
    110         builder.start()
    111         builder.append n
    112         builder.finish()
     123        builder.start();
     124        builder.append(n);
     125        builder.finish();
    113126
    114         def doc = new XmlParser().parseText(builder.document)
    115         assert doc.@version == "0.6"
    116         assert doc.@generator == "JOSM"
    117         assert doc.name() == "osmChange"
    118         assert doc.children().size() == 1
    119         def modify = doc.modify
    120         assert modify != null
    121 
    122         assert modify.size() == 1
    123         def nodes = modify[0].node
    124         assert nodes.size() == 1
    125         def node = nodes[0]
    126         assert node.@id == n.uniqueId.toString()
    127         assert node.@lat != null
    128         assert node.@lon != null
    129         assert node.@changeset == cs.id.toString()
     127        assertEquals(String.format(
     128                "<osmChange version=\"0.6\" generator=\"JOSM\">%n" +
     129                "<modify>%n" +
     130                "  <node id='1' version='1' changeset='1' lat='0.0' lon='0.0' />%n" +
     131                "</modify>%n" +
     132                "</osmChange>%n"), builder.getDocument());
    130133    }
    131134
     
    135138    @Test
    136139    public void testDocumentWithDeletedNode() {
    137         def Changeset cs = new Changeset(1)
    138         OsmChangeBuilder builder = new OsmChangeBuilder(cs)
    139         Node n = new Node(1)
    140         n.coor = LatLon.ZERO
    141         n.incomplete = false
    142         n.deleted = true
     140        Changeset cs = new Changeset(1);
     141        OsmChangeBuilder builder = new OsmChangeBuilder(cs);
     142        Node n = new Node(LatLon.ZERO);
     143        n.setOsmId(1, 1);
     144        n.setDeleted(true);
    143145
    144         builder.start()
    145         builder.append n
    146         builder.finish()
     146        builder.start();
     147        builder.append(n);
     148        builder.finish();
    147149
    148         def doc = new XmlParser().parseText(builder.document)
    149         assert doc.@version == "0.6"
    150         assert doc.@generator == "JOSM"
    151         assert doc.name() == "osmChange"
    152         assert doc.children().size() == 1
    153         def delete = doc.delete
    154         assert delete != null
    155 
    156         assert delete.size() == 1
    157         def nodes = delete[0].node
    158         assert nodes.size() == 1
    159         def node = nodes[0]
    160         assert node.@id == n.uniqueId.toString()
    161         assert node.@lat == null
    162         assert node.@lon == null
    163         assert node.@changeset == cs.id.toString()
     150        assertEquals(String.format(
     151                "<osmChange version=\"0.6\" generator=\"JOSM\">%n" +
     152                "<delete>%n" +
     153                "  <node id='1' version='1' changeset='1'/>%n" +
     154                "</delete>%n" +
     155                "</osmChange>%n"), builder.getDocument());
    164156    }
    165157
    166158    /**
    167159     * Test building a mixed document.
    168      *
    169160     */
    170161    @Test
    171162    public void testMixed() {
    172         def Changeset cs = new Changeset(1)
    173         OsmChangeBuilder builder = new OsmChangeBuilder(cs)
    174         Node n1 = new Node(1)
    175         n1.coor = LatLon.ZERO
    176         n1.incomplete = false
    177         n1.deleted = true
     163        Changeset cs = new Changeset(1);
     164        OsmChangeBuilder builder = new OsmChangeBuilder(cs);
     165        Node n1 = new Node(LatLon.ZERO);
     166        n1.setOsmId(1, 1);
     167        n1.setDeleted(true);
    178168
    179         Node n2 = new Node(LatLon.ZERO)
     169        Node n2 = new Node(LatLon.ZERO);
    180170
    181         Node n3 = new Node(2)
    182         n3.coor = LatLon.ZERO
    183         n3.incomplete = false
    184         n3.modified = true
     171        Node n3 = new Node(LatLon.ZERO);
     172        n3.setOsmId(2, 1);
     173        n3.setModified(true);
    185174
    186         builder.start()
    187         builder.append([n1,n2,n3])
    188         builder.finish()
     175        builder.start();
     176        builder.append(Arrays.asList(n1, n2, n3));
     177        builder.finish();
    189178
    190         def doc = new XmlParser().parseText(builder.document)
    191 
    192         assert doc.children().size() == 3
    193         assert doc.children()[0].name() == "delete"
    194         assert doc.children()[1].name() == "create"
    195         assert doc.children()[2].name() == "modify"
    196 
    197         def node = doc.children()[0].node[0]
    198         assert node.@id == n1.uniqueId.toString()
    199 
    200         node = doc.children()[1].node[0]
    201         assert node.@id == n2.uniqueId.toString()
    202 
    203         node = doc.children()[2].node[0]
    204         assert node.@id == n3.uniqueId.toString()
     179        assertEquals(String.format(
     180                "<osmChange version=\"0.6\" generator=\"JOSM\">%n" +
     181                "<delete>%n" +
     182                "  <node id='1' version='1' changeset='1'/>%n" +
     183                "</delete>%n" +
     184                "<create>%n" +
     185                "  <node id='-3' changeset='1' lat='0.0' lon='0.0' />%n" +
     186                "</create>%n" +
     187                "<modify>%n" +
     188                "  <node id='2' version='1' changeset='1' lat='0.0' lon='0.0' />%n" +
     189                "</modify>%n" +
     190                "</osmChange>%n"), builder.getDocument());
    205191    }
    206192}
  • trunk/test/unit/org/openstreetmap/josm/io/OsmChangesetContentParserTest.java

    r14043 r14047  
    22package org.openstreetmap.josm.io;
    33
    4 import static groovy.test.GroovyAssert.shouldFail
    5 
    6 import java.nio.charset.StandardCharsets
    7 
    8 import org.junit.Test
    9 import org.openstreetmap.josm.data.osm.ChangesetDataSet
    10 import org.openstreetmap.josm.data.osm.OsmPrimitiveType
    11 import org.openstreetmap.josm.data.osm.SimplePrimitiveId
    12 import org.openstreetmap.josm.data.osm.ChangesetDataSet.ChangesetModificationType
    13 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive
    14 import org.openstreetmap.josm.data.osm.history.HistoryRelation
    15 import org.openstreetmap.josm.data.osm.history.HistoryWay
    16 import org.openstreetmap.josm.gui.progress.NullProgressMonitor
    17 
    18 class OsmChangesetContentParserTest {
    19 
     4import static org.junit.Assert.assertEquals;
     5import static org.junit.Assert.assertNotNull;
     6import static org.junit.Assert.assertTrue;
     7import static org.junit.Assert.fail;
     8
     9import java.io.ByteArrayInputStream;
     10import java.io.InputStream;
     11import java.nio.charset.StandardCharsets;
     12import java.util.Arrays;
     13
     14import org.junit.Rule;
     15import org.junit.Test;
     16import org.openstreetmap.josm.data.osm.ChangesetDataSet;
     17import org.openstreetmap.josm.data.osm.ChangesetDataSet.ChangesetModificationType;
     18import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     19import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
     20import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
     21import org.openstreetmap.josm.data.osm.history.HistoryRelation;
     22import org.openstreetmap.josm.data.osm.history.HistoryWay;
     23import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
     24import org.openstreetmap.josm.testutils.JOSMTestRules;
     25import org.openstreetmap.josm.tools.Logging;
     26import org.openstreetmap.josm.tools.XmlParsingException;
     27
     28import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
     29
     30/**
     31 * Unit tests of {@link OsmChangesetContentParser}.
     32 */
     33public class OsmChangesetContentParserTest {
     34
     35    /**
     36     * Setup rule
     37     */
     38    @Rule
     39    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
     40    public JOSMTestRules test = new JOSMTestRules();
     41
     42    private static void shouldFail(Runnable r) {
     43        try {
     44            r.run();
     45            fail("should throw exception");
     46        } catch (IllegalArgumentException e) {
     47            Logging.trace(e);
     48        }
     49    }
     50
     51    /**
     52     * Test various constructor invocations
     53     */
    2054    @Test
    2155    public void test_Constructor() {
    22         OsmChangesetContentParser parser
    23 
    24         // should be OK
    25         parser = new OsmChangesetContentParser(new ByteArrayInputStream("".bytes))
    26 
    27         shouldFail(IllegalArgumentException) {
    28             parser = new OsmChangesetContentParser((String) null)
    29         }
    30 
    31         shouldFail(IllegalArgumentException) {
    32             parser = new OsmChangesetContentParser((InputStream) null)
    33         }
    34     }
    35 
    36 
    37     @Test
    38     public void test_parse_arguments() {
    39         OsmChangesetContentParser parser
    40 
    41         def String doc = """
    42             <osmChange version="0.6" generator="OpenStreetMap server">
    43             </osmChange>
    44         """
    45 
    46         // should be OK
    47         parser = new OsmChangesetContentParser(new ByteArrayInputStream(doc.getBytes(StandardCharsets.UTF_8)))
    48         parser.parse null
    49 
    50         // should be OK
    51         parser = new OsmChangesetContentParser(new ByteArrayInputStream(doc.getBytes(StandardCharsets.UTF_8)))
    52         parser.parse NullProgressMonitor.INSTANCE
    53 
    54         // should be OK
    55         parser = new OsmChangesetContentParser(doc)
    56         parser.parse null
     56
     57        // should be OK
     58        new OsmChangesetContentParser(new ByteArrayInputStream("".getBytes()));
     59
     60        shouldFail(() -> {
     61            new OsmChangesetContentParser((String) null);
     62        });
     63
     64        shouldFail(() -> {
     65            new OsmChangesetContentParser((InputStream) null);
     66        });
     67    }
     68
     69    /**
     70     * Test various invocations of {@link OsmChangesetContentParser#parse}
     71     * @throws XmlParsingException never
     72     */
     73    @Test
     74    public void test_parse_arguments() throws XmlParsingException {
     75        OsmChangesetContentParser parser;
     76
     77        String doc = "<osmChange version=\"0.6\" generator=\"OpenStreetMap server\"></osmChange>";
     78
     79        // should be OK
     80        parser = new OsmChangesetContentParser(new ByteArrayInputStream(doc.getBytes(StandardCharsets.UTF_8)));
     81        parser.parse(null);
     82
     83        // should be OK
     84        parser = new OsmChangesetContentParser(new ByteArrayInputStream(doc.getBytes(StandardCharsets.UTF_8)));
     85        parser.parse(NullProgressMonitor.INSTANCE);
     86
     87        // should be OK
     88        parser = new OsmChangesetContentParser(doc);
     89        parser.parse(null);
    5790    }
    5891
    5992    /**
    6093     * A simple changeset content document with one created node
    61      *
    62      */
    63     @Test
    64     public void test_OK_OneCreatedNode() {
    65         OsmChangesetContentParser parser
    66 
    67         def String doc = """
    68             <osmChange version="0.6" generator="OpenStreetMap server">
    69               <create>
    70                 <node id="1" version="1" visible="true" changeset="1" lat="1.0" lon="1.0" timestamp="2009-12-22" />
    71               </create>
    72             </osmChange>
    73         """
    74 
    75         // should be OK
    76         parser = new OsmChangesetContentParser(doc)
    77         ChangesetDataSet ds = parser.parse()
    78 
    79         assert ds.size() == 1
    80         HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE));
    81         assert p != null
    82         assert p.getId() == 1
    83         assert p.getVersion() == 1
    84         assert p.getChangesetId() == 1
    85         assert p.getTimestamp() != null
    86         assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.CREATED
    87         assert ds.isCreated(p.getPrimitiveId())
     94     * @throws XmlParsingException never
     95     */
     96    @Test
     97    public void test_OK_OneCreatedNode() throws XmlParsingException {
     98        OsmChangesetContentParser parser;
     99
     100        String doc =
     101            "<osmChange version=\"0.6\" generator=\"OpenStreetMap server\">\n" +
     102            "  <create>\n" +
     103            "    <node id=\"1\" version=\"1\" visible=\"true\" changeset=\"1\" lat=\"1.0\" lon=\"1.0\" timestamp=\"2009-12-22\" />\n" +
     104            "  </create>\n" +
     105            "</osmChange>";
     106
     107        // should be OK
     108        parser = new OsmChangesetContentParser(doc);
     109        ChangesetDataSet ds = parser.parse();
     110
     111        assertEquals(1, ds.size());
     112        HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE));
     113        assertNotNull(p);
     114        assertEquals(1, p.getId());
     115        assertEquals(1, p.getVersion());
     116        assertEquals(1, p.getChangesetId());
     117        assertNotNull(p.getTimestamp());
     118        assertEquals(ChangesetModificationType.CREATED, ds.getModificationType(p.getPrimitiveId()));
     119        assertTrue(ds.isCreated(p.getPrimitiveId()));
    88120    }
    89121
    90122    /**
    91123     * A simple changeset content document with one updated node
    92      *
    93      */
    94     @Test
    95     public void test_OK_OneUpdatedNode() {
    96         OsmChangesetContentParser parser
    97 
    98         def String doc = """
    99             <osmChange version="0.6" generator="OpenStreetMap server">
    100               <modify>
    101                 <node id="1" version="1" visible="true" changeset="1" lat="1.0" lon="1.0" timestamp="2009-12-22" />
    102               </modify>
    103             </osmChange>
    104         """
    105 
    106         // should be OK
    107         parser = new OsmChangesetContentParser(doc)
    108         ChangesetDataSet ds = parser.parse()
    109 
    110         assert ds.size() == 1
    111         HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE));
    112         assert p != null
    113         assert p.getId() == 1
    114         assert p.getVersion() == 1
    115         assert p.getChangesetId() == 1
    116         assert p.getTimestamp() != null
    117         assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.UPDATED
    118         assert ds.isUpdated(p.getPrimitiveId())
     124     * @throws XmlParsingException never
     125     */
     126    @Test
     127    public void test_OK_OneUpdatedNode() throws XmlParsingException {
     128        OsmChangesetContentParser parser;
     129
     130        String doc =
     131            "<osmChange version=\"0.6\" generator=\"OpenStreetMap server\">\n" +
     132            "  <modify>\n" +
     133            "    <node id=\"1\" version=\"1\" visible=\"true\" changeset=\"1\" lat=\"1.0\" lon=\"1.0\" timestamp=\"2009-12-22\" />\n" +
     134            "  </modify>\n" +
     135            "</osmChange>";
     136
     137        // should be OK
     138        parser = new OsmChangesetContentParser(doc);
     139        ChangesetDataSet ds = parser.parse();
     140
     141        assertEquals(1, ds.size());
     142        HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE));
     143        assertNotNull(p);
     144        assertEquals(1, p.getId());
     145        assertEquals(1, p.getVersion());
     146        assertEquals(1, p.getChangesetId());
     147        assertNotNull(p.getTimestamp());
     148        assertEquals(ChangesetModificationType.UPDATED, ds.getModificationType(p.getPrimitiveId()));
     149        assertTrue(ds.isUpdated(p.getPrimitiveId()));
    119150    }
    120151
    121152    /**
    122153     * A simple changeset content document with one deleted node
    123      *
    124      */
    125     @Test
    126     public void test_OK_OneDeletedNode() {
    127         OsmChangesetContentParser parser
    128 
    129         def String doc = """
    130             <osmChange version="0.6" generator="OpenStreetMap server">
    131               <delete>
    132                 <node id="1" version="1" visible="true" changeset="1" lat="1.0" lon="1.0" timestamp="2009-12-22" />
    133               </delete>
    134             </osmChange>
    135         """
    136 
    137         // should be OK
    138         parser = new OsmChangesetContentParser(doc)
    139         ChangesetDataSet ds = parser.parse()
    140 
    141         assert ds.size() == 1
    142         HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE));
    143         assert p != null
    144         assert p.getId() == 1
    145         assert p.getVersion() == 1
    146         assert p.getChangesetId() == 1
    147         assert p.getTimestamp() != null
    148         assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.DELETED
    149         assert ds.isDeleted(p.getPrimitiveId())
     154     * @throws XmlParsingException never
     155     */
     156    @Test
     157    public void test_OK_OneDeletedNode() throws XmlParsingException {
     158        OsmChangesetContentParser parser;
     159
     160        String doc =
     161            "<osmChange version=\"0.6\" generator=\"OpenStreetMap server\">\n" +
     162            "  <delete>\n" +
     163            "    <node id=\"1\" version=\"1\" visible=\"true\" changeset=\"1\" lat=\"1.0\" lon=\"1.0\" timestamp=\"2009-12-22\" />\n" +
     164            "  </delete>\n" +
     165            "</osmChange>";
     166
     167        // should be OK
     168        parser = new OsmChangesetContentParser(doc);
     169        ChangesetDataSet ds = parser.parse();
     170
     171        assertEquals(1, ds.size());
     172        HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE));
     173        assertNotNull(p);
     174        assertEquals(1, p.getId());
     175        assertEquals(1, p.getVersion());
     176        assertEquals(1, p.getChangesetId());
     177        assertNotNull(p.getTimestamp());
     178        assertEquals(ChangesetModificationType.DELETED, ds.getModificationType(p.getPrimitiveId()));
     179        assertTrue(ds.isDeleted(p.getPrimitiveId()));
    150180    }
    151181
    152182    /**
    153183     * A more complex test with a document including nodes, ways, and relations.
    154      *
    155      */
    156     @Test
    157     public void test_OK_ComplexTestCase() {
    158         OsmChangesetContentParser parser
    159 
    160         def String doc = """
    161             <osmChange version="0.6" generator="OpenStreetMap server">
    162               <create>
    163                 <node id="1" version="1" visible="true" changeset="1" lat="1.0" lon="1.0" timestamp="2009-12-22">
    164                   <tag k="a.key" v="a.value" />
    165                 </node>
    166               </create>
    167               <modify>
    168                <way id="2" version="2" visible="true" changeset="1" timestamp="2009-12-22">
    169                   <nd ref="21"/>
    170                   <nd ref="22"/>
    171                </way>
    172              </modify>
    173              <delete>
    174                 <relation id="3" version="3" visible="true" changeset="1" timestamp="2009-12-22" />
    175               </delete>
    176             </osmChange>
    177         """
    178 
    179         // should be OK
    180         parser = new OsmChangesetContentParser(doc)
    181         ChangesetDataSet ds = parser.parse()
    182 
    183         assert ds.size() == 3
    184 
    185         HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE));
    186         assert p != null
    187         assert p.getId() == 1
    188         assert p.getVersion() == 1
    189         assert p.getChangesetId() == 1
    190         assert p.getTimestamp() != null
    191         assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.CREATED
    192         assert ds.isCreated(p.getPrimitiveId())
    193         assert p.get("a.key") == "a.value"
    194 
    195         HistoryWay w = (HistoryWay)ds.getPrimitive(new SimplePrimitiveId(2, OsmPrimitiveType.WAY));
    196         assert w != null
    197         assert w.getId() == 2
    198         assert w.getVersion() == 2
    199         assert w.getChangesetId() == 1
    200         assert w.getTimestamp() != null
    201         assert ds.getModificationType(w.getPrimitiveId()) == ChangesetModificationType.UPDATED
    202         assert ds.isUpdated(w.getPrimitiveId())
    203         assert w.getNumNodes() == 2
    204         assert w.getNodes() == [21,22]
    205 
    206         HistoryRelation r = (HistoryRelation)ds.getPrimitive(new SimplePrimitiveId(3, OsmPrimitiveType.RELATION));
    207         assert r != null
    208         assert r.getId() == 3
    209         assert r.getVersion() == 3
    210         assert r.getChangesetId() == 1
    211         assert r.getTimestamp() != null
    212         assert ds.getModificationType(r.getPrimitiveId()) == ChangesetModificationType.DELETED
    213         assert ds.isDeleted(r.getPrimitiveId())
     184     * @throws XmlParsingException never
     185     */
     186    @Test
     187    public void test_OK_ComplexTestCase() throws XmlParsingException {
     188        OsmChangesetContentParser parser;
     189
     190        String doc =
     191            "<osmChange version=\"0.6\" generator=\"OpenStreetMap server\">\n" +
     192            "  <create>\n" +
     193            "    <node id=\"1\" version=\"1\" visible=\"true\" changeset=\"1\" lat=\"1.0\" lon=\"1.0\" timestamp=\"2009-12-22\">\n" +
     194            "      <tag k=\"a.key\" v=\"a.value\" />\n" +
     195            "    </node>\n" +
     196            "  </create>\n" +
     197            "  <modify>\n" +
     198            "   <way id=\"2\" version=\"2\" visible=\"true\" changeset=\"1\" timestamp=\"2009-12-22\">\n" +
     199            "      <nd ref=\"21\"/>\n" +
     200            "      <nd ref=\"22\"/>\n" +
     201            "   </way>\n" +
     202            " </modify>\n" +
     203            " <delete>\n" +
     204            "    <relation id=\"3\" version=\"3\" visible=\"true\" changeset=\"1\" timestamp=\"2009-12-22\" />\n" +
     205            "  </delete>\n" +
     206            "</osmChange>";
     207
     208        // should be OK
     209        parser = new OsmChangesetContentParser(doc);
     210        ChangesetDataSet ds = parser.parse();
     211
     212        assertEquals(3, ds.size());
     213
     214        HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE));
     215        assertNotNull(p);
     216        assertEquals(1, p.getId());
     217        assertEquals(1, p.getVersion());
     218        assertEquals(1, p.getChangesetId());
     219        assertNotNull(p.getTimestamp());
     220        assertEquals(ChangesetModificationType.CREATED, ds.getModificationType(p.getPrimitiveId()));
     221        assertTrue(ds.isCreated(p.getPrimitiveId()));
     222        assertEquals("a.value", p.get("a.key"));
     223
     224        HistoryWay w = (HistoryWay) ds.getPrimitive(new SimplePrimitiveId(2, OsmPrimitiveType.WAY));
     225        assertNotNull(w);
     226        assertEquals(2, w.getId());
     227        assertEquals(2, w.getVersion());
     228        assertEquals(1, w.getChangesetId());
     229        assertNotNull(w.getTimestamp());
     230        assertEquals(ChangesetModificationType.UPDATED, ds.getModificationType(w.getPrimitiveId()));
     231        assertTrue(ds.isUpdated(w.getPrimitiveId()));
     232        assertEquals(2, w.getNumNodes());
     233        assertEquals(Arrays.asList(21L, 22L), w.getNodes());
     234
     235        HistoryRelation r = (HistoryRelation) ds.getPrimitive(new SimplePrimitiveId(3, OsmPrimitiveType.RELATION));
     236        assertNotNull(r);
     237        assertEquals(3, r.getId());
     238        assertEquals(3, r.getVersion());
     239        assertEquals(1, r.getChangesetId());
     240        assertNotNull(r.getTimestamp());
     241        assertEquals(ChangesetModificationType.DELETED, ds.getModificationType(r.getPrimitiveId()));
     242        assertTrue(ds.isDeleted(r.getPrimitiveId()));
    214243    }
    215244}
Note: See TracChangeset for help on using the changeset viewer.