// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.xml.v0_6; import java.io.File; import java.io.IOException; import org.junit.Test; import org.openstreetmap.osmosis.core.OsmosisRuntimeException; import org.openstreetmap.osmosis.core.misc.v0_6.NullChangeWriter; import org.openstreetmap.osmosis.testutil.AbstractDataTest; import org.openstreetmap.osmosis.xml.common.CompressionMethod; /** * A simple test verifying the operation of the xml change reader and change * writer tasks. * * @author Brett Henderson */ public class XmlChangeReaderWriterTest extends AbstractDataTest { /** * A basic test reading and writing an osm file testing both reader and * writer tasks. * * @throws IOException * if any file operations fail. */ @Test public void testSimple() throws IOException { XmlChangeReader xmlReader; XmlChangeWriter xmlWriter; File inputFile; File outputFile; inputFile = dataUtils.createDataFile("v0_6/xml-task-tests-v0_6.osc"); outputFile = dataUtils.newFile(); // Create and connect the xml tasks. xmlReader = new XmlChangeReader(inputFile, true, CompressionMethod.None); xmlWriter = new XmlChangeWriter(outputFile, CompressionMethod.None); xmlReader.setChangeSink(xmlWriter); // Process the xml. xmlReader.run(); // Validate that the output file matches the input file. dataUtils.compareFiles(inputFile, outputFile); } /** * Tests acceptance of nodes in a delete change with lat/lon attribute not set. * * @throws Exception if something goes wrong. */ @Test public void testDeleteLatLonNotSet() throws Exception { XmlChangeReader xmlReader; XmlChangeWriter xmlWriter; File inputFile; File outputFile; inputFile = dataUtils.createDataFile("v0_6/xml-delete-no-coordinates.osc"); outputFile = dataUtils.newFile(); // Create and connect the xml tasks. xmlReader = new XmlChangeReader(inputFile, true, CompressionMethod.None); xmlWriter = new XmlChangeWriter(outputFile, CompressionMethod.None); xmlReader.setChangeSink(xmlWriter); // Process the xml. xmlReader.run(); // Validate that the output file matches the input file. dataUtils.compareFiles(inputFile, outputFile); } /** * Tests non-acceptance of nodes in a non-delete change with lat/lon attribute not set. * * @throws Exception if something goes wrong. */ @Test(expected = OsmosisRuntimeException.class) public void testNonDeleteLatLonNotSet() throws Exception { File inputFile = dataUtils.createDataFile("v0_6/xml-create-no-coordinates.osc"); XmlChangeReader reader = new XmlChangeReader(inputFile, false, CompressionMethod.None); reader.setChangeSink(new NullChangeWriter()); reader.run(); } }