/* 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.gopal; import org.junit.Test; import slash.common.type.CompactCalendar; import slash.navigation.base.ParserContextImpl; import slash.navigation.base.Wgs84Position; import java.text.DateFormat; import java.util.Calendar; import static java.util.Calendar.*; import static org.junit.Assert.*; import static slash.common.TestCase.assertDoubleEquals; import static slash.common.TestCase.calendar; import static slash.common.type.CompactCalendar.UTC; public class GoPalTrackFormatTest { GoPalTrackFormat format = new GoPalTrackFormat(); @Test public void testIsValidLine() { assertTrue(format.isValidLine("6664226, 180820, 8.016903, 52.345550, 12.95, 30.0394, 2, 3.000000, 3")); assertTrue(format.isValidLine("6664226, 180820, 8.016903, 52.345550, 12.95, 30.0394, 2, 3.000000, 3 ")); assertTrue(format.isValidLine("6664226,180820,8.016903,52.345550,12.95,30.0394,2,3.000000,3")); assertTrue(format.isValidLine("6651145, 180807, 0.000000, 0.000000, 0, 0, 0, 0.000000, 0")); assertTrue(format.isValidLine("6122534, 160149, 0.000000, 0.000000, 0, 0, 0, 0.000000, 0")); assertTrue(format.isValidLine("54850635, 184229, 0.000000, 0.000000, 0, 0, 0, 0.000000, 0")); assertTrue(format.isValidLine("31653, 092258, -22.760357, 65.125717, 334.4, 20.7424, 2, 1.000000, 8, 20100719, 0, 14")); } @Test public void testIsPosition() { assertTrue(format.isPosition("6664226, 180820, 8.016903, 52.345550, 12.95, 30.0394, 2, 3.000000, 3")); assertTrue(format.isPosition("6664226, 180820, 8.016903, 52.345550, 12.95, 30.0394, 2, 3.000000, 3 ")); assertTrue(format.isPosition("6664226,180820,8.016903,52.345550,12.95,30.0394,2,3.000000,3")); assertTrue(format.isPosition("31653, 092258, -22.760357, 65.125717, 334.4, 20.7424, 2, 1.000000, 8, 20100719, 0, 14")); assertTrue(format.isPosition("31653, 092258, -22.760357, 65.125717, 334.4, 20.7424, 2, 1.000000, 8, 20100719, 0, -14")); assertFalse(format.isPosition("6651145, 180807, 0.000000, 0.000000, 0, 0, 0, 0.000000, 0")); assertFalse(format.isPosition("6122534, 160149, 0.000000, 0.000000, 0, 0, 0, 0.000000, 0")); } @Test public void testParsePosition() { Wgs84Position position = format.parsePosition("6664226, 180820, 8.016903, 52.345550, 12.95, 30.0394, 2, 3.000001, 4", new ParserContextImpl()); assertDoubleEquals(8.016903, position.getLongitude()); assertDoubleEquals(52.34555, position.getLatitude()); assertNull(position.getElevation()); assertDoubleEquals(12.95, position.getHeading()); assertDoubleEquals(30.0394, position.getSpeed()); assertDoubleEquals(3.000001, position.getHdop()); assertEquals(new Integer(4), position.getSatellites()); DateFormat format = DateFormat.getDateTimeInstance(); format.setTimeZone(UTC); String actual = format.format(position.getTime().getTime()); Calendar expectedCal = Calendar.getInstance(UTC); expectedCal.setTimeInMillis(position.getTime().getTimeInMillis()); expectedCal.set(HOUR_OF_DAY, 18); expectedCal.set(MINUTE, 8); expectedCal.set(SECOND, 20); String expected = format.format(expectedCal.getTime()); assertEquals(expected, actual); assertEquals(expectedCal, position.getTime().getCalendar()); assertNull(position.getDescription()); } @Test public void testParseNegativePosition() { Wgs84Position position = format.parsePosition("6664226, 180820, -8.016903, -52.345550, 12.95, 30.0394, 2, 3.000000, 3", new ParserContextImpl()); assertDoubleEquals(-8.016903, position.getLongitude()); assertDoubleEquals(-52.34555, position.getLatitude()); assertNull(position.getElevation()); DateFormat format = DateFormat.getDateTimeInstance(); format.setTimeZone(UTC); String actual = format.format(position.getTime().getTime()); Calendar expectedCal = Calendar.getInstance(UTC); expectedCal.setTimeInMillis(position.getTime().getTimeInMillis()); expectedCal.set(HOUR_OF_DAY, 18); expectedCal.set(MINUTE, 8); expectedCal.set(SECOND, 20); String expected = format.format(expectedCal.getTime()); assertEquals(expected, actual); assertEquals(expectedCal, position.getTime().getCalendar()); assertNull(position.getDescription()); } @Test public void testParsePositionWithDate() { Wgs84Position position = format.parsePosition("31653, 092258, -22.760357, 65.125717, 334.4, 20.7424, 2, 1.000000, 8, 20100719, 0, 14", new ParserContextImpl()); assertDoubleEquals(-22.760357, position.getLongitude()); assertDoubleEquals(65.125717, position.getLatitude()); assertNull(position.getElevation()); assertDoubleEquals(334.4, position.getHeading()); assertDoubleEquals(20.7424, position.getSpeed()); assertDoubleEquals(1.000000, position.getHdop()); assertEquals(new Integer(8), position.getSatellites()); String actual = DateFormat.getDateTimeInstance().format(position.getTime().getTime()); CompactCalendar expectedCal = calendar(2010, 7, 19, 9, 22, 58); String expected = DateFormat.getDateTimeInstance().format(expectedCal.getTime()); assertEquals(expected, actual); assertNull(position.getDescription()); } }