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

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

checkstyle/sonarqube

  • 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.assertFalse;
6import static org.junit.Assert.assertNotNull;
7import static org.junit.Assert.assertTrue;
8import static org.junit.Assert.fail;
9
10import java.time.OffsetDateTime;
11import java.time.ZoneOffset;
12import java.util.Arrays;
13
14import org.junit.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 */
22public class ChangesetQueryUrlParserTest {
23
24 /**
25 * Basic unit test of {@link ChangesetQueryUrlParser#parse}
26 * @throws ChangesetQueryUrlException never
27 */
28 @Test
29 public 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 public 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 public 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 public 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 public 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 public void testUidAndDisplayName() {
137 shouldFail("uid=1&display_name=abcd");
138 }
139
140 /**
141 * Parse "time="
142 * @throws ChangesetQueryUrlException never
143 */
144 @Test
145 public 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 OffsetDateTime cal = q.getClosedAfter().toInstant().atOffset(ZoneOffset.UTC);
154 assertEquals(OffsetDateTime.of(2009, 12, 25, 10, 0, 0, 0, ZoneOffset.UTC), cal);
155
156 // OK
157 q = parser.parse("time=2009-12-25T10:00:00Z,2009-11-25T10:00:00Z");
158 assertNotNull(q);
159 assertNotNull(q.getClosedAfter());
160 assertNotNull(q.getCreatedBefore());
161
162 // should fail
163 shouldFail("time=asdf");
164 }
165
166 /**
167 * Parse "bbox="
168 * @throws ChangesetQueryUrlException never
169 */
170 @Test
171 public void testBbox() throws ChangesetQueryUrlException {
172 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
173 ChangesetQuery q;
174
175 // OK
176 q = parser.parse("bbox=-1,-1,1,1");
177 assertNotNull(q);
178 assertNotNull(q.getBounds());
179
180 // should fail
181 shouldFail("bbox=-91,-1,1,1");
182 shouldFail("bbox=-1,-181,1,1");
183 shouldFail("bbox=-1,-1,91,1");
184 shouldFail("bbox=-1,-1,1,181");
185 shouldFail("bbox=-1,-1,1");
186 }
187
188 /**
189 * Parse "changesets="
190 * @throws ChangesetQueryUrlException never
191 */
192 @Test
193 public void testChangesetIds() throws ChangesetQueryUrlException {
194 ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser();
195 ChangesetQuery q;
196
197 // OK
198 q = parser.parse("changesets=1,2,3");
199 assertNotNull(q);
200 assertTrue(q.getAdditionalChangesetIds().containsAll(Arrays.asList(1L, 2L, 3L)));
201 assertEquals(3, q.getAdditionalChangesetIds().size());
202
203 // OK
204 q = parser.parse("changesets=1,2,3,4,1");
205 assertNotNull(q);
206 assertTrue(q.getAdditionalChangesetIds().containsAll(Arrays.asList(1L, 2L, 3L, 4L)));
207 assertEquals(4, q.getAdditionalChangesetIds().size());
208
209 // OK
210 q = parser.parse("changesets=");
211 assertNotNull(q);
212 assertEquals(0, q.getAdditionalChangesetIds().size());
213
214 // should fail
215 shouldFail("changesets=foo");
216 }
217}
Note: See TracBrowser for help on using the repository browser.