// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.data.osm;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import org.junit.Assert;
import org.junit.Test;
import org.openstreetmap.josm.data.coor.LatLon;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
public class NodeDataTest {
@SuppressFBWarnings(value = "OBJECT_DESERIALIZATION")
private static NodeData serializeUnserialize(NodeData data) throws IOException, ClassNotFoundException {
try (ByteArrayOutputStream bytes = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bytes)) {
out.writeObject(data);
try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray()))) {
return (NodeData) in.readObject();
}
}
}
@Test
public void testSerializationForDragAndDrop() throws Exception {
final NodeData data = new NodeData();
data.setCoor(new LatLon(31.14, 15.9));
data.setId(314);
data.setVersion(14);
data.setChangesetId(314159);
final NodeData readData = serializeUnserialize(data);
Assert.assertEquals(data.toString(), readData.toString());
}
/**
* Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/13395">#13395</a>.
* @throws Exception if an error occurs
*/
@Test
public void testTicket13395() throws Exception {
Node n = new Node(1925320646, 1);
n.setCoor(null);
assertNull(n.getCoor());
assertTrue(n.isIncomplete());
NodeData data = n.save();
assertNull(data.getCoor());
assertTrue(data.isIncomplete());
NodeData readData = serializeUnserialize(data);
assertNull(readData.getCoor());
assertTrue(readData.isIncomplete());
}
}