/*
*
* 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.Test;
import static slash.common.TestCase.assertDoubleEquals;
import static slash.common.TestCase.assertEquals;
import static slash.navigation.common.Orientation.*;
import static slash.navigation.common.UnitConversion.*;
public class UnitConversionTest {
@Test
public void testFeetToMeters() {
assertDoubleEquals(3.048, feetToMeters(10));
}
@Test
public void testMilesToKiloMeters() {
assertDoubleEquals(6.2137119223733395, kiloMeterToStatuteMiles(10));
}
@Test
public void testMetersPerSecondToKiloMetersPerHour() {
assertDoubleEquals(3.6, msToKmh(1.0));
assertDoubleEquals(20.0, kmhToMs(72.0));
}
@Test
public void testDegrees2Nmea() {
assertEquals(new ValueAndOrientation(4837.437396, North), latitude2nmea(48.6239566));
assertEquals(new ValueAndOrientation(903.403596, East), longitude2nmea(9.0567266));
assertEquals(new ValueAndOrientation(5047.5656, South), latitude2nmea(-50.79276));
assertEquals(new ValueAndOrientation(927.1962, West), longitude2nmea(-9.45327));
}
@Test
public void testNmea2Degrees() {
assertDoubleEquals(48.6239566667, nmea2degrees(new ValueAndOrientation(4837.4374, East)));
assertDoubleEquals(9.0567266667, nmea2degrees(new ValueAndOrientation(903.4036, North)));
assertDoubleEquals(-50.7927616667, nmea2degrees(new ValueAndOrientation(5047.5657, West)));
assertDoubleEquals(-9.45327, nmea2degrees(new ValueAndOrientation(927.1962, South)));
}
@Test
public void testDegrees2Ddmm() {
assertEquals("E 9\u00B0 3.343'", longitude2ddmm(9.0557233333));
assertEquals("N 48\u00B0 37.437'", latitude2ddmm(48.6239566667));
}
@Test
public void testDdmm2Longitude() {
assertEquals(0.0, ddmm2longitude(" E 0 \u00B0 0 ' "));
assertEquals(1.0, ddmm2longitude("E 1\u00B0 0'"));
assertEquals(-1.0, ddmm2longitude("W 1\u00B0 0'"));
assertEquals(9.0557233, ddmm2longitude("E 9\u00B0 3.3434'"));
}
@Test
public void testDdmm2Latitude() {
assertEquals(1.0, ddmm2latitude("N 1\u00B0 0'"));
assertEquals(-1.0, ddmm2latitude("S 1\u00B0 0'"));
assertEquals(48.6239566, ddmm2latitude("N 48\u00B0 37.437395'"));
}
@Test
public void testDegrees2Ddmmss() {
assertEquals("E 9\u00B0 3' 20.604\"", longitude2ddmmss(9.0557233333));
assertEquals("W 9\u00B0 3' 20.604\"", longitude2ddmmss(-9.0557233333));
assertEquals("N 48\u00B0 37' 26.244\"", latitude2ddmmss(48.6239566667));
assertEquals("N 0\u00B0 0' 0.000\"", latitude2ddmmss(0.0));
}
@Test
public void testDdmmss2Longitude() {
assertEquals(0.0, ddmmss2longitude(" E 0 \u00B0 0 ' 0\" "));
assertEquals(1.0, ddmmss2longitude("E 1\u00B0 0' 0\""));
assertEquals(-1.0, ddmmss2longitude("W 1\u00B0 0' 0\""));
assertEquals(9.0557233, ddmmss2longitude("E 9\u00B0 3' 20.604\""));
}
@Test
public void testDdmmss2Latitude() {
assertEquals(0.0, ddmmss2latitude(" E 0 \u00B0 0 ' 0\" "));
assertEquals(1.0, ddmmss2latitude("N 1\u00B0 0' 0\""));
assertEquals(-1.0, ddmmss2latitude("S 1\u00B0 0' 0\""));
assertEquals(48.6239566, ddmmss2latitude("N 48\u00B0 37' 26.2438\""));
}
}