diff options
Diffstat (limited to 'core/test/ch/asynk/rustanddust')
| -rw-r--r-- | core/test/ch/asynk/rustanddust/Helpers.java | 8 | ||||
| -rw-r--r-- | core/test/ch/asynk/rustanddust/LineOfSightTest.java | 106 | 
2 files changed, 109 insertions, 5 deletions
| diff --git a/core/test/ch/asynk/rustanddust/Helpers.java b/core/test/ch/asynk/rustanddust/Helpers.java index 673be1f..f75e75e 100644 --- a/core/test/ch/asynk/rustanddust/Helpers.java +++ b/core/test/ch/asynk/rustanddust/Helpers.java @@ -52,11 +52,13 @@ public class Helpers      public static class FakeTile extends Tile      {          public boolean offMap; +        public boolean blockLineOfSight;          public FakeTile(int col, int row)          {              super(col, row);              offMap = false; +            blockLineOfSight = false;          }          public FakeTile(int col, int row, boolean offMap) @@ -76,7 +78,9 @@ public class Helpers          @Override public boolean isA(TileTerrain terrain)           { return true; }          @Override public boolean road(Orientation side)             { return false; }          @Override public boolean atLeastOneMove(Pawn pawn)          { return true; } -        @Override public boolean blockLineOfSightFrom(Tile from)    { return false; } +        @Override public boolean blockLineOfSightFrom(Tile from)    { return blockLineOfSight; } + +        public void setBlockLineOfSight(boolean block)              { blockLineOfSight = block; }      }      public static class FakeSearchBoard extends SearchBoard @@ -90,6 +94,8 @@ public class Helpers          {              return distance(getNode(col0, row0), getNode(col1, row1));          } + +        public Node get(int col, int row) { return getNode(col, row); }      }      public static class FakeBoard extends Board 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)); +    }  } | 
