package org.openstreetmap.josm.plugins.graphview.util; import static org.junit.Assert.*; import static org.openstreetmap.josm.plugins.graphview.core.util.ValueStringParser.*; import java.awt.Color; import org.junit.Test; public class ValueStringParserTest { /* speed */ @Test public void testParseSpeedDefault() { assertClose(50, parseSpeed("50")); } @Test public void testParseSpeedKmh() { assertClose(30, parseSpeed("30 km/h")); assertClose(100, parseSpeed("100km/h")); } @Test public void testParseSpeedMph() { assertClose(40.234f, parseSpeed("25mph")); assertClose(40.234f, parseSpeed("25 mph")); } @Test public void testParseSpeedInvalid() { assertNull(parseSpeed("lightspeed")); } /* measure */ @Test public void testParseMeasureDefault() { assertClose(3.5f, parseMeasure("3.5")); } @Test public void testParseMeasureM() { assertClose(2, parseMeasure("2m")); assertClose(5.5f, parseMeasure("5.5 m")); } @Test public void testParseMeasureKm() { assertClose(1000, parseMeasure("1 km")); assertClose(7200, parseMeasure("7.2km")); } @Test public void testParseMeasureMi() { assertClose(1609.344f, parseMeasure("1 mi")); } @Test public void testParseMeasureFeetInches() { assertClose(3.6576f, parseMeasure("12'0\"")); assertClose(1.9812f, parseMeasure("6' 6\"")); } @Test public void testParseMeasureInvalid() { assertNull(parseMeasure("very long")); assertNull(parseMeasure("6' 16\"")); } /* weight */ @Test public void testParseWeightDefault() { assertClose(3.6f, parseWeight("3.6")); } @Test public void testParseWeightT() { assertClose(30, parseWeight("30t")); assertClose(3.5f, parseWeight("3.5 t")); } @Test public void testParseWeightInvalid() { assertNull(parseWeight("heavy")); } /* angle */ @Test public void testParseAngleDefault() { assertClose( 47, parseAngle("47")); assertClose( 0, parseAngle("360")); } @Test public void testParseAngleLetters() { assertClose( 0.0f, parseAngle("N")); assertClose(225.0f, parseAngle("SW")); assertClose(112.5f, parseAngle("ESE")); } @Test public void testParseAngleInvalid() { assertNull(parseAngle("forward")); assertNull(parseAngle("-90")); } @Test public void testParseColorDefault() { assertEquals(new Color(255, 0, 0), parseColor("#ff0000")); assertEquals(new Color(1, 2, 3), parseColor("#010203")); } @Test public void testParseColorInvalid() { assertNull(parseColor("ff0000")); assertNull(parseColor("#")); } /* utility methods for testing */ private static final void assertClose(float expected, float actual) { if (Math.abs(expected - actual) > 0.001) { throw new AssertionError("expected " + expected + ", was " + actual); } } }