/*
This file is part of RouteConverter.
RouteConverter is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
RouteConverter 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 RouteConverter; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Copyright (C) 2007 Christian Pesch. All Rights Reserved.
*/
package slash.navigation.common;
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import static java.util.Arrays.asList;
import static org.junit.Assert.*;
import static slash.common.TestCase.assertDoubleEquals;
import static slash.navigation.common.PositionParser.*;
public class PositionParserTest {
@Test
public void testIsPosition() {
assertTrue(isPosition("5.783245,50.28655,512"));
assertTrue(isPosition("-0.203733,51.47185,512"));
assertTrue(isPosition("151.777,-32.88815,512"));
assertTrue(isPosition("-0.203733,-32.88815,512"));
assertTrue(isPosition("-0.203733,-32.88815,-0.1"));
assertTrue(isPosition("+0.203733,+32.88815,+0.1"));
assertTrue(isPosition("10.032004,53.569488,64296162722.124001"));
assertTrue(isPosition("10.244109,53.571977,0.000000"));
assertTrue(isPosition(" 10.244109,53.571977,0.000000"));
assertTrue(isPosition("10.244109,53.571977,0.000000 "));
assertTrue(isPosition("10.244109, 53.571977, 0.000000"));
assertTrue(isPosition(" 10.244109 , 53.571977 , 0.000000 "));
assertTrue(isPosition("\n132.927856\n,\n34.44434\n,\n332.75\n"));
assertTrue(isPosition("\t\t\t\t8.33687,46.90742,1436"));
assertTrue(isPosition(",,0"));
assertTrue(isPosition("11.5709833333333,49.9467027777778"));
assertTrue(isPosition("0.2E-4,-0.2E-5,0.3E-6"));
}
@Test
public void testParseNullPosition() {
NavigationPosition position = parsePosition(",,0", null);
assertNull(position.getLongitude());
assertNull(position.getLatitude());
assertNull(position.getDescription());
assertDoubleEquals(0.0, position.getElevation());
}
@Test
public void testParseNoElevationPosition() {
NavigationPosition position = parsePosition("11.5709833333333,49.9467027777778", null);
assertDoubleEquals(11.5709833333333, position.getLongitude());
assertDoubleEquals(49.9467027777778, position.getLatitude());
assertNull(position.getElevation());
assertNull(position.getDescription());
}
@Test
public void testParseFloatElevationPosition() {
NavigationPosition position = parsePosition("13.383570,54.096930,0.000000", "description");
assertDoubleEquals(13.383570, position.getLongitude());
assertDoubleEquals(54.096930, position.getLatitude());
assertDoubleEquals(0.0, position.getElevation());
Assert.assertEquals("description", position.getDescription());
}
@Test
public void testParseScientificNumberPosition() {
NavigationPosition position = parsePosition("0.1E-4,-0.2E-5,0.3E-6", null);
assertDoubleEquals(0.00001, position.getLongitude());
assertDoubleEquals(-0.000002, position.getLatitude());
assertDoubleEquals(0.0000003, position.getElevation());
assertNull(position.getDescription());
}
@Test
public void testParsePositions() {
List<NavigationPosition> expected = new ArrayList<NavigationPosition>(asList(new SimpleNavigationPosition(1.1, 2.0, 3.0, null), new SimpleNavigationPosition(4.0, 5.0, 6.6, null), new SimpleNavigationPosition(7.0, 8.8, 9.0, null)));
assertEquals(expected, parsePositions("1.1,2,3 4,5,6.6 7,8.8,9"));
assertEquals(expected, parsePositions("1.1,2,3\t4,5,6.6\t7,8.8,9"));
assertEquals(expected, parsePositions("1.1,2,3\n4,5,6.6\n7,8.8,9"));
}
@Test
public void testParseGoogleExtensionPositions() {
List<NavigationPosition> expected = new ArrayList<NavigationPosition>(asList(new SimpleNavigationPosition(1.1, 2.2, 3.3, null), new SimpleNavigationPosition(4.4, 5.5, 6.6, null), new SimpleNavigationPosition(7.7, 8.8, 9.9, null)));
assertEquals(expected, parseExtensionPositions("1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9"));
}
@Test
public void testParseGoogleExtensionPositionsWithColons() {
List<NavigationPosition> expected = new ArrayList<NavigationPosition>(asList(new SimpleNavigationPosition(1.1, 2.2, 3.3, null), new SimpleNavigationPosition(4.4, 5.5, 6.6, null), new SimpleNavigationPosition(7.7, 8.8, 9.9, null)));
assertEquals(expected, parseExtensionPositions("1.1,2.2,3.3 4.4,5.5,6.6,7.7 8.8,9.9"));
}
@Test
public void testParsePositionsWithoutElevation() {
List<NavigationPosition> expected = new ArrayList<NavigationPosition>(asList(new SimpleNavigationPosition(1.1, 2.0, null, null), new SimpleNavigationPosition(4.0, 5.0, null, null), new SimpleNavigationPosition(7.0, 8.8, null, null)));
assertEquals(expected, parsePositions("1.1,2 4,5 7,8.8"));
assertEquals(expected, parsePositions("1.1,2\t4,5\t7,8.8"));
assertEquals(expected, parsePositions("1.1,2\n4,5\n7,8.8"));
}
}