diff options
-rw-r--r-- | src/ch/epfl/xblast/server/Board.java | 37 | ||||
-rw-r--r-- | test/ch/epfl/xblast/server/BoardTest.java | 31 |
2 files changed, 30 insertions, 38 deletions
diff --git a/src/ch/epfl/xblast/server/Board.java b/src/ch/epfl/xblast/server/Board.java index 4d2e743..5e03671 100644 --- a/src/ch/epfl/xblast/server/Board.java +++ b/src/ch/epfl/xblast/server/Board.java | |||
@@ -32,15 +32,12 @@ public final class Board { | |||
32 | * @throws IllegalArgumentException if the matrix does not comply with the given sizes. | 32 | * @throws IllegalArgumentException if the matrix does not comply with the given sizes. |
33 | */ | 33 | */ |
34 | private static void checkBlockMatrix(List<List<Block>> matrix, int rows, int columns) { | 34 | private static void checkBlockMatrix(List<List<Block>> matrix, int rows, int columns) { |
35 | if (matrix.size() != rows) { | 35 | if (matrix == null || matrix.size() != rows) |
36 | throw new IllegalArgumentException(); | 36 | throw new IllegalArgumentException(); |
37 | } else { | 37 | |
38 | for (int i = 0; i < rows; i++) { | 38 | for (int i = 0; i < rows; i++) |
39 | if (matrix.get(i).size() != columns) { | 39 | if (matrix.get(i).size() != columns) |
40 | throw new IllegalArgumentException(); | 40 | throw new IllegalArgumentException(); |
41 | } | ||
42 | } | ||
43 | } | ||
44 | } | 41 | } |
45 | 42 | ||
46 | /** | 43 | /** |
@@ -55,9 +52,9 @@ public final class Board { | |||
55 | * @throws IllegalArgumentException if the blocks is not composed of BLOC_LIST_SIZE elements | 52 | * @throws IllegalArgumentException if the blocks is not composed of BLOC_LIST_SIZE elements |
56 | */ | 53 | */ |
57 | public Board(List<Sq<Block>> blocks) { | 54 | public Board(List<Sq<Block>> blocks) { |
58 | if (blocks.size() != BLOCKS_LIST_SIZE) { | 55 | if (blocks == null || blocks.size() != BLOCKS_LIST_SIZE) |
59 | throw new IllegalArgumentException(); | 56 | throw new IllegalArgumentException(); |
60 | } | 57 | |
61 | this.blocks = blocks; | 58 | this.blocks = blocks; |
62 | } | 59 | } |
63 | 60 | ||
@@ -72,11 +69,9 @@ public final class Board { | |||
72 | checkBlockMatrix(rows, BOARD_ROWS, BOARD_COLUMNS); | 69 | checkBlockMatrix(rows, BOARD_ROWS, BOARD_COLUMNS); |
73 | List<Sq<Block>> blocksSequence = new ArrayList<>(); | 70 | List<Sq<Block>> blocksSequence = new ArrayList<>(); |
74 | 71 | ||
75 | for (int i = 0; i < rows.size(); i++) { | 72 | for (List<Block> row : rows) |
76 | for (int j = 0; j < rows.get(i).size(); j++) { | 73 | for (Block aRow : row) |
77 | blocksSequence.add(Sq.constant(rows.get(i).get(j))); | 74 | blocksSequence.add(Sq.constant(aRow)); |
78 | } | ||
79 | } | ||
80 | 75 | ||
81 | return new Board(blocksSequence); | 76 | return new Board(blocksSequence); |
82 | } | 77 | } |
@@ -93,12 +88,10 @@ public final class Board { | |||
93 | List<List<Block>> rowsList = new ArrayList<>(); | 88 | List<List<Block>> rowsList = new ArrayList<>(); |
94 | List<Block> wallLine = new ArrayList<>(); | 89 | List<Block> wallLine = new ArrayList<>(); |
95 | 90 | ||
96 | for (int i = 0; i < BOARD_COLUMNS; i++) { | 91 | for (int i = 0; i < BOARD_COLUMNS; i++) |
97 | wallLine.add(Block.INDESTRUCTIBLE_WALL); | 92 | wallLine.add(Block.INDESTRUCTIBLE_WALL); |
98 | } | ||
99 | 93 | ||
100 | for (int i = 0; i < innerBlocks.size(); i++) { | 94 | for (List<Block> row : innerBlocks) { |
101 | List<Block> row = innerBlocks.get(i); | ||
102 | row.add(0, Block.INDESTRUCTIBLE_WALL); | 95 | row.add(0, Block.INDESTRUCTIBLE_WALL); |
103 | row.add(Block.INDESTRUCTIBLE_WALL); | 96 | row.add(Block.INDESTRUCTIBLE_WALL); |
104 | 97 | ||
@@ -123,9 +116,9 @@ public final class Board { | |||
123 | List<List<Block>> rowsList = new ArrayList<>(); | 116 | List<List<Block>> rowsList = new ArrayList<>(); |
124 | List<List<Block>> halfInnerBoard = Lists.mirrored(quadrantNWBlocks); | 117 | List<List<Block>> halfInnerBoard = Lists.mirrored(quadrantNWBlocks); |
125 | 118 | ||
126 | for (int i = 0; i < halfInnerBoard.size(); i++) { | 119 | for (List<Block> aHalfInnerBoard : halfInnerBoard) |
127 | rowsList.add(Lists.mirrored(halfInnerBoard.get(i))); | 120 | rowsList.add(Lists.mirrored(aHalfInnerBoard)); |
128 | } | 121 | |
129 | return ofInnerBlocksWalled(rowsList); | 122 | return ofInnerBlocksWalled(rowsList); |
130 | } | 123 | } |
131 | 124 | ||
diff --git a/test/ch/epfl/xblast/server/BoardTest.java b/test/ch/epfl/xblast/server/BoardTest.java index 5cf2aef..014bd17 100644 --- a/test/ch/epfl/xblast/server/BoardTest.java +++ b/test/ch/epfl/xblast/server/BoardTest.java | |||
@@ -26,9 +26,8 @@ public class BoardTest { | |||
26 | public void isBoardBuilderIllegalInputThrowingException() { | 26 | public void isBoardBuilderIllegalInputThrowingException() { |
27 | List<Sq<Block>> blocks = new ArrayList<>(); | 27 | List<Sq<Block>> blocks = new ArrayList<>(); |
28 | 28 | ||
29 | for (int i = 0; i < 8; i++) { | 29 | for (int i = 0; i < 8; i++) |
30 | blocks.add(Sq.constant(Block.FREE)); | 30 | blocks.add(Sq.constant(Block.FREE)); |
31 | } | ||
32 | 31 | ||
33 | new Board(blocks); | 32 | new Board(blocks); |
34 | } | 33 | } |
@@ -44,9 +43,9 @@ public class BoardTest { | |||
44 | List<List<Block>> rowsList = new ArrayList<>(); | 43 | List<List<Block>> rowsList = new ArrayList<>(); |
45 | List<Block> sampleRow = new ArrayList<>(); | 44 | List<Block> sampleRow = new ArrayList<>(); |
46 | 45 | ||
47 | for (int i = 0; i < 8; i++) { | 46 | for (int i = 0; i < 8; i++) |
48 | sampleRow.add(Block.FREE); | 47 | sampleRow.add(Block.FREE); |
49 | } | 48 | |
50 | rowsList.add(sampleRow); | 49 | rowsList.add(sampleRow); |
51 | 50 | ||
52 | assertTrue(Board.ofRows(rowsList) instanceof Board); | 51 | assertTrue(Board.ofRows(rowsList) instanceof Board); |
@@ -58,9 +57,9 @@ public class BoardTest { | |||
58 | 57 | ||
59 | for (int i = 0; i < 13; i++) { | 58 | for (int i = 0; i < 13; i++) { |
60 | List<Block> sampleRow = new ArrayList<>(); | 59 | List<Block> sampleRow = new ArrayList<>(); |
61 | for (int j = 0; j < 15; j++) { | 60 | for (int j = 0; j < 15; j++) |
62 | sampleRow.add(Block.FREE); | 61 | sampleRow.add(Block.FREE); |
63 | } | 62 | |
64 | rowsList.add(sampleRow); | 63 | rowsList.add(sampleRow); |
65 | } | 64 | } |
66 | 65 | ||
@@ -78,9 +77,9 @@ public class BoardTest { | |||
78 | List<List<Block>> rowsList = new ArrayList<>(); | 77 | List<List<Block>> rowsList = new ArrayList<>(); |
79 | List<Block> sampleRow = new ArrayList<>(); | 78 | List<Block> sampleRow = new ArrayList<>(); |
80 | 79 | ||
81 | for (int i = 0; i < 8; i++) { | 80 | for (int i = 0; i < 8; i++) |
82 | sampleRow.add(Block.FREE); | 81 | sampleRow.add(Block.FREE); |
83 | } | 82 | |
84 | rowsList.add(sampleRow); | 83 | rowsList.add(sampleRow); |
85 | 84 | ||
86 | assertTrue(Board.ofInnerBlocksWalled(rowsList) instanceof Board); | 85 | assertTrue(Board.ofInnerBlocksWalled(rowsList) instanceof Board); |
@@ -92,9 +91,9 @@ public class BoardTest { | |||
92 | 91 | ||
93 | for (int i = 0; i < 11; i++) { | 92 | for (int i = 0; i < 11; i++) { |
94 | List<Block> sampleRow = new ArrayList<>(); | 93 | List<Block> sampleRow = new ArrayList<>(); |
95 | for (int j = 0; j < 13; j++) { | 94 | for (int j = 0; j < 13; j++) |
96 | sampleRow.add(Block.FREE); | 95 | sampleRow.add(Block.FREE); |
97 | } | 96 | |
98 | rowsList.add(sampleRow); | 97 | rowsList.add(sampleRow); |
99 | } | 98 | } |
100 | 99 | ||
@@ -112,9 +111,9 @@ public class BoardTest { | |||
112 | List<List<Block>> rowsList = new ArrayList<>(); | 111 | List<List<Block>> rowsList = new ArrayList<>(); |
113 | List<Block> sampleRow = new ArrayList<>(); | 112 | List<Block> sampleRow = new ArrayList<>(); |
114 | 113 | ||
115 | for (int i = 0; i < 8; i++) { | 114 | for (int i = 0; i < 8; i++) |
116 | sampleRow.add(Block.FREE); | 115 | sampleRow.add(Block.FREE); |
117 | } | 116 | |
118 | rowsList.add(sampleRow); | 117 | rowsList.add(sampleRow); |
119 | 118 | ||
120 | assertTrue(Board.ofQuadrantNWBlocksWalled(rowsList) instanceof Board); | 119 | assertTrue(Board.ofQuadrantNWBlocksWalled(rowsList) instanceof Board); |
@@ -126,9 +125,9 @@ public class BoardTest { | |||
126 | 125 | ||
127 | for (int i = 0; i < 6; i++) { | 126 | for (int i = 0; i < 6; i++) { |
128 | List<Block> sampleRow = new ArrayList<>(); | 127 | List<Block> sampleRow = new ArrayList<>(); |
129 | for (int j = 0; j < 7; j++) { | 128 | for (int j = 0; j < 7; j++) |
130 | sampleRow.add(Block.FREE); | 129 | sampleRow.add(Block.FREE); |
131 | } | 130 | |
132 | rowsList.add(sampleRow); | 131 | rowsList.add(sampleRow); |
133 | } | 132 | } |
134 | 133 | ||
@@ -143,9 +142,9 @@ public class BoardTest { | |||
143 | List<Sq<Block>> blocksList = new ArrayList<>(); | 142 | List<Sq<Block>> blocksList = new ArrayList<>(); |
144 | 143 | ||
145 | blocksList.add(Sq.constant(Block.INDESTRUCTIBLE_WALL)); | 144 | blocksList.add(Sq.constant(Block.INDESTRUCTIBLE_WALL)); |
146 | for (int i = 0; i < 194; i++) { | 145 | for (int i = 0; i < 194; i++) |
147 | blocksList.add(Sq.constant(Block.FREE)); | 146 | blocksList.add(Sq.constant(Block.FREE)); |
148 | } | 147 | |
149 | Board sampleBoard = new Board(blocksList); | 148 | Board sampleBoard = new Board(blocksList); |
150 | 149 | ||
151 | assertTrue(sampleBoard.blockAt(sampleCell) == Block.INDESTRUCTIBLE_WALL); | 150 | assertTrue(sampleBoard.blockAt(sampleCell) == Block.INDESTRUCTIBLE_WALL); |