/** * * Copyright 2015-2017 Ishan Khanna, Fernando Ramirez * * 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" + "10" + "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 = PacketParserUtils.parseStanza(geoLocationString); assertNotNull(messageWithGeoLocation); GeoLocation geoLocation = messageWithGeoLocation.getExtension(GeoLocation.class); assertNotNull(geoLocation); assertEquals((Double) 23d, geoLocation.getAccuracy()); assertEquals((Double) 1000d, geoLocation.getAlt()); assertEquals((Double) 10d, geoLocation.getAltAccuracy()); 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" + "10" + "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 = PacketParserUtils.parseStanza(geoLocationString); assertNotNull(messageWithGeoLocation); GeoLocation geoLocation = messageWithGeoLocation.getExtension(GeoLocation.class); assertNotNull(geoLocation); assertEquals((Double) 23d, geoLocation.getAccuracy()); assertEquals((Double) 1000d, geoLocation.getAlt()); assertEquals((Double) 10d, geoLocation.getAltAccuracy()); 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 = PacketParserUtils.parseStanza(geoLocationString); GeoLocation geoLocation = messageWithGeoLocation.getExtension(GeoLocation.class); assertEquals((Double) 90d, geoLocation.getError()); } @Test public void testGeoLocationWithAccuracySetAndWithoutErrorSet() throws Exception { // @formatter:off final String geoLocationString = "" + "" + "90" + "" + ""; // @formatter:on Message messageWithGeoLocation = PacketParserUtils.parseStanza(geoLocationString); GeoLocation geoLocation = messageWithGeoLocation.getExtension(GeoLocation.class); assertEquals((Double) 90d, geoLocation.getAccuracy()); } @Test public void testGeoLocationWithAccuracySetAndErrorSet() throws Exception { // @formatter:off final String geoLocationString = "" + "" + "90" + "100" + "" + ""; // @formatter:on Message messageWithGeoLocation = PacketParserUtils.parseStanza(geoLocationString); GeoLocation geoLocation = messageWithGeoLocation.getExtension(GeoLocation.class); assertEquals((Double) 90d, geoLocation.getAccuracy()); assertNull(geoLocation.getError()); } }