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

Last change on this file since 11003 was 11003, checked in by simon04, 8 years ago

fix #11975 - Evaluate extended Overpass queries bbox, geocodeArea

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