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

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

see #16498 - convert one more unit test to Java, fix code style issues

  • Property svn:eol-style set to native
File size: 6.0 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;
16import org.openstreetmap.josm.tools.Logging;
17
18/**
19 * Unit tests of {@link ChangesetQueryUrlParser} class
20 */
21public class ChangesetQueryUrlParserTest {
22
23 /**
24 * Basic unit test of {@link ChangesetQueryUrlParser#parse}
25 * @throws ChangesetQueryUrlException never
26 */
27 @Test
28 public void testParseBasic() throws ChangesetQueryUrlException {
29 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
30
31 // OK
32 parser.parse("");
33
34 // should be OK
35 ChangesetQuery q = parser.parse(null);
36 assertNotNull(q);
37
38 // should be OK
39 q = parser.parse("");
40 assertNotNull(q);
41 }
42
43 private static void shouldFail(String s) {
44 try {
45 new ChangesetQueryUrlParser().parse(s);
46 fail("should throw exception");
47 } catch (ChangesetQueryUrlException e) {
48 Logging.trace(e);
49 }
50 }
51
52 /**
53 * Parse "uid="
54 * @throws ChangesetQueryUrlException never
55 */
56 @Test
57 public void testUid() throws ChangesetQueryUrlException {
58 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
59 ChangesetQuery q;
60
61 // OK
62 q = parser.parse("uid=1234");
63 assertNotNull(q);
64
65 shouldFail("uid=0");
66 shouldFail("uid=-1");
67 shouldFail("uid=abc");
68 }
69
70 /**
71 * Parse "display_name="
72 * @throws ChangesetQueryUrlException never
73 */
74 @Test
75 public void testDisplayName() throws ChangesetQueryUrlException {
76 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
77 ChangesetQuery q;
78
79 // OK
80 q = parser.parse("display_name=abcd");
81 assertNotNull(q);
82 assertEquals("abcd", q.getUserName());
83 }
84
85 /**
86 * Parse "open="
87 * @throws ChangesetQueryUrlException never
88 */
89 @Test
90 public void testOpen() throws ChangesetQueryUrlException {
91 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
92 ChangesetQuery q;
93
94 // OK
95 q = parser.parse("open=true");
96 assertNotNull(q);
97 assertEquals(Boolean.TRUE, q.getRestrictionToOpen());
98
99 // OK
100 q = parser.parse("open=false");
101 assertNotNull(q);
102 assertEquals(Boolean.FALSE, q.getRestrictionToOpen());
103
104 // illegal value for open
105 shouldFail("open=abcd");
106 }
107
108 /**
109 * Parse "closed="
110 * @throws ChangesetQueryUrlException never
111 */
112 @Test
113 public void testClosed() throws ChangesetQueryUrlException {
114 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
115 ChangesetQuery q;
116
117 // OK
118 q = parser.parse("closed=true");
119 assertNotNull(q);
120 assertEquals(Boolean.TRUE, q.getRestrictionToClosed());
121
122 // OK
123 q = parser.parse("closed=false");
124 assertNotNull(q);
125 assertEquals(Boolean.FALSE, q.getRestrictionToClosed());
126
127 // illegal value for open
128 shouldFail("closed=abcd");
129 }
130
131 /**
132 * Check we can't have both an uid and a display name
133 */
134 @Test
135 public void testUidAndDisplayName() {
136 shouldFail("uid=1&display_name=abcd");
137 }
138
139 /**
140 * Parse "time="
141 * @throws ChangesetQueryUrlException never
142 */
143 @Test
144 public void testTime() throws ChangesetQueryUrlException {
145 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
146 ChangesetQuery q;
147
148 // OK
149 q = parser.parse("time=2009-12-25T10:00:00Z");
150 assertNotNull(q);
151 assertNotNull(q.getClosedAfter());
152 OffsetDateTime cal = q.getClosedAfter().toInstant().atOffset(ZoneOffset.UTC);
153 assertEquals(OffsetDateTime.of(2009, 12, 25, 10, 0, 0, 0, ZoneOffset.UTC), cal);
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 public 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 public 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.