/** * * Copyright 2015-2016 Ishan Khanna * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jivesoftware.smackx.geoloc.provider; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import java.net.URI; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.util.PacketParserUtils; import org.jivesoftware.smackx.InitExtensions; import org.jivesoftware.smackx.geoloc.packet.GeoLocation; import org.junit.Test; import org.jxmpp.util.XmppDateTime; public class GeoLocationProviderTest extends InitExtensions { @Test public void testGeoLocationProviderWithNoDatumSet() throws Exception { // @formatter:off final String geoLocationString = "" +"" +"23" +"1000" +"Delhi" +"10" +"Small Building" +"India" +"IN" +"My Description" +"90" +"top" +"25.098345" +"awesome" +"77.992034" +"110085" +"North" +"small" +"250.0" +"Wall Street" +"Unit Testing GeoLocation" +"2004-02-19" +"+5:30" +"http://xmpp.org" +"" +""; // @formatter:on Message messageWithGeoLocation = (Message) PacketParserUtils.parseStanza(geoLocationString); assertNotNull(messageWithGeoLocation); GeoLocation geoLocation = (GeoLocation) messageWithGeoLocation.getExtension(GeoLocation.ELEMENT, GeoLocation.NAMESPACE); assertNotNull(geoLocation); assertEquals((Double) 23d, geoLocation.getAccuracy()); assertEquals((Double) 1000d, geoLocation.getAlt()); assertEquals("Delhi", geoLocation.getArea()); assertEquals((Double) 10d, geoLocation.getBearing()); assertEquals("Small Building", geoLocation.getBuilding()); assertEquals("India", geoLocation.getCountry()); assertEquals("IN", geoLocation.getCountryCode()); assertEquals("WGS84", geoLocation.getDatum()); assertEquals("My Description", geoLocation.getDescription()); assertNull(geoLocation.getError()); assertEquals("top", geoLocation.getFloor()); assertEquals((Double) 25.098345d, geoLocation.getLat()); assertEquals("awesome", geoLocation.getLocality()); assertEquals((Double) 77.992034d, geoLocation.getLon()); assertEquals("110085", geoLocation.getPostalcode()); assertEquals("North", geoLocation.getRegion()); assertEquals("small", geoLocation.getRoom()); assertEquals((Double) 250d, geoLocation.getSpeed()); assertEquals("Wall Street", geoLocation.getStreet()); assertEquals("Unit Testing GeoLocation", geoLocation.getText()); assertEquals(XmppDateTime.parseDate("2004-02-19"), geoLocation.getTimestamp()); assertEquals("+5:30", geoLocation.getTzo()); assertEquals(new URI("http://xmpp.org"), geoLocation.getUri()); } @Test public void testGeoLocationWithDatumSet() throws Exception { // @formatter:off final String geoLocationString = "" +"" +"23" +"1000" +"Delhi" +"10" +"Small Building" +"India" +"IN" +"Test Datum" +"My Description" +"90" +"top" +"25.098345" +"awesome" +"77.992034" +"110085" +"North" +"small" +"250.0" +"Wall Street" +"Unit Testing GeoLocation" +"2004-02-19" +"+5:30" +"http://xmpp.org" +"" +""; // @formatter:on Message messageWithGeoLocation = (Message) PacketParserUtils.parseStanza(geoLocationString); assertNotNull(messageWithGeoLocation); GeoLocation geoLocation = (GeoLocation) messageWithGeoLocation.getExtension(GeoLocation.ELEMENT, GeoLocation.NAMESPACE); assertNotNull(geoLocation); assertEquals((Double) 23d, geoLocation.getAccuracy()); assertEquals((Double) 1000d, geoLocation.getAlt()); assertEquals("Delhi", geoLocation.getArea()); assertEquals((Double) 10d, geoLocation.getBearing()); assertEquals("Small Building", geoLocation.getBuilding()); assertEquals("India", geoLocation.getCountry()); assertEquals("IN", geoLocation.getCountryCode()); assertEquals("Test Datum", geoLocation.getDatum()); assertEquals("My Description", geoLocation.getDescription()); assertNull(geoLocation.getError()); assertEquals("top", geoLocation.getFloor()); assertEquals((Double) 25.098345d, geoLocation.getLat()); assertEquals("awesome", geoLocation.getLocality()); assertEquals((Double) 77.992034d, geoLocation.getLon()); assertEquals("110085", geoLocation.getPostalcode()); assertEquals("North", geoLocation.getRegion()); assertEquals("small", geoLocation.getRoom()); assertEquals((Double) 250d, geoLocation.getSpeed()); assertEquals("Wall Street", geoLocation.getStreet()); assertEquals("Unit Testing GeoLocation", geoLocation.getText()); assertEquals(XmppDateTime.parseDate("2004-02-19"), geoLocation.getTimestamp()); assertEquals("+5:30", geoLocation.getTzo()); assertEquals(new URI("http://xmpp.org"), geoLocation.getUri()); } @Test public void testGeoLocationWithoutAccuracySetAndWithErrorSet() throws Exception { // @formatter:off final String geoLocationString = "" +"" +"90" +"" +""; // @formatter:on Message messageWithGeoLocation = (Message) PacketParserUtils.parseStanza(geoLocationString); GeoLocation geoLocation = (GeoLocation) messageWithGeoLocation.getExtension(GeoLocation.ELEMENT, GeoLocation.NAMESPACE); assertEquals((Double) 90d, geoLocation.getError()); } @Test public void testGeoLocationWithAccuracySetAndWithoutErrorSet() throws Exception { // @formatter:off final String geoLocationString = "" +"" +"90" +"" +""; // @formatter:on Message messageWithGeoLocation = (Message) PacketParserUtils.parseStanza(geoLocationString); GeoLocation geoLocation = (GeoLocation) messageWithGeoLocation.getExtension(GeoLocation.ELEMENT, GeoLocation.NAMESPACE); assertEquals((Double) 90d, geoLocation.getAccuracy()); } @Test public void testGeoLocationWithAccuracySetAndErrorSet() throws Exception { // @formatter:off final String geoLocationString = "" +"" +"90" +"100" +"" +""; // @formatter:on Message messageWithGeoLocation = (Message) PacketParserUtils.parseStanza(geoLocationString); GeoLocation geoLocation = (GeoLocation) messageWithGeoLocation.getExtension(GeoLocation.ELEMENT, GeoLocation.NAMESPACE); assertEquals((Double) 90d, geoLocation.getAccuracy()); assertNull(geoLocation.getError()); } }