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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.