diff --git a/src/test/java/dotsandboxes/DotsAndBoxesGridTest.java b/src/test/java/dotsandboxes/DotsAndBoxesGridTest.java index 1946beda974d180686c65c0259a7b881e9a4eb5a..f2f910dc1b61b80c644aaf69fd4403556ca476aa 100644 --- a/src/test/java/dotsandboxes/DotsAndBoxesGridTest.java +++ b/src/test/java/dotsandboxes/DotsAndBoxesGridTest.java @@ -1,31 +1,50 @@ -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. -} +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 + public void testCompleteBox() { + DotsAndBoxesGrid grid = new DotsAndBoxesGrid(15, 8, 2); + grid.drawHorizontal(0,0,1); + grid.drawVertical(0,0,1); + grid.drawHorizontal(0,1,1); + assertTrue(grid.drawVertical(1,0,1)); + } + + @Test + public void testLineDrawn() { + DotsAndBoxesGrid grid = new DotsAndBoxesGrid(15, 8, 2); + grid.drawHorizontal(1,1,1); + Throwable exception = assertThrows(IllegalStateException.class, () -> grid.drawHorizontal(1,1,1)); + assertEquals("This line has already been drawn.", exception.getMessage()); + grid.drawVertical(1,1,1); + Throwable exception2 = assertThrows(IllegalStateException.class, () -> grid.drawVertical(1,1,1)); + assertEquals("This line has already been drawn.", exception2.getMessage()); + } +}