/* This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.opentripplanner.common.model; import static org.junit.Assert.*; import org.junit.Test; import com.vividsolutions.jts.geom.Coordinate; public class GenericLocationTest { @Test public void testEmpty() { GenericLocation loc = new GenericLocation(); assertEquals("", loc.name); assertEquals("", loc.place); NamedPlace np = loc.getNamedPlace(); assertEquals("", np.name); assertEquals("", np.place); assertNull(loc.lat); assertNull(loc.lng); assertNull(loc.getCoordinate()); assertFalse(loc.hasName()); assertFalse(loc.hasPlace()); } @Test public void testFromNamePlace() { GenericLocation loc = new GenericLocation("name", "12345"); assertEquals("name", loc.name); assertEquals("12345", loc.place); NamedPlace np = loc.getNamedPlace(); assertEquals("name", np.name); assertEquals("12345", np.place); assertFalse(loc.hasCoordinate()); assertFalse(loc.hasHeading()); assertTrue(loc.hasName()); assertTrue(loc.hasPlace()); assertNull(loc.lat); assertNull(loc.lng); assertNull(loc.getCoordinate()); } @Test public void testFromNamePlaceWithCoord() { GenericLocation loc = new GenericLocation("name", "-1.0,2.5"); assertEquals("name", loc.name); assertEquals("-1.0,2.5", loc.place); NamedPlace np = loc.getNamedPlace(); assertEquals("name", np.name); assertEquals("-1.0,2.5", np.place); assertTrue(loc.hasName()); assertTrue(loc.hasPlace()); assertTrue(loc.hasCoordinate()); assertFalse(loc.hasHeading()); assertEquals(new Double(-1.0), loc.lat); assertEquals(new Double(2.5), loc.lng); assertEquals(new Coordinate(2.5, -1.0), loc.getCoordinate()); loc = new GenericLocation("name", "1.0,-2.5"); assertEquals(new Double(1.0), loc.lat); assertEquals(new Double(-2.5), loc.lng); assertEquals(new Coordinate(-2.5, 1.0), loc.getCoordinate()); } @Test public void testFromOldStyleString() { GenericLocation loc = GenericLocation.fromOldStyleString("name::12345"); assertEquals("name", loc.name); assertEquals("12345", loc.place); NamedPlace np = loc.getNamedPlace(); assertEquals("name", np.name); assertEquals("12345", np.place); assertTrue(loc.hasName()); assertTrue(loc.hasPlace()); assertFalse(loc.hasCoordinate()); assertFalse(loc.hasHeading()); assertNull(loc.lat); assertNull(loc.lng); assertNull(loc.getCoordinate()); } @Test public void testFromStringWithEdgeAndHeading() { String s = "40.75542978896869,-73.97618338000376 heading=29.028895183287617 edgeId=2767"; GenericLocation loc = GenericLocation.fromOldStyleString(s); assertEquals(29.028895183287617, loc.heading, 0.00001); assertEquals(2767, loc.edgeId.intValue()); assertEquals(40.75542978896869, loc.lat, 0.00001); assertEquals(-73.97618338000376, loc.lng, 0.00001); } @Test public void testFromOldStyleStringWithCoord() { GenericLocation loc = GenericLocation.fromOldStyleString("name::1.0,2.5"); assertEquals("name", loc.name); assertEquals("1.0,2.5", loc.place); NamedPlace np = loc.getNamedPlace(); assertEquals("name", np.name); assertEquals("1.0,2.5", np.place); assertTrue(loc.hasName()); assertTrue(loc.hasPlace()); assertTrue(loc.hasCoordinate()); assertFalse(loc.hasHeading()); assertEquals(new Double(1.0), loc.lat); assertEquals(new Double(2.5), loc.lng); assertEquals(new Coordinate(2.5, 1.0), loc.getCoordinate()); } @Test public void testToString() { String input = "name::1.0,2.5"; GenericLocation loc = GenericLocation.fromOldStyleString(input); assertEquals(input, loc.toString()); assertTrue(loc.hasCoordinate()); assertFalse(loc.hasHeading()); input = "name::12345"; loc = GenericLocation.fromOldStyleString(input); assertEquals(input, loc.toString()); assertFalse(loc.hasCoordinate()); assertFalse(loc.hasHeading()); input = "name"; loc = GenericLocation.fromOldStyleString(input); assertEquals(input, loc.toString()); assertFalse(loc.hasCoordinate()); assertFalse(loc.hasHeading()); } @Test public void testFromLatLng() { GenericLocation loc = new GenericLocation(1.0, 2.0); Coordinate expectedCoord = new Coordinate(2.0, 1.0); assertEquals(expectedCoord, loc.getCoordinate()); assertEquals("1.0,2.0", loc.toString()); assertTrue(loc.hasCoordinate()); assertFalse(loc.hasHeading()); assertFalse(loc.hasName()); assertFalse(loc.hasPlace()); } @Test public void testFromLatLngHeading() { GenericLocation loc = new GenericLocation(1.0, 2.0, 137.2); Coordinate expectedCoord = new Coordinate(2.0, 1.0); assertEquals(expectedCoord, loc.getCoordinate()); assertEquals(137.2, loc.heading.doubleValue(), 0.0); assertEquals("1.0,2.0", loc.toString()); assertTrue(loc.hasCoordinate()); assertTrue(loc.hasHeading()); assertFalse(loc.hasName()); assertFalse(loc.hasPlace()); } @Test public void testFromCoord() { Coordinate expectedCoord = new Coordinate(2.0, 1.0); GenericLocation loc = new GenericLocation(expectedCoord); assertEquals(expectedCoord, loc.getCoordinate()); assertEquals("1.0,2.0", loc.toString()); assertTrue(loc.hasCoordinate()); assertFalse(loc.hasHeading()); } @Test public void testClone() { Coordinate expectedCoord = new Coordinate(2.0, 1.0); GenericLocation loc = new GenericLocation(expectedCoord); loc.heading = 137.2; GenericLocation cloned = loc.clone(); assertEquals(expectedCoord, cloned.getCoordinate()); assertEquals(loc.heading, cloned.heading); assertEquals(loc.getNamedPlace().name, cloned.getNamedPlace().name); assertEquals(loc.getNamedPlace().place, cloned.getNamedPlace().place); } @Test public void testFromOldStyleStringIncomplete() { String input = "0::"; GenericLocation loc = GenericLocation.fromOldStyleString(input); assertEquals("0", loc.name); assertEquals("", loc.place); input = "::1"; loc = GenericLocation.fromOldStyleString(input); assertEquals("", loc.name); assertEquals("1", loc.place); input = "::"; loc = GenericLocation.fromOldStyleString(input); assertEquals("", loc.name); assertEquals("", loc.place); } }