Changeset 10946 in josm for trunk/test/unit


Ignore:
Timestamp:
2016-09-03T20:01:46+02:00 (8 years ago)
Author:
Don-vip
Message:

fix #13395 - fix serialization issue causing bugs in copy/paste

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/data/osm/NodeDataTest.java

    r10733 r10946  
    22package org.openstreetmap.josm.data.osm;
    33
     4import static org.junit.Assert.assertNull;
     5import static org.junit.Assert.assertTrue;
     6
    47import java.io.ByteArrayInputStream;
    58import java.io.ByteArrayOutputStream;
     9import java.io.IOException;
    610import java.io.ObjectInputStream;
    711import java.io.ObjectOutputStream;
     
    1216
    1317public class NodeDataTest {
     18
     19    private static NodeData serializeUnserialize(NodeData data) throws IOException, ClassNotFoundException {
     20        try (ByteArrayOutputStream bytes = new ByteArrayOutputStream();
     21             ObjectOutputStream out = new ObjectOutputStream(bytes)) {
     22            out.writeObject(data);
     23            try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray()))) {
     24                return (NodeData) in.readObject();
     25            }
     26        }
     27    }
     28
    1429    @Test
    1530    public void testSerializationForDragAndDrop() throws Exception {
     
    1934        data.setVersion(14);
    2035        data.setChangesetId(314159);
    21         final Object readData;
    22         try (ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    23              ObjectOutputStream out = new ObjectOutputStream(bytes)) {
    24             out.writeObject(data);
    25             try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray()))) {
    26                 readData = in.readObject();
    27             }
    28         }
     36        final NodeData readData = serializeUnserialize(data);
    2937        Assert.assertEquals(data.toString(), readData.toString());
    3038    }
     39
     40    /**
     41     * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/13395">#13395</a>.
     42     * @throws Exception if an error occurs
     43     */
     44    @Test
     45    public void testTicket13395() throws Exception {
     46        Node n = new Node(1925320646, 1);
     47        n.setCoor(null);
     48        assertNull(n.getCoor());
     49        assertTrue(n.isIncomplete());
     50
     51        NodeData data = n.save();
     52        assertNull(data.getCoor());
     53        assertTrue(data.isIncomplete());
     54
     55        NodeData readData = serializeUnserialize(data);
     56        assertNull(readData.getCoor());
     57        assertTrue(readData.isIncomplete());
     58    }
    3159}
Note: See TracChangeset for help on using the changeset viewer.