diff --git a/src/test/java/dotsandboxes/DotsAndBoxesGridTest.java b/src/test/java/dotsandboxes/DotsAndBoxesGridTest.java
index 1946beda974d180686c65c0259a7b881e9a4eb5a..fae9074ee0230b56c978b881a99958c56e5e7b3d 100644
--- a/src/test/java/dotsandboxes/DotsAndBoxesGridTest.java
+++ b/src/test/java/dotsandboxes/DotsAndBoxesGridTest.java
@@ -1,31 +1,56 @@
-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 testBoxComplete() {
+        logger.info("Test whether the program recognises completed boxes");
+        DotsAndBoxesGrid grid = new DotsAndBoxesGrid(3, 3, 1);
+        grid.drawHorizontal(0, 0, 1);
+        grid.drawHorizontal(0, 1, 1);
+        grid.drawVertical(0, 0, 1);
+        grid.drawVertical(1, 0, 1);
+        assertAll(
+                () -> assertTrue(grid.boxComplete(0, 0)),
+                () -> assertFalse(grid.boxComplete(1, 0))
+        );
+    }
+
+    @Test
+    public void testIllegalLine() {
+        logger.info("Ensure lines cannot be drawn over existing lines");
+        DotsAndBoxesGrid grid = new DotsAndBoxesGrid(3, 3, 1);
+        grid.drawHorizontal(0, 0, 1);
+        grid.drawVertical(0, 0, 1);
+        assertAll(
+                () -> assertThrows(IllegalStateException.class, () -> grid.drawHorizontal(0, 0, 1), "The horizontal line was not drawn"),
+                () -> assertThrows(IllegalStateException.class, () -> grid.drawVertical(0, 0, 1), "The vertical line was not drawn")
+        );
+    }
+}