package org.wikipedia.feed.announcement; import org.junit.Test; import org.junit.runner.RunWith; import org.wikipedia.test.TestRunner; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; @RunWith(TestRunner.class) public class GeoIPCookieUnmarshallerTest { private static final double LATITUDE = 37.33; private static final double LONGITUDE = -121.89; @Test public void testGeoIPWithLocation() { GeoIPCookie cookie = GeoIPCookieUnmarshaller.unmarshal("US:California:San Francisco:" + LATITUDE + ":" + LONGITUDE + ":v4"); assertThat(cookie.country(), is("US")); assertThat(cookie.region(), is("California")); assertThat(cookie.city(), is("San Francisco")); assertThat(cookie.location(), is(notNullValue())); assertThat(cookie.location().getLatitude(), is(LATITUDE)); assertThat(cookie.location().getLongitude(), is(LONGITUDE)); } @Test public void testGeoIPWithoutLocation() { GeoIPCookie cookie = GeoIPCookieUnmarshaller.unmarshal("FR::Paris:::v4"); assertThat(cookie.country(), is("FR")); assertThat(cookie.region(), is("")); assertThat(cookie.city(), is("Paris")); assertThat(cookie.location(), is(nullValue())); } @Test public void testGeoIPEmpty() { GeoIPCookie cookie = GeoIPCookieUnmarshaller.unmarshal(":::::v4"); assertThat(cookie.country(), is("")); assertThat(cookie.region(), is("")); assertThat(cookie.city(), is("")); assertThat(cookie.location(), is(nullValue())); } @Test(expected = IllegalArgumentException.class) public void testGeoIPWrongVersion() { GeoIPCookieUnmarshaller.unmarshal("RU::Moscow:1:2:v5"); } @Test(expected = IllegalArgumentException.class) public void testGeoIPWrongParamCount() { GeoIPCookieUnmarshaller.unmarshal("CA:Toronto:v4"); } @Test(expected = IllegalArgumentException.class) public void testGeoIPMalformed() { GeoIPCookieUnmarshaller.unmarshal("foo"); } @Test(expected = IllegalArgumentException.class) public void testGeoIPWithBadLocation() { GeoIPCookieUnmarshaller.unmarshal("US:California:San Francisco:foo:bar:v4"); } }