Skip to content
Snippets Groups Projects
Select Git revision
  • ce6e86ae0f163f363e43205c4b49f1ebe77ff510
  • main default protected
  • 1-fixing-assignment-errors
3 results

DotsAndBoxesGridTest.java

Blame
  • DotsAndBoxesGridTest.java 2.74 KiB
    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() {
            logger.info("Testing whether the algorithm for testing whether a box is complete is wrong");
    
            DotsAndBoxesGrid grid = new DotsAndBoxesGrid(15, 8, 2);
            
            // draw three sides of a box, not four!
            grid.drawVertical(1, 1, 1);
            grid.drawVertical(2, 1, 1);
            grid.drawHorizontal(1, 1, 1);
            // grid.drawHorizontal(1, 2, 1);
    
            assertFalse(grid.boxComplete(1, 1));
        }
    
        @Test
        public void testHorizontalAlreadyDrawn() {
            logger.info("Testing whether an exception is thrown if a horizontal line is already drawn.");
    
            DotsAndBoxesGrid grid = new DotsAndBoxesGrid(15, 8, 2);
    
            grid.drawHorizontal(1, 1, 1);
            Exception exeption = assertThrows(IllegalStateException.class, () -> {
                grid.drawHorizontal(1, 1, 1);
            });
    
            String expectedMessage = "Horizontal line already drawn";
            String actualMessage = exeption.getMessage();
    
            assertTrue(actualMessage.contains(expectedMessage));
        }
    
        @Test
        public void testVerticalAlreadyDrawn() {
            logger.info("Testing whether an exception is thrown if a horizontal line is already drawn.");
    
            DotsAndBoxesGrid grid = new DotsAndBoxesGrid(15, 8, 2);