Package org.openstreetmap.osmosis.set.v0_6

Source Code of org.openstreetmap.osmosis.set.v0_6.ChangeDeriverTest

// This software is released into the Public Domain.  See copying.txt for details.
package org.openstreetmap.osmosis.set.v0_6;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.junit.Assert;
import org.junit.Test;
import org.openstreetmap.osmosis.core.Osmosis;
import org.openstreetmap.osmosis.core.container.v0_6.ChangeContainer;
import org.openstreetmap.osmosis.core.domain.v0_6.Entity;
import org.openstreetmap.osmosis.core.domain.v0_6.EntityType;
import org.openstreetmap.osmosis.core.misc.v0_6.EmptyReader;
import org.openstreetmap.osmosis.core.task.common.ChangeAction;
import org.openstreetmap.osmosis.core.task.v0_6.RunnableSource;
import org.openstreetmap.osmosis.testutil.AbstractDataTest;
import org.openstreetmap.osmosis.testutil.v0_6.RunTaskUtilities;
import org.openstreetmap.osmosis.testutil.v0_6.SinkChangeInspector;
import org.openstreetmap.osmosis.xml.common.CompressionMethod;
import org.openstreetmap.osmosis.xml.v0_6.XmlReader;

/**
* Tests for --derive-change task.
*
* @author Igor Podolskiy
*/
public class ChangeDeriverTest extends AbstractDataTest {
 
  /**
   * Empty inputs should yield empty change.
   *
   * @throws Exception if something goes wrong.
   */
  @Test
  public void emptyInputs() throws Exception {
    deriveChange("v0_6/empty-entity.osm",
        "v0_6/empty-entity.osm",
        "v0_6/empty-change.osc");
  }
 
  /**
   * Same inputs should yield empty change.
   *
   * @throws Exception if something goes wrong.
   */
  @Test
  public void sameInputs() throws Exception {
    deriveChange("v0_6/derive_change/simple.osm",
        "v0_6/derive_change/simple.osm",
        "v0_6/empty-change.osc");
  }
 
  /**
   * Deriving change with an empty left input should yield
   * a change with deletes only.
   *
   * @throws Exception if something goes wrong.
   */
  @Test
  public void leftEmpty() throws Exception {
    deriveChange("v0_6/empty-entity.osm",
        "v0_6/derive_change/simple.osm",
        "v0_6/derive_change/full-create.osc");
  }
 
  /**
   * Deriving change with an empty right input should yield
   * a change with creates only.
   *
   * @throws Exception if something goes wrong.
   */
  @Test
  public void rightEmpty() throws Exception {
    // Cannot be tested with file comparison as the derived
    // change contains deletes which have a current timestamp
    // that cannot be reliably predicted.
    // Therefore, check all relevant attributes manually.
   
    ChangeDeriver deriver = new ChangeDeriver(1);
    RunnableSource left = new XmlReader(dataUtils.createDataFile(
        "v0_6/derive_change/simple.osm"), true, CompressionMethod.None);
    RunnableSource right = new EmptyReader();
   
    SinkChangeInspector result = RunTaskUtilities.run(deriver, left, right);
    List<ChangeContainer> changes = result.getProcessedChanges();
   
    Assert.assertEquals(3, changes.size());
    for (ChangeContainer changeContainer : changes) {
      Assert.assertEquals(ChangeAction.Delete, changeContainer.getAction());
    }
   
    Entity e;
    e = changes.get(0).getEntityContainer().getEntity();
    Assert.assertEquals(EntityType.Node, e.getType());
    Assert.assertEquals(10, e.getId());
    Assert.assertEquals(34, e.getVersion());
   
    e = changes.get(1).getEntityContainer().getEntity();
    Assert.assertEquals(EntityType.Way, e.getType());
    Assert.assertEquals(100, e.getId());
    Assert.assertEquals(56, e.getVersion());

    e = changes.get(2).getEntityContainer().getEntity();
    Assert.assertEquals(EntityType.Relation, e.getType());
    Assert.assertEquals(1000, e.getId());
    Assert.assertEquals(78, e.getVersion());
  }

 
  private void deriveChange(String leftFileName, String rightFileName,
      String expectedOutputFileName) throws IOException {
    File leftFile;
    File rightFile;
    File expectedOutputFile;
    File actualOutputFile;
   
    leftFile = dataUtils.createDataFile(leftFileName);
    rightFile = dataUtils.createDataFile(rightFileName);
    expectedOutputFile = dataUtils.createDataFile(expectedOutputFileName);
    actualOutputFile = dataUtils.newFile();

    Osmosis.run(
        new String [] {
          "-q",
          "--read-xml-0.6", rightFile.getPath(),
          "--read-xml-0.6", leftFile.getPath(),
          "--derive-change-0.6",
          "--write-xml-change-0.6", actualOutputFile.getPath()
        }
      );

    dataUtils.compareFiles(expectedOutputFile, actualOutputFile);
  }
}
TOP

Related Classes of org.openstreetmap.osmosis.set.v0_6.ChangeDeriverTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.