package no.priv.garshol.duke.comparators; import no.priv.garshol.duke.DukeException; import org.junit.Before; import org.junit.Test; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.fail; public class GeopositionComparatorTest { private GeopositionComparator comp; @Before public void setup() { comp = new GeopositionComparator(); } @Test public void testEmpty() { assertEquals(0.5, comp.compare("", "")); } @Test public void testMalformed() { assertEquals(0.5, comp.compare("41.5,27.2", "41.5127.21")); } @Test public void testMalformed2() { assertEquals(0.5, comp.compare("41.5,27.2", "1231,123123")); } @Test public void testMalformedStrict() { comp.setStrict(true); try { assertEquals(0.5, comp.compare("41.5,27.2", "41.5127.21")); fail("Didn't catch bad value"); } catch (DukeException e) { // success } } @Test public void testMalformed2Strict() { comp.setStrict(true); try { assertEquals(0.5, comp.compare("41.5,27.2", "1231,123123")); fail("Didn't catch bad value"); } catch (DukeException e) { // success } } @Test public void testOsloKiev() { assertEquals(0.0, comp.compare("59.913869,10.752245", "50.45,30.5234")); } @Test public void testOsloKiev2() { String oslo = "59.913869,10.752245"; String kiev = "50.45,30.5234"; comp.setMaxDistance(2000 * 1000); // WolframAlpha gives distance as 1632km assertTrue(ratio(1550.0, 2000.0) > comp.compare(oslo, kiev)); assertTrue(ratio(1700.0, 2000.0) < comp.compare(oslo, kiev)); } private double ratio(double dist, double maxdist) { return ((1.0 - (dist / maxdist)) * 0.5 ) + 0.5; } @Test public void testOsloKiev3() { String oslo = "59.913869,10.752245"; String kiev = "50.45,30.5234"; comp.setMaxDistance(2000 * 1000); // WolframAlpha gives distance as 1632km assertEquals(comp.compare(oslo, kiev), comp.compare(kiev, oslo)); } }