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

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

see #16498 - convert one more unit test to Java

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