source: josm/trunk/test/unit/org/openstreetmap/josm/io/GeoJSONWriterTest.java@ 17360

Last change on this file since 17360 was 17275, checked in by Don-vip, 3 years ago

see #16567 - upgrade almost all tests to JUnit 5, except those depending on WiremockRule

See https://github.com/tomakehurst/wiremock/issues/684

File size: 5.0 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io;
3
4import static org.junit.jupiter.api.Assertions.assertEquals;
5import static org.junit.jupiter.api.Assertions.assertTrue;
6
7import java.io.InputStream;
8import java.nio.file.Files;
9import java.nio.file.Paths;
10import java.util.Arrays;
11
12import org.junit.jupiter.api.BeforeAll;
13import org.junit.jupiter.api.Test;
14import org.openstreetmap.josm.JOSMFixture;
15import org.openstreetmap.josm.TestUtils;
16import org.openstreetmap.josm.data.coor.LatLon;
17import org.openstreetmap.josm.data.osm.DataSet;
18import org.openstreetmap.josm.data.osm.Node;
19import org.openstreetmap.josm.data.osm.Way;
20
21/**
22 * Unit tests of {@link GeoJSONWriter} class.
23 */
24class GeoJSONWriterTest {
25
26 /**
27 * Setup test.
28 */
29 @BeforeAll
30 public static void setUp() {
31 JOSMFixture.createUnitTestFixture().init();
32 }
33
34 /**
35 * Unit test for Point
36 */
37 @Test
38 void testPoint() {
39 final Node node = new Node(new LatLon(12.3, 4.56));
40 node.put("name", "foo");
41 node.put("source", "code");
42 node.put("data", "{\"foo\": 1, \"bar\": \"baz\"}");
43 final DataSet ds = new DataSet();
44 ds.addPrimitive(node);
45 final GeoJSONWriter writer = new GeoJSONWriter(ds);
46 assertEquals(("" +
47 "{\n" +
48 " 'type': 'FeatureCollection',\n" +
49 " 'generator': 'JOSM',\n" +
50 " 'features': [\n" +
51 " {\n" +
52 " 'type': 'Feature',\n" +
53 " 'properties': {\n" +
54 " 'name': 'foo',\n" +
55 " 'source': 'code',\n" +
56 " 'data': {\n" +
57 " 'foo': 1,\n" +
58 " 'bar': 'baz'\n" +
59 " }\n" +
60 " },\n" +
61 " 'geometry': {\n" +
62 " 'type': 'Point',\n" +
63 " 'coordinates': [\n" +
64 " 4.56000000000,\n" +
65 " 12.30000000000\n" +
66 " ]\n" +
67 " }\n" +
68 " }\n" +
69 " ]\n" +
70 "}").replace("'", "\""), writer.write().trim());
71 }
72
73 /**
74 * Unit test for LineString
75 */
76 @Test
77 void testLineString() {
78 final DataSet ds = new DataSet();
79 final Node n1 = new Node(new LatLon(12.3, 4.56));
80 final Node n2 = new Node(new LatLon(12.4, 4.57));
81 ds.addPrimitive(n1);
82 ds.addPrimitive(n2);
83 final Way way = new Way();
84 way.put("highway", "footway");
85 way.setNodes(Arrays.asList(n1, n2));
86 ds.addPrimitive(way);
87 final GeoJSONWriter writer = new GeoJSONWriter(ds);
88 assertEquals(("" +
89 "{\n" +
90 " 'type': 'FeatureCollection',\n" +
91 " 'generator': 'JOSM',\n" +
92 " 'features': [\n" +
93 " {\n" +
94 " 'type': 'Feature',\n" +
95 " 'properties': {\n" +
96 " 'highway': 'footway'\n" +
97 " },\n" +
98 " 'geometry': {\n" +
99 " 'type': 'LineString',\n" +
100 " 'coordinates': [\n" +
101 " [\n" +
102 " 4.56000000000,\n" +
103 " 12.30000000000\n" +
104 " ],\n" +
105 " [\n" +
106 " 4.57000000000,\n" +
107 " 12.40000000000\n" +
108 " ]\n" +
109 " ]\n" +
110 " }\n" +
111 " }\n" +
112 " ]\n" +
113 "}").replace("'", "\""), writer.write().trim());
114 }
115
116 /**
117 * Unit test for multipolygon
118 * @throws Exception if an error occurs
119 */
120 @Test
121 void testMultipolygon() throws Exception {
122 try (InputStream in = Files.newInputStream(Paths.get(TestUtils.getTestDataRoot(), "multipolygon.osm"))) {
123 DataSet ds = OsmReader.parseDataSet(in, null);
124 final GeoJSONWriter writer = new GeoJSONWriter(ds);
125 assertTrue(writer.write().contains("MultiPolygon"));
126 }
127 }
128
129 /**
130 * Unit test for exporting invalid multipolygons, see #13827
131 * @throws Exception if an error occurs
132 */
133 @Test
134 void testMultipolygonRobustness() throws Exception {
135 try (InputStream in = Files.newInputStream(Paths.get("nodist/data/multipolygon.osm"))) {
136 DataSet ds = OsmReader.parseDataSet(in, null);
137 final GeoJSONWriter writer = new GeoJSONWriter(ds);
138 assertTrue(writer.write().contains("MultiPolygon"));
139 }
140 }
141}
Note: See TracBrowser for help on using the repository browser.