diff options
Diffstat (limited to 'core/test/ch/asynk')
-rw-r--r-- | core/test/ch/asynk/tankontank/BoardUtils.java | 77 |
1 files changed, 76 insertions, 1 deletions
diff --git a/core/test/ch/asynk/tankontank/BoardUtils.java b/core/test/ch/asynk/tankontank/BoardUtils.java index e944693..632d7a4 100644 --- a/core/test/ch/asynk/tankontank/BoardUtils.java +++ b/core/test/ch/asynk/tankontank/BoardUtils.java @@ -1,6 +1,7 @@ package ch.asynk.tankontank; import java.util.List; +import java.util.ArrayDeque; import org.junit.Test; import org.junit.Before; @@ -16,7 +17,81 @@ public class BoardUtils @Before public void initialize() { - sb = new SearchBoard(null, 10, 9); + int cols = 10; + int rows = 9; + Helpers.FakeBoard fakeBoard = new Helpers.FakeBoard(cols, rows); + sb = new SearchBoard(fakeBoard, cols, rows); + } + + @Test + public void testPaths() + { + Helpers.FakePawn p = new Helpers.FakePawn(3); + List<ArrayDeque<SearchBoard.Node>> paths = sb.possiblePaths(p, 2, 2, 4, 3); + + assertTrue(paths.size() == 8); + + for(ArrayDeque<SearchBoard.Node> path : paths) { + + assertTrue((path.size() == 3) || (path.size() == 4)); + SearchBoard.Node n = path.removeFirst(); + assertTrue(n.col == 4); + assertTrue(n.row == 3); + n = path.removeLast(); + assertTrue(n.col == 2); + assertTrue(n.row == 2); + + if (path.size() == 1) { + n = path.pop(); + assertTrue(n.col == 3); + assertTrue((n.row == 3) || (n.row == 2)); + } else { + n = path.pop(); + if (n.col == 2) { + if (n.col == 1) { + n = path.pop(); + assert(n.col == 3); + assert(n.row == 2); + } else { + assert(n.col == 3); + n = path.pop(); + assert(n.col == 2); + assert(n.row == 3); + } + } else if (n.col == 3) { + if (n.row == 2) { + n = path.pop(); + if (n.col == 2) + assert(n.row == 1); + else { + assert(n.col == 3); + assert(n.row == 3); + } + } else { + assert(n.col == 3); + n = path.pop(); + if (n.col == 2) + assert(n.row == 3); + else { + assert(n.col == 3); + assert(n.row == 2); + } + } + } else { + assertTrue(n.col == 4); + if (n.row == 4) { + n = path.pop(); + assert(n.col == 3); + assert(n.row == 3); + } else { + assert(n.row == 2); + n = path.pop(); + assert(n.col == 3); + assert(n.row == 2); + } + } + } + } } @Test |