diff --git a/src/test/java/dotsandboxes/DotsAndBoxesGridTest.java b/src/test/java/dotsandboxes/DotsAndBoxesGridTest.java index 1946beda974d180686c65c0259a7b881e9a4eb5a..eccd78b06ca91551acb920e8a6eb457bef18b206 100644 --- a/src/test/java/dotsandboxes/DotsAndBoxesGridTest.java +++ b/src/test/java/dotsandboxes/DotsAndBoxesGridTest.java @@ -2,30 +2,43 @@ package dotsandboxes; import org.junit.jupiter.api.*; import static org.junit.jupiter.api.Assertions.*; -import static org.junit.jupiter.api.Assumptions.*; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class DotsAndBoxesGridTest { - /* - * Because Test classes are classes, they can have fields, and can have static fields. - * This field is a logger. Loggers are like a more advanced println, for writing messages out to the console or a log file. - */ private static final Logger logger = LogManager.getLogger(DotsAndBoxesGridTest.class); - /* - * Tests are functions that have an @Test annotation before them. - * The typical format of a test is that it contains some code that does something, and then one - * or more assertions to check that a condition holds. - * - * This is a dummy test just to show that the test suite itself runs - */ @Test public void testTestSuiteRuns() { logger.info("Dummy test to show the test suite runs"); assertTrue(true); } - // FIXME: You need to write tests for the two known bugs in the code. + // Test for Bug 1: Check if a square is correctly marked as complete + @Test + public void testSquareCompletion() { + logger.info("Testing square completion logic"); + DotsAndBoxesGrid game = new DotsAndBoxesGrid(4, 4, 2); + + // Simulate drawing lines to complete a square + game.drawHorizontal(0, 0, 1); + game.drawHorizontal(0, 1, 1); + game.drawVertical(0, 0, 1); + game.drawVertical(1, 0, 1); + + // Assert that the square is marked as complete + assertTrue(game.boxComplete(0, 0), "Square should be complete"); + } + + // Test for Bug 2: Check if an exception is thrown when a line is drawn twice + @Test + public void testDrawingLineTwice() { + logger.info("Testing drawing the same line twice"); + DotsAndBoxesGrid game = new DotsAndBoxesGrid(4, 4, 2); + + // Draw the same line twice and expect an exception + game.drawHorizontal(0, 0, 1); + assertThrows(IllegalStateException.class, () -> game.drawHorizontal(0, 0, 1), "Drawing the same line twice should throw an exception"); + } }