import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import java.util.Iterator; import java.util.List; public class SimpleTest { private static Manhattan manhattan; @BeforeAll public static void init() { manhattan = new DynamicManhattan(); } @Test public void test1() { Crossing[][] grid = new Crossing[][]{ {new Crossing(0,0),new Crossing(0,4)}, {new Crossing(5,0),new Crossing(8,6)} }; check(grid, manhattan.findRoute(grid), 12); } @Test public void test2() { Crossing[][] grid = new Crossing[][]{ {new Crossing(0,0),new Crossing(0,1),new Crossing(0,2)}, {new Crossing(2,0),new Crossing(9,4),new Crossing(5,3)} }; check(grid, manhattan.findRoute(grid), 13); } @Test public void test3() { Crossing[][] grid = new Crossing[][]{ {new Crossing(0,0),new Crossing(0,1),new Crossing(0,7)}, {new Crossing(22,0),new Crossing(20,20),new Crossing(50,1)}, {new Crossing(20,0),new Crossing(10,3),new Crossing(3,5)} }; check(grid, manhattan.findRoute(grid), 61); } static void check(Crossing[][] grid, List route, int optimaal){ int m = grid.length; int n = grid[0].length; Iterator iter = route.iterator(); Assertions.assertSame(grid[0][0], iter.next(), "Je route start op het verkeerde kruispunt."); int i = 0, j = 0, attractions = 0; while (iter.hasNext()) { Crossing kruispunt = iter.next(); if (i + 1 < m && kruispunt == grid[i + 1][j]) { i += 1; attractions += kruispunt.attractionsNorth(); } else if (j + 1 < n && kruispunt == grid[i][j + 1]) { j += 1; attractions += kruispunt.attractionsWest(); } else { Assertions.fail("Je route bestaat niet uit opeenvolgende kruispunten."); } } Assertions.assertTrue(i == m - 1 && j == n - 1, "Je route eindigt op het verkeerde kruispunt."); Assertions.assertEquals(optimaal, attractions, "Het aantal attracties op je route is niet optimaal."); } }