Changeset 15431 in josm for trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx
- Timestamp:
- 2019-10-06T14:47:39+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerActionTest.java
r14129 r15431 6 6 7 7 import java.io.IOException; 8 import java.nio.file.Files; 9 import java.nio.file.Paths; 10 import java.util.Arrays; 11 import java.util.Comparator; 12 import java.util.List; 13 import java.util.Map; 14 import java.util.Objects; 15 import java.util.stream.Collectors; 8 16 9 17 import org.junit.Rule; 10 18 import org.junit.Test; 11 19 import org.openstreetmap.josm.TestUtils; 20 import org.openstreetmap.josm.data.coor.LatLon; 12 21 import org.openstreetmap.josm.data.gpx.GpxData; 13 22 import org.openstreetmap.josm.data.osm.DataSet; 23 import org.openstreetmap.josm.data.osm.Node; 14 24 import org.openstreetmap.josm.data.osm.TagMap; 25 import org.openstreetmap.josm.gui.layer.GpxLayer; 15 26 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer; 16 27 import org.openstreetmap.josm.io.GpxReaderTest; 28 import org.openstreetmap.josm.io.IllegalDataException; 29 import org.openstreetmap.josm.io.OsmReader; 30 import org.openstreetmap.josm.spi.preferences.Config; 17 31 import org.openstreetmap.josm.testutils.JOSMTestRules; 18 32 import org.xml.sax.SAXException; … … 47 61 48 62 /** 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 /** 49 128 * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/14275">#14275</a> 50 129 * @throws IOException if an error occurs during reading
Note:
See TracChangeset
for help on using the changeset viewer.