import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import java.util.List; public class SimpleTest { private static Robot robot; @BeforeClass public static void init() { robot = new DynamicRobot(); } @Test public void test1() { boolean[][] grid = { {true, false, false, false, false, true, false, false, false}, {false, true, false, true, false, false, false, false, false}, {false, false, false, false, false, false, true, false, false}, {false, true, false, false, false, true, false, false, true}, {false, false, true, false, false, false, true, false, false}, {false, true, false, false, true, false, false, false, false} }; check(grid, robot.collectCoins(grid), 5); } @Test public void test2() { boolean[][] grid = { {false, false, true, false, false, false}, {false, false, true, false, true, false}, {false, false, false, true, false, true}, {true, true, false, false, false, true}, {false, true, false, false, true, false}, {false, false, false, true, true, false} }; check(grid, robot.collectCoins(grid), 5); } @Test public void test3() { boolean[][] grid = { {true, false, true, false, false}, {false, false, false, false, false}, {false, false, true, false, true}, {true, false, false, false, false}, {false, true, false, false, true} }; check(grid, robot.collectCoins(grid), 5); } static void check(boolean[][] grid, List coins, int maximum) { int prevx = -1, prevy = -1; for (int i = 0; i < coins.size(); i++) { Cell coin = coins.get(i); int x = coin.getX(), y = coin.getY(); Assert.assertFalse(String.format("Cell (%d, %d) is repeated.", x, y), x == prevx && y == prevy); Assert.assertTrue("Given path is impossible.", x >= prevx && y >= prevy); Assert.assertTrue(String.format("Cell (%d, %d) does not contain a coin.", x, y), grid[x][y]); prevx = x; prevy = y; } Assert.assertEquals("Number of coins is not maximal.", maximum, coins.size()); } }