Subversion Repositories mkgmap

Rev

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

/*
 * Copyright (C) 2015.
 *
 * 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.imgfmt.app.net;

import org.junit.Test;

import static org.junit.Assert.*;

/**
 * Tests  to verify that the plausibility checks are working
 */

public class NumbersTest {

        @Test
        public void testOKOddEvenOverlap() {
                String spec = "0,O,1,7,E,2,12";
                Numbers numbers = new Numbers(spec);
                assertTrue(numbers.isPlausible());
        }
        @Test
        public void testBothBothNoOverlap() {
                String spec = "0,B,1,7,B,8,15";
                Numbers numbers = new Numbers(spec);
                assertTrue(numbers.isPlausible());
        }
        @Test
        public void testBothEvenNoOverlap() {
                String spec = "0,B,1,7,E,8,16";
                Numbers numbers = new Numbers(spec);
                assertTrue(numbers.isPlausible());
        }
        @Test
        public void testBothEvenNoOverlapNotEven() {
                String spec = "0,B,1,7,E,8,15";
                Numbers numbers = new Numbers(spec);
                assertFalse(numbers.isPlausible());
        }
        @Test
        public void testOverlapAtStartEnd() {
                String spec = "0,B,1,7,B,7,16";
                Numbers numbers = new Numbers(spec);
                assertFalse(numbers.isPlausible());
        }
        @Test
        public void testBothEvenOverlap() {
                String spec = "0,B,1,7,E,6,16";
                Numbers numbers = new Numbers(spec);
                assertFalse(numbers.isPlausible());
        }
        @Test
        public void testRangeLargeNumbersOK() {
                String spec = "0,B,10012,10024,N,0,0";
                Numbers numbers = new Numbers(spec);
                assertTrue(numbers.isPlausible());
        }
        @Test
        public void testRangeLargeNumbersNotOK() {
                String spec = "0,B,10012,1000240,N,0,0";
                Numbers numbers = new Numbers(spec);
                assertFalse(numbers.isPlausible());
        }
        @Test
        public void testNotOK1() {
                String spec = "0,B,10,23,O,15,15";
                Numbers numbers = new Numbers(spec);
                assertFalse(numbers.isPlausible());
        }
        @Test
        public void testNotOK2() {
                String spec = "0,O,15,15,B,10,23";
                Numbers numbers = new Numbers(spec);
                assertFalse(numbers.isPlausible());
        }
        @Test
        public void testSingleNumBothSides() {
                String spec = "0,O,15,15,O,15,15";
                Numbers numbers = new Numbers(spec);
                assertTrue(numbers.isPlausible());
        }
        @Test
        public void testSingleNumOneSideEqualStartOrEndOtherSide1() {
                String spec = "0,O,13,15,O,15,15";
                Numbers numbers = new Numbers(spec);
                assertFalse(numbers.isPlausible());
        }
        @Test
        public void testSingleNumOneSideEqualStartOrEndOtherSide2() {
                String spec = "0,O,15,15,O,13,15";
                Numbers numbers = new Numbers(spec);
                assertFalse(numbers.isPlausible());
        }
        @Test
        public void testSingleNumOneSideEqualStartOrEndOtherSide3() {
                String spec = "0,O,15,13,O,15,15";
                Numbers numbers = new Numbers(spec);
                assertFalse(numbers.isPlausible());
        }
        @Test
        public void testSingleNumOneSideEqualStartOrEndOtherSide4() {
                String spec = "0,O,15,15,O,15,13";
                Numbers numbers = new Numbers(spec);
                assertFalse(numbers.isPlausible());
        }
        @Test
        public void testSingleDifferentNumEachSide() {
                String spec = "0,O,15,15,O,13,13";
                Numbers numbers = new Numbers(spec);
                assertTrue(numbers.isPlausible());
        }
       
        @Test
        public void testCountMatchesValid() {
                String spec = "0,O,1,7,E,2,12";
                Numbers numbers = new Numbers(spec);
                assertEquals(1,numbers.countMatches(1));
                assertEquals(0,numbers.countMatches(13));
        }
        @Test
        public void testCountMatchesGap() {
                String spec = "0,B,1,7,B,9,12";
                Numbers numbers = new Numbers(spec);
                assertEquals(1,numbers.countMatches(1));
                assertEquals(1,numbers.countMatches(7));
                assertEquals(0,numbers.countMatches(8));
                assertEquals(0,numbers.countMatches(13));
        }
       
}