From 7bdbd0fb641aa4b7d844b39cac39fba1d5099eee Mon Sep 17 00:00:00 2001
From: Dan <dandre20@myune.edu.au>
Date: Thu, 22 Jul 2021 12:57:16 +1000
Subject: [PATCH] Added unit tests for 2 errors

---
 .../dotsandboxes/DotsAndBoxesGridTest.java    | 81 ++++++++++++-------
 1 file changed, 50 insertions(+), 31 deletions(-)

diff --git a/src/test/java/dotsandboxes/DotsAndBoxesGridTest.java b/src/test/java/dotsandboxes/DotsAndBoxesGridTest.java
index 1946bed..f2f910d 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());
+    }
+}
-- 
GitLab