diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2015-10-29 10:32:01 +0100 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2015-10-29 10:32:01 +0100 |
commit | 8e574760a76596541103343184df1ed82c60cda5 (patch) | |
tree | 496210db9f7c6ffea3e894a604f324c3764f18e8 /core/test/ch/asynk/rustanddust/LineOfSightTest.java | |
parent | d5fc1cb7f0b86835e0ca7500725bcef5ab0790d4 (diff) | |
download | RustAndDust-8e574760a76596541103343184df1ed82c60cda5.zip RustAndDust-8e574760a76596541103343184df1ed82c60cda5.tar.gz |
tests : check lineOfSight blocking
Diffstat (limited to 'core/test/ch/asynk/rustanddust/LineOfSightTest.java')
-rw-r--r-- | core/test/ch/asynk/rustanddust/LineOfSightTest.java | 106 |
1 files changed, 102 insertions, 4 deletions
diff --git a/core/test/ch/asynk/rustanddust/LineOfSightTest.java b/core/test/ch/asynk/rustanddust/LineOfSightTest.java index 60b95ab..45363ae 100644 --- a/core/test/ch/asynk/rustanddust/LineOfSightTest.java +++ b/core/test/ch/asynk/rustanddust/LineOfSightTest.java @@ -5,22 +5,27 @@ import java.util.List; import org.junit.Test; import org.junit.Before; -import ch.asynk.rustanddust.engine.SearchBoard; import ch.asynk.rustanddust.engine.SearchBoard.Node; import static org.junit.Assert.assertTrue; public class LineOfSightTest { - private SearchBoard sb; + private Helpers.FakeBoard fakeBoard; + private Helpers.FakeSearchBoard sb; @Before public void initialize() { int cols = 10; int rows = 9; - Helpers.FakeBoard fakeBoard = new Helpers.FakeBoard(cols, rows, 0); - sb = new SearchBoard(fakeBoard, cols, rows); + fakeBoard = new Helpers.FakeBoard(cols, rows, 0); + sb = new Helpers.FakeSearchBoard(fakeBoard, cols, rows); + } + + private void block(int i, int j, boolean block) + { + ((Helpers.FakeTile) fakeBoard.getTile(i, j)).setBlockLineOfSight(block); } private void checkNode(List<Node> l, int i, int col, int row) @@ -1418,4 +1423,97 @@ public class LineOfSightTest checkNode(s, 12, 4, 7); checkNode(s, 13, 4, 8); } + + private void testBlocking(Node from, Node to, Node blockA, Node blockB) + { + List<Node> s = null; + + // clear + s = lineOfSight(from.col, from.row, to.col, to.row); + assertTrue(s.size() == 4); + checkNode(s, 0, from.col, from.row); + checkNode(s, 3, to.col, to.row); + + // block A + block(blockA.col, blockA.row, true); + s = lineOfSight(from.col, from.row, to.col, to.row); + assertTrue(s.size() == 4); + checkNode(s, 0, from.col, from.row); + checkNode(s, 3, to.col, to.row); + block(blockA.col, blockA.row, false); + + // block B + block(blockB.col, blockB.row, true); + s = lineOfSight(from.col, from.row, to.col, to.row); + assertTrue(s.size() == 4); + checkNode(s, 0, from.col, from.row); + checkNode(s, 3, to.col, to.row); + block(blockB.col, blockB.row, false); + + // block A and B + block(blockA.col, blockA.row, true); + block(blockB.col, blockB.row, true); + s = lineOfSight(from.col, from.row, to.col, to.row); + assertTrue(s.size() == 3); + checkNode(s, 0, from.col, from.row); + block(blockA.col, blockA.row, false); + block(blockB.col, blockB.row, false); + + // reverse + // clear + s = lineOfSight(to.col, to.row, from.col, from.row); + assertTrue(s.size() == 4); + checkNode(s, 0, to.col, to.row); + checkNode(s, 3, from.col, from.row); + + // block A + block(blockA.col, blockA.row, true); + s = lineOfSight(to.col, to.row, from.col, from.row); + assertTrue(s.size() == 4); + checkNode(s, 0, to.col, to.row); + checkNode(s, 3, from.col, from.row); + block(blockA.col, blockA.row, false); + + // block B + block(blockB.col, blockB.row, true); + s = lineOfSight(to.col, to.row, from.col, from.row); + assertTrue(s.size() == 4); + checkNode(s, 0, to.col, to.row); + checkNode(s, 3, from.col, from.row); + block(blockB.col, blockB.row, false); + + // block A and B + block(blockA.col, blockA.row, true); + block(blockB.col, blockB.row, true); + s = lineOfSight(to.col, to.row, from.col, from.row); + assertTrue(s.size() == 3); + checkNode(s, 0, to.col, to.row); + block(blockA.col, blockA.row, false); + block(blockB.col, blockB.row, false); + + } + + @Test public void test_97() { + testBlocking(sb.get(6, 4), sb.get(7, 6), sb.get(6, 5), sb.get(7, 5)); + } + + @Test public void test_98() { + testBlocking(sb.get(6, 4), sb.get(8, 5), sb.get(7, 5), sb.get(7, 4)); + } + + @Test public void test_99() { + testBlocking(sb.get(6, 4), sb.get(7, 3), sb.get(7, 4), sb.get(6, 3)); + } + + @Test public void test_100() { + testBlocking(sb.get(6, 4), sb.get(5, 2), sb.get(5, 3), sb.get(6, 3)); + } + + @Test public void test_101() { + testBlocking(sb.get(6, 4), sb.get(4, 3), sb.get(5, 4), sb.get(5, 3)); + } + + @Test public void test_102() { + testBlocking(sb.get(6, 4), sb.get(5, 5), sb.get(5, 4), sb.get(6, 5)); + } } |