source: josm/trunk/test/unit/org/openstreetmap/josm/io/OverpassDownloadReaderTest.java@ 11917

Last change on this file since 11917 was 11917, checked in by Don-vip, 7 years ago

see #14653 - better unit test

File size: 3.9 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io;
3
4import static org.junit.Assert.assertEquals;
5import static org.junit.Assert.assertTrue;
6
7import java.util.regex.Matcher;
8
9import org.junit.Rule;
10import org.junit.Test;
11import org.openstreetmap.josm.data.Bounds;
12import org.openstreetmap.josm.gui.preferences.server.OverpassServerPreference;
13import org.openstreetmap.josm.io.OverpassDownloadReader.OverpassOutpoutFormat;
14import org.openstreetmap.josm.testutils.JOSMTestRules;
15import org.openstreetmap.josm.tools.OverpassTurboQueryWizard;
16import org.openstreetmap.josm.tools.Utils;
17
18import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
19
20/**
21 * Unit tests of {@link OverpassDownloadReader} class.
22 */
23public class OverpassDownloadReaderTest {
24
25 /**
26 * Base test environment is enough
27 */
28 @Rule
29 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
30 public JOSMTestRules test = new JOSMTestRules().timeout(15000);
31
32 private String getExpandedQuery(String search) {
33 final String query = OverpassTurboQueryWizard.getInstance().constructQuery(search);
34 final String request = new OverpassDownloadReader(new Bounds(1, 2, 3, 4), OverpassServerPreference.getOverpassServer(), query)
35 .getRequestForBbox(1, 2, 3, 4)
36 .substring("interpreter?data=".length());
37 return Utils.decodeUrl(request);
38 }
39
40 /**
41 * Tests evaluating the extended query feature {@code bbox}.
42 */
43 @Test
44 public void testBbox() {
45 final String query = getExpandedQuery("amenity=drinking_water");
46 assertEquals("" +
47 "[out:xml][timeout:25][bbox:2.0,1.0,4.0,3.0];\n" +
48 "(\n" +
49 " node[\"amenity\"=\"drinking_water\"];\n" +
50 " way[\"amenity\"=\"drinking_water\"];\n" +
51 " relation[\"amenity\"=\"drinking_water\"];\n" +
52 ");\n" +
53 "(._;>;);\n" +
54 "out meta;", query);
55 }
56
57 /**
58 * Tests evaluating the extended query feature {@code geocodeArea}.
59 */
60 @Test
61 public void testGeocodeArea() {
62 final String query = getExpandedQuery("amenity=drinking_water in London");
63 assertEquals("" +
64 "[out:xml][timeout:25];\n" +
65 "area(3600065606)->.searchArea;\n" +
66 "(\n" +
67 " node[\"amenity\"=\"drinking_water\"](area.searchArea);\n" +
68 " way[\"amenity\"=\"drinking_water\"](area.searchArea);\n" +
69 " relation[\"amenity\"=\"drinking_water\"](area.searchArea);\n" +
70 ");\n" +
71 "(._;>;);\n" +
72 "out meta;", query);
73 }
74
75 /**
76 * Tests evaluating the extended query feature {@code geocodeArea}.
77 */
78 @Test
79 public void testGeocodeUnknownArea() {
80 final String query = OverpassDownloadReader.expandExtendedQueries("{{geocodeArea:foo-bar-baz-does-not-exist}}");
81 assertEquals("// Failed to evaluate {{geocodeArea:foo-bar-baz-does-not-exist}}\n", query);
82 }
83
84 /**
85 * Tests evaluating the overpass output format statements.
86 */
87 @Test
88 public void testOutputFormatStatement() {
89 for (OverpassOutpoutFormat oof : OverpassOutpoutFormat.values()) {
90 Matcher m = OverpassDownloadReader.OUTPUT_FORMAT_STATEMENT.matcher("[out:"+oof.getDirective()+"]");
91 assertTrue(m.matches());
92 assertEquals(oof.getDirective(), m.group(1));
93 }
94
95 assertTrue(OverpassDownloadReader.OUTPUT_FORMAT_STATEMENT.matcher(
96 "[out:pbf][timeout:25][bbox:{{bbox}}];\n" +
97 "(\n" +
98 " node[\"amenity\"=\"pharmacy\"];\n" +
99 " way[\"amenity\"=\"pharmacy\"];\n" +
100 " relation[\"amenity\"=\"pharmacy\"];\n" +
101 ");\n" +
102 "(._;>;);\n" +
103 "out meta;").matches());
104 }
105}
Note: See TracBrowser for help on using the repository browser.