Subversion Repositories mkgmap

Rev

Rev 2047 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
 * Copyright (C) 2011.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 3 or
 * version 2 as published by the Free Software Foundation.
 *
 * This program 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.
 */

package uk.me.parabola.mkgmap.osmstyle.eval;

import org.junit.Test;

import static org.junit.Assert.*;

/**
 * Tests for values that may or may not have an associated unit (eg 70mph).
 */

public class ValueWithUnitTest {

        @Test
        public void testBareInteger() {
                ValueWithUnit val = new ValueWithUnit("23");
                assertTrue("valid value", val.isValid());
        }

        @Test
        public void testInvalidNumber() {
                ValueWithUnit val = new ValueWithUnit("abc");
                assertFalse("invalid value", val.isValid());
        }

        @Test
        public void testIntegerCompare() {
                ValueWithUnit val1 = new ValueWithUnit("23");
                ValueWithUnit val2 = new ValueWithUnit("24");

                assertEquals(-1, val1.compareTo(val2));
                assertEquals(1, val2.compareTo(val1));
        }

        @Test
        public void testDecimalNumber() {
                ValueWithUnit val = new ValueWithUnit("23.3");
                assertTrue("valid value", val.isValid());
        }

        /**
         * Test that 23.5 is not the same as 23 alone. (Checks that the decimal part
         * is not being stripped off as the unit.)
         */

        @Test
        public void testDecimalNotEqualToInteger() {
                ValueWithUnit val1 = new ValueWithUnit("23.5");
                ValueWithUnit val2 = new ValueWithUnit("23");

                assertEquals(1, val1.compareTo(val2));
        }

        @Test
        public void testDecimalCompare() {
                ValueWithUnit val1 = new ValueWithUnit("23.45");
                ValueWithUnit val2 = new ValueWithUnit("23.46");

                assertEquals(-1, val1.compareTo(val2));
                assertEquals(1, val2.compareTo(val1));
        }

        /**
         * Make sure that 2.0 is equal to 2 at this level.
         */

        @Test
        public void testCompareWithDifferentScales() {
                ValueWithUnit val1 = new ValueWithUnit("23");
                ValueWithUnit val2 = new ValueWithUnit("23.0");

                assertEquals(0, val1.compareTo(val2));
                assertEquals(0, val2.compareTo(val1));
        }

        /**
         * Test something that looks like a number but has two decimal points.
         * Used to cause an exception.
         */

        @Test
        public void testTwoDPs() {
                ValueWithUnit val = new ValueWithUnit("de.08315102.reistenhofweg");
                ValueWithUnit zero = new ValueWithUnit("0");
                assertEquals(0, val.compareTo(zero));
                assertFalse(val.isValid());
        }
}