// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.io; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.TimeZone; import org.junit.Test import org.openstreetmap.josm.io.ChangesetQuery.ChangesetQueryUrlException; import org.openstreetmap.josm.io.ChangesetQuery.ChangesetQueryUrlParser; import static org.junit.Assert.*; class ChangsetQueryUrlParserTest { final shouldFail = new GroovyTestCase().&shouldFail @Test public void test_constructor() { ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser(); } @Test public void test_parse_basic() { ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser(); // OK parser.parse "" // should be OK ChangesetQuery q = parser.parse(null) assert q != null // should be OK q = parser.parse("") assert q != null } @Test public void test_uid() { ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser(); def ChangesetQuery q // OK q = parser.parse("uid=1234") assert q != null shouldFail(ChangesetQueryUrlException) { q = parser.parse("uid=0") } shouldFail(ChangesetQueryUrlException) { q = parser.parse("uid=-1") } shouldFail(ChangesetQueryUrlException) { q = parser.parse("uid=abc") } } @Test public void test_display_name() { ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser(); def ChangesetQuery q // OK q = parser.parse("display_name=abcd") assert q != null assert q.@userName == "abcd" } @Test public void test_open() { ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser(); def ChangesetQuery q // OK q = parser.parse("open=true") assert q != null assert q.@open == true // OK q = parser.parse("open=false") assert q != null assert q.@open == false // illegal value for open shouldFail(ChangesetQueryUrlException) { q = parser.parse("open=abcd") } } @Test public void test_closed() { ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser(); def ChangesetQuery q // OK q = parser.parse("closed=true") assert q != null assert q.@closed == true // OK q = parser.parse("closed=false") assert q != null assert q.@closed == false // illegal value for open shouldFail(ChangesetQueryUrlException) { q = parser.parse("closed=abcd") } } @Test public void test_uid_and_display_name() { ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser(); def ChangesetQuery q // we can't have both an uid and a display name shouldFail(ChangesetQueryUrlException) { q = parser.parse("uid=1&display_name=abcd") } } @Test public void test_time() { ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser(); def ChangesetQuery q // OK q = parser.parse("time=2009-12-25T10:00:00Z") assert q != null assert q.@closedAfter != null Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT+0")); cal.setTime(q.@closedAfter); assert cal.get(Calendar.YEAR) == 2009 assert cal.get(Calendar.MONTH) == 11 // calendar is 0-based assert cal.get(Calendar.DAY_OF_MONTH) == 25 assert cal.get(Calendar.HOUR_OF_DAY) == 10 assert cal.get(Calendar.MINUTE) == 0 assert cal.get(Calendar.SECOND) == 0 // OK q = parser.parse("time=2009-12-25T10:00:00Z,2009-11-25T10:00:00Z") assert q!= null assert q.@closedAfter != null assert q.@createdBefore != null // should fail shouldFail(ChangesetQueryUrlException) { q = parser.parse("time=asdf") } } @Test public void test_bbox() { ChangesetQueryUrlParser parser = new ChangesetQueryUrlParser(); def ChangesetQuery q // OK q = parser.parse("bbox=-1,-1,1,1") assert q != null assert q.@bounds != null // should fail shouldFail(ChangesetQueryUrlException) { q = parser.parse("bbox=-91,-1,1,1") } // should fail shouldFail(ChangesetQueryUrlException) { q = parser.parse("bbox=-1,-181,1,1") } // should fail shouldFail(ChangesetQueryUrlException) { q = parser.parse("bbox=-1,-1,91,1") } // should fail shouldFail(ChangesetQueryUrlException) { q = parser.parse("bbox=-1,-1,1,181") } // should fail shouldFail(ChangesetQueryUrlException) { q = parser.parse("bbox=-1,-1,1") } } }