Skip to content

Commit

Permalink
Write first test for blackout direct rule
Browse files Browse the repository at this point in the history
  • Loading branch information
summerhenson committed Apr 5, 2024
1 parent 15e19d3 commit 729d6b7
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions src/test/java/puzzles/starbattle/rules/BlackoutDirectRuleTest.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package puzzles.starbattle.rules;

import edu.rpi.legup.puzzle.nurikabe.Nurikabe;
import edu.rpi.legup.puzzle.nurikabe.NurikabeBoard;
import edu.rpi.legup.puzzle.nurikabe.NurikabeCell;
import edu.rpi.legup.puzzle.nurikabe.NurikabeType;
import legup.MockGameBoardFacade;
import legup.TestUtilities;
import edu.rpi.legup.model.tree.TreeNode;
Expand All @@ -15,5 +19,51 @@
import edu.rpi.legup.puzzle.starbattle.rules.BlackoutDirectRule;
import edu.rpi.legup.save.InvalidFileFormatException;

import java.awt.*;

public class BlackoutDirectRuleTest {

private static final BlackoutDirectRule RULE = new BlackoutDirectRule();
private static StarBattle starbattle;

@BeforeClass
public static void setUp() {
MockGameBoardFacade.getInstance();
starbattle = new StarBattle();
}

@Test
public void BlackoutDirectRuleTest_ColumnBlackout() throws InvalidFileFormatException {
TestUtilities.importTestBoard("puzzles/starbattle/rules/BlackoutDirectRule/ColumnBlackout", starbattle);
TreeNode rootNode = starbattle.getTree().getRootNode();
TreeTransition transition = rootNode.getChildren().get(0);
transition.setRule(RULE);

StarBattleBoard board = (StarBattleBoard) transition.getBoard();

StarBattleCell cell1 = board.getCell(1, 1);
cell1.setData(StarBattleCellType.BLACK.value);
StarBattleCell cell2 = board.getCell(1, 2);
cell2.setData(StarBattleCellType.BLACK.value);
StarBattleCell cell3 = board.getCell(1, 3);
cell3.setData(StarBattleCellType.BLACK.value);

board.addModifiedData(cell1);
board.addModifiedData(cell2);
board.addModifiedData(cell3);

Assert.assertNull(RULE.checkRule(transition));

for (int i = 0; i < board.getHeight(); i++) {
for (int k = 0; k < board.getWidth(); k++) {
Point point = new Point(k, i);
if (point.equals(cell1.getLocation()) || point.equals(cell2.getLocation()) || point.equals(cell3.getLocation())) {
Assert.assertNull(RULE.checkRuleAt(transition, board.getCell(k, i)));
}
else {
Assert.assertNotNull(RULE.checkRuleAt(transition, board.getCell(k, i)));
}
}
}
}
}

0 comments on commit 729d6b7

Please sign in to comment.