diff options
Diffstat (limited to 'core/test')
| -rw-r--r-- | core/test/ch/asynk/rustanddust/Attacks.java | 114 | 
1 files changed, 114 insertions, 0 deletions
| diff --git a/core/test/ch/asynk/rustanddust/Attacks.java b/core/test/ch/asynk/rustanddust/Attacks.java new file mode 100644 index 0000000..4130615 --- /dev/null +++ b/core/test/ch/asynk/rustanddust/Attacks.java @@ -0,0 +1,114 @@ +package ch.asynk.rustanddust; + +import java.util.List; +import java.util.Vector; + +import org.junit.Test; +import org.junit.Before; + +import ch.asynk.rustanddust.engine.Pawn; +import ch.asynk.rustanddust.engine.Orientation; +import ch.asynk.rustanddust.engine.SearchBoard.Node; + +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; + +public class Attacks +{ +    private Helpers.FakeBoard fakeBoard; +    private Helpers.FakeSearchBoard sb; +    private Helpers.FakePawn shooter; +    private Helpers.FakePawn target; + +    @Before +    public void initialize() +    { +        int cols = 10; +        int rows = 9; +        fakeBoard = new Helpers.FakeBoard(cols, rows); +        sb = new Helpers.FakeSearchBoard(fakeBoard, cols, rows); +        shooter = new Helpers.FakePawn(); +        target = new Helpers.FakePawn(); +        setPawn(shooter, sb.get(6, 4), Orientation.NORTH); +    } + +    private void block(int i, int j, boolean block) +    { +        ((Helpers.FakeTile) fakeBoard.getTile(i, j)).setBlockLineOfSight(block); +    } + +    private void setPawn(Helpers.FakePawn pawn, Node n, Orientation o) +    { +        pawn.setOnTile(fakeBoard.getTile(n.col, n.row), o.r()); +        pawn.setOrientation(o); +    } + +    @Test public void test_1() { +        Node []nodes = { +             sb.get(7, 5) +            ,sb.get(7, 4) +            ,sb.get(6, 3) +            ,sb.get(7, 6) +            ,sb.get(8, 6) +            ,sb.get(8, 5) +            ,sb.get(8, 4) +            ,sb.get(7, 3) +            ,sb.get(6, 2) +            ,sb.get(5, 2) +            ,sb.get(8, 7) +            ,sb.get(9, 7) +            ,sb.get(9 ,6) +            ,sb.get(9 ,5) +            ,sb.get(9, 4) +            ,sb.get(8, 3) +            ,sb.get(7, 2) +            ,sb.get(6, 1) +            ,sb.get(5, 1) +        }; + +        for (Node n : nodes) { +            setPawn(target, n, Orientation.NORTH); +            assertTrue(sb.canAttack(shooter, target, true)); +            assertTrue(shooter.isClearAttack()); +        } +    } + +    @Test public void test_2() { +        Node []nodes = { +              sb.get(6, 5) +             ,sb.get(5, 4) +             ,sb.get(5, 3) +             ,sb.get(6, 6) +             ,sb.get(5, 5) +             ,sb.get(4, 4) +             ,sb.get(4, 3) +             ,sb.get(4, 2) +             ,sb.get(7, 7) +             ,sb.get(6, 7) +             ,sb.get(5, 6) +             ,sb.get(4, 5) +             ,sb.get(3, 4) +             ,sb.get(3, 3) +             ,sb.get(3, 2) +             ,sb.get(3, 1) +             ,sb.get(4, 1) +        }; + +        for (Node n : nodes) { +            setPawn(target, n, Orientation.NORTH); +            assertFalse(sb.canAttack(shooter, target, true)); +            assertFalse(shooter.isClearAttack()); +        } +    } + +    @Test public void test_3() { +        Vector<Pawn> targets = new Vector<Pawn>(5); +        sb.possibleTargetsFrom(shooter, targets); + +        setPawn(target, sb.get(7, 6), Orientation.NORTH); +        sb.possibleTargetsFrom(shooter, targets); + +        setPawn(target, sb.get(5, 2), Orientation.NORTH); +        sb.possibleTargetsFrom(shooter, targets); +    } +} | 
