source: josm/trunk/test/unit/org/openstreetmap/josm/io/ChangesetQueryUrlParserTest.java

Last change on this file was 17843, checked in by simon04, 4 years ago

see #14176 - Migrate ChangesetQuery to Instant

  • Property svn:eol-style set to native
File size: 5.9 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.assertFalse;
6import static org.junit.jupiter.api.Assertions.assertNotNull;
7import static org.junit.jupiter.api.Assertions.assertTrue;
8import static org.junit.jupiter.api.Assertions.fail;
9
10import java.time.OffsetDateTime;
11import java.time.ZoneOffset;
12import java.util.Arrays;
13
14import org.junit.jupiter.api.Test;
15import org.openstreetmap.josm.io.ChangesetQuery.ChangesetQueryUrlException;
16import org.openstreetmap.josm.io.ChangesetQuery.ChangesetQueryUrlParser;
17import org.openstreetmap.josm.tools.Logging;
18
19/**
20 * Unit tests of {@link ChangesetQueryUrlParser} class
21 */
22class ChangesetQueryUrlParserTest {
23
24 /**
25 * Basic unit test of {@link ChangesetQueryUrlParser#parse}
26 * @throws ChangesetQueryUrlException never
27 */
28 @Test
29 void testParseBasic() throws ChangesetQueryUrlException {
30 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
31
32 // OK
33 parser.parse("");
34
35 // should be OK
36 ChangesetQuery q = parser.parse(null);
37 assertNotNull(q);
38
39 // should be OK
40 q = parser.parse("");
41 assertNotNull(q);
42 }
43
44 private static void shouldFail(String s) {
45 try {
46 new ChangesetQueryUrlParser().parse(s);
47 fail("should throw exception");
48 } catch (ChangesetQueryUrlException e) {
49 Logging.trace(e);
50 }
51 }
52
53 /**
54 * Parse "uid="
55 * @throws ChangesetQueryUrlException never
56 */
57 @Test
58 void testUid() throws ChangesetQueryUrlException {
59 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
60 ChangesetQuery q;
61
62 // OK
63 q = parser.parse("uid=1234");
64 assertNotNull(q);
65
66 shouldFail("uid=0");
67 shouldFail("uid=-1");
68 shouldFail("uid=abc");
69 }
70
71 /**
72 * Parse "display_name="
73 * @throws ChangesetQueryUrlException never
74 */
75 @Test
76 void testDisplayName() throws ChangesetQueryUrlException {
77 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
78 ChangesetQuery q;
79
80 // OK
81 q = parser.parse("display_name=abcd");
82 assertNotNull(q);
83 assertEquals("abcd", q.getUserName());
84 }
85
86 /**
87 * Parse "open="
88 * @throws ChangesetQueryUrlException never
89 */
90 @Test
91 void testOpen() throws ChangesetQueryUrlException {
92 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
93 ChangesetQuery q;
94
95 // OK
96 q = parser.parse("open=true");
97 assertNotNull(q);
98 assertTrue(q.getRestrictionToOpen());
99
100 // OK
101 q = parser.parse("open=false");
102 assertNotNull(q);
103 assertFalse(q.getRestrictionToOpen());
104
105 // illegal value for open
106 shouldFail("open=abcd");
107 }
108
109 /**
110 * Parse "closed="
111 * @throws ChangesetQueryUrlException never
112 */
113 @Test
114 void testClosed() throws ChangesetQueryUrlException {
115 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
116 ChangesetQuery q;
117
118 // OK
119 q = parser.parse("closed=true");
120 assertNotNull(q);
121 assertTrue(q.getRestrictionToClosed());
122
123 // OK
124 q = parser.parse("closed=false");
125 assertNotNull(q);
126 assertFalse(q.getRestrictionToClosed());
127
128 // illegal value for open
129 shouldFail("closed=abcd");
130 }
131
132 /**
133 * Check we can't have both an uid and a display name
134 */
135 @Test
136 void testUidAndDisplayName() {
137 shouldFail("uid=1&display_name=abcd");
138 }
139
140 /**
141 * Parse "time="
142 * @throws ChangesetQueryUrlException never
143 */
144 @Test
145 void testTime() throws ChangesetQueryUrlException {
146 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
147 ChangesetQuery q;
148
149 // OK
150 q = parser.parse("time=2009-12-25T10:00:00Z");
151 assertNotNull(q);
152 assertNotNull(q.getClosedAfter());
153 assertEquals(OffsetDateTime.of(2009, 12, 25, 10, 0, 0, 0, ZoneOffset.UTC).toInstant(), q.getClosedAfter());
154
155 // OK
156 q = parser.parse("time=2009-12-25T10:00:00Z,2009-11-25T10:00:00Z");
157 assertNotNull(q);
158 assertNotNull(q.getClosedAfter());
159 assertNotNull(q.getCreatedBefore());
160
161 // should fail
162 shouldFail("time=asdf");
163 }
164
165 /**
166 * Parse "bbox="
167 * @throws ChangesetQueryUrlException never
168 */
169 @Test
170 void testBbox() throws ChangesetQueryUrlException {
171 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
172 ChangesetQuery q;
173
174 // OK
175 q = parser.parse("bbox=-1,-1,1,1");
176 assertNotNull(q);
177 assertNotNull(q.getBounds());
178
179 // should fail
180 shouldFail("bbox=-91,-1,1,1");
181 shouldFail("bbox=-1,-181,1,1");
182 shouldFail("bbox=-1,-1,91,1");
183 shouldFail("bbox=-1,-1,1,181");
184 shouldFail("bbox=-1,-1,1");
185 }
186
187 /**
188 * Parse "changesets="
189 * @throws ChangesetQueryUrlException never
190 */
191 @Test
192 void testChangesetIds() throws ChangesetQueryUrlException {
193 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
194 ChangesetQuery q;
195
196 // OK
197 q = parser.parse("changesets=1,2,3");
198 assertNotNull(q);
199 assertTrue(q.getAdditionalChangesetIds().containsAll(Arrays.asList(1L, 2L, 3L)));
200 assertEquals(3, q.getAdditionalChangesetIds().size());
201
202 // OK
203 q = parser.parse("changesets=1,2,3,4,1");
204 assertNotNull(q);
205 assertTrue(q.getAdditionalChangesetIds().containsAll(Arrays.asList(1L, 2L, 3L, 4L)));
206 assertEquals(4, q.getAdditionalChangesetIds().size());
207
208 // OK
209 q = parser.parse("changesets=");
210 assertNotNull(q);
211 assertEquals(0, q.getAdditionalChangesetIds().size());
212
213 // should fail
214 shouldFail("changesets=foo");
215 }
216}
Note: See TracBrowser for help on using the repository browser.