Changeset 15431 in josm for trunk/test


Ignore:
Timestamp:
2019-10-06T14:47:39+02:00 (5 years ago)
Author:
Don-vip
Message:

fix #2760 - update unit tests (patch by Bjoeni)

Location:
trunk/test
Files:
6 added
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/actions/SimplifyWayActionTest.java

    r15419 r15431  
    44import static org.junit.Assert.assertEquals;
    55import static org.junit.Assert.assertNotNull;
    6 import static org.junit.Assert.assertTrue;
    76
     7import java.io.IOException;
     8import java.nio.file.Files;
     9import java.nio.file.Paths;
     10import java.util.ArrayList;
    811import java.util.Collection;
    912import java.util.Collections;
     13import java.util.Comparator;
     14import java.util.List;
     15import java.util.stream.Collectors;
    1016import java.util.stream.Stream;
    1117
     
    1319import org.junit.Rule;
    1420import org.junit.Test;
     21import org.openstreetmap.josm.TestUtils;
    1522import org.openstreetmap.josm.command.DeleteCommand;
    1623import org.openstreetmap.josm.command.SequenceCommand;
     
    2027import org.openstreetmap.josm.data.osm.Way;
    2128import org.openstreetmap.josm.gui.MainApplication;
    22 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     29import org.openstreetmap.josm.io.IllegalDataException;
     30import org.openstreetmap.josm.io.OsmReader;
    2331import org.openstreetmap.josm.testutils.JOSMTestRules;
    2432import org.openstreetmap.josm.tools.Utils;
     
    5260    }
    5361
    54     private static Way createWaySelected(DataSet ds, double latStart) {
    55         Node n1 = new Node(new LatLon(latStart, 1.0));
    56         ds.addPrimitive(n1);
    57         Node n2 = new Node(new LatLon(latStart+1.0, 1.0));
    58         ds.addPrimitive(n2);
    59         Way w = new Way();
    60         w.addNode(n1);
    61         w.addNode(n2);
    62         ds.addPrimitive(w);
    63         ds.addSelected(w);
    64         return w;
     62    private DataSet getDs(String file) throws IllegalDataException, IOException {
     63        return OsmReader.parseDataSet(Files.newInputStream(Paths.get(TestUtils.getTestDataRoot(), "tracks/" + file + ".osm")), null);
    6564    }
    6665
    6766    /**
    68      * Test without any selection.
     67     * Tests simplification
     68     * @throws IOException
     69     * @throws IllegalDataException
    6970     */
    7071    @Test
    71     public void testSelectionEmpty() {
    72         DataSet ds = new DataSet();
    73         OsmDataLayer layer = new OsmDataLayer(ds, "", null);
    74         try {
    75             MainApplication.getLayerManager().addLayer(layer);
    76             assertTrue(ds.getSelected().isEmpty());
    77             action.actionPerformed(null);
    78         } finally {
    79             MainApplication.getLayerManager().removeLayer(layer);
    80         }
    81     }
    82 
    83     /**
    84      * Test with a single way.
    85      */
    86     @Test
    87     public void testSingleWay() {
    88         DataSet ds = new DataSet();
    89         createWaySelected(ds, 0.0);
    90         OsmDataLayer layer = new OsmDataLayer(ds, "", null);
    91         try {
    92             MainApplication.getLayerManager().addLayer(layer);
    93             assertEquals(1, ds.getSelected().size());
    94             action.actionPerformed(null);
    95         } finally {
    96             MainApplication.getLayerManager().removeLayer(layer);
    97         }
    98     }
    99 
    100     /**
    101      * Test with more than 10 ways.
    102      */
    103     @Test
    104     public void testMoreThanTenWays() {
    105         DataSet ds = new DataSet();
    106         for (int i = 0; i < 11; i++) {
    107             createWaySelected(ds, i);
    108         }
    109         OsmDataLayer layer = new OsmDataLayer(ds, "", null);
    110         try {
    111             MainApplication.getLayerManager().addLayer(layer);
    112             assertEquals(11, ds.getSelected().size());
    113             action.actionPerformed(null);
    114         } finally {
    115             MainApplication.getLayerManager().removeLayer(layer);
    116         }
     72    public void testSimplify() throws IllegalDataException, IOException {
     73        DataSet DsSimplify = getDs("tracks");
     74        DataSet DsExpected = getDs("tracks-simplify15");
     75        SimplifyWayAction.simplifyWays(new ArrayList<>(DsSimplify.getWays()), 15);
     76        DsSimplify.cleanupDeletedPrimitives();
     77        //compare sorted Coordinates and total amount of primitives, because IDs and order will vary after reload
     78        List<LatLon> CoorSimplify = DsSimplify.getNodes().stream()
     79                .map(Node::getCoor)
     80                .sorted(Comparator.comparing(LatLon::hashCode))
     81                .collect(Collectors.toList());
     82        List<LatLon> CoorExpected = DsExpected.getNodes().stream()
     83                .map(Node::getCoor)
     84                .sorted(Comparator.comparing(LatLon::hashCode))
     85                .collect(Collectors.toList());
     86        assertEquals(CoorExpected, CoorSimplify);
     87        assertEquals(DsExpected.allPrimitives().size(), DsSimplify.allPrimitives().size());
    11788    }
    11889
  • trunk/test/unit/org/openstreetmap/josm/data/gpx/GpxImageCorrelationTest.java

    r14797 r15431  
    5252    public void testMatchGpxTrack() throws Exception {
    5353        IPreferences s = Config.getPref();
    54         final GpxData gpx = GpxReaderTest.parseGpxData(TestUtils.getTestDataRoot() + "ImageCorrelationTest.gpx");
     54        final GpxData gpx = GpxReaderTest.parseGpxData(TestUtils.getTestDataRoot() + "tracks/tracks.gpx");
    5555        assertEquals(5, gpx.tracks.size());
    5656        assertEquals(1, gpx.tracks.iterator().next().getSegments().size());
  • trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerActionTest.java

    r14129 r15431  
    66
    77import java.io.IOException;
     8import java.nio.file.Files;
     9import java.nio.file.Paths;
     10import java.util.Arrays;
     11import java.util.Comparator;
     12import java.util.List;
     13import java.util.Map;
     14import java.util.Objects;
     15import java.util.stream.Collectors;
    816
    917import org.junit.Rule;
    1018import org.junit.Test;
    1119import org.openstreetmap.josm.TestUtils;
     20import org.openstreetmap.josm.data.coor.LatLon;
    1221import org.openstreetmap.josm.data.gpx.GpxData;
    1322import org.openstreetmap.josm.data.osm.DataSet;
     23import org.openstreetmap.josm.data.osm.Node;
    1424import org.openstreetmap.josm.data.osm.TagMap;
     25import org.openstreetmap.josm.gui.layer.GpxLayer;
    1526import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
    1627import org.openstreetmap.josm.io.GpxReaderTest;
     28import org.openstreetmap.josm.io.IllegalDataException;
     29import org.openstreetmap.josm.io.OsmReader;
     30import org.openstreetmap.josm.spi.preferences.Config;
    1731import org.openstreetmap.josm.testutils.JOSMTestRules;
    1832import org.xml.sax.SAXException;
     
    4761
    4862    /**
     63     * Tests conversions from GPX tracks to OSM datasets
     64     * @throws Exception if the parsing fails
     65     */
     66    @Test
     67    public void testFromTrack() throws Exception {
     68        Config.getPref().put("gpx.convert-tags", "no");
     69        testFromTrack("tracks");
     70
     71        Config.getPref().put("gpx.convert-tags", "yes");
     72        testFromTrack("tracks-ele-time");
     73
     74        Config.getPref().put("gpx.convert-tags", "list");
     75        Config.getPref().putList("gpx.convert-tags.list.yes", Arrays.asList("ele"));
     76        Config.getPref().putList("gpx.convert-tags.list.no", Arrays.asList("time"));
     77        testFromTrack("tracks-ele");
     78
     79
     80        Config.getPref().putList("gpx.convert-tags.list.yes", Arrays.asList("time"));
     81        Config.getPref().putList("gpx.convert-tags.list.no", Arrays.asList("ele"));
     82        testFromTrack("tracks-time");
     83    }
     84
     85    private class genericNode {
     86        public genericNode(Node n) {
     87            coor = n.getCoor().getRoundedToOsmPrecision();
     88            tags = n.getKeys();
     89        }
     90        public LatLon coor;
     91        public Map<String, String> tags;
     92        @Override
     93        public boolean equals(Object obj) {
     94            if (!(obj instanceof genericNode)) {
     95                return false;
     96            }
     97            genericNode other = (genericNode) obj;
     98            return coor.equals(other.coor) && tags.equals(other.tags);
     99        }
     100        @Override
     101        public int hashCode() {
     102            return Objects.hash(coor, tags);
     103        }
     104    }
     105
     106    private void testFromTrack(String expected) throws IOException, SAXException, IllegalDataException {
     107        final GpxData data = GpxReaderTest.parseGpxData(TestUtils.getTestDataRoot() + "tracks/tracks.gpx");
     108        final DataSet osmExpected = OsmReader.parseDataSet(Files.newInputStream(Paths.get(TestUtils.getTestDataRoot(), "tracks/" + expected + ".osm")), null);
     109        final GpxLayer layer = new GpxLayer(data);
     110        final DataSet osm = new ConvertFromGpxLayerAction(layer).convert();
     111        //compare sorted coordinates/tags and total amount of primitives, because IDs and order will vary after reload
     112
     113        List<genericNode> nodes = osm.getNodes().stream()
     114                .map(genericNode::new)
     115                .sorted(Comparator.comparing(g -> g.coor.hashCode()))
     116                .collect(Collectors.toList());
     117
     118        List<genericNode> nodesExpected = osmExpected.getNodes().stream()
     119                .map(genericNode::new)
     120                .sorted(Comparator.comparing(g -> g.coor.hashCode()))
     121                .collect(Collectors.toList());
     122
     123        assertEquals(nodesExpected, nodes);
     124        assertEquals(osmExpected.allPrimitives().size(), osm.allPrimitives().size());
     125    }
     126
     127    /**
    49128     * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/14275">#14275</a>
    50129     * @throws IOException if an error occurs during reading
Note: See TracChangeset for help on using the changeset viewer.