Skip to content
Snippets Groups Projects
Select Git revision
  • 61900cd5aafe30af48987342f48da6044eb261f9
  • main default protected
  • 1-fix-assignment-errors
  • testsfail
4 results

DotsAndBoxesGridTest.java

Blame
    • Daniel Ho's avatar
      e72875bd
      Add tests for assignment errors · e72875bd
      Daniel Ho authored
      Add tests for correct detection of complete and incomplete
      boxes, and to ensure IllegalStateException is thrown when attempting
      to draw a horizontal or vertical line over lines that were already drawn.
      e72875bd
      History
      Add tests for assignment errors
      Daniel Ho authored
      Add tests for correct detection of complete and incomplete
      boxes, and to ensure IllegalStateException is thrown when attempting
      to draw a horizontal or vertical line over lines that were already drawn.
    DotsAndBoxesGridTest.java 5.81 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);
        }
    
        /**
         * Tests correct detection of completed boxes
         */
        @Test
        public void boxCompleteDetectsCompletedBoxes() {
            // test top left corner box of grid
            DotsAndBoxesGrid case1 = new DotsAndBoxesGrid(5, 5, 2);
            case1.drawHorizontal(0, 0, 0);
            case1.drawVertical(0, 0, 1);
            case1.drawHorizontal(0, 1, 0);
            case1.drawVertical(1, 0, 1);
    
            assertTrue(case1.boxComplete(0,0));
    
            // test bottom right corner box of grid
            DotsAndBoxesGrid case2 = new DotsAndBoxesGrid(5, 5, 2);
            case2.drawHorizontal(3, 3, 0);
            case2.drawVertical(3, 3, 1);
            case2.drawHorizontal(3, 4, 0);
            case2.drawVertical(4, 3, 1);
    
            assertTrue(case2.boxComplete(3,3));
    
            // test grid with 1 box
            DotsAndBoxesGrid case3 = new DotsAndBoxesGrid(2, 2, 2);
            case3.drawHorizontal(0, 0, 0);
            case3.drawVertical(0, 0, 1);
            case3.drawHorizontal(0, 1, 0);
            case3.drawVertical(1, 0, 1);
    
            assertTrue(case3.boxComplete(0,0));
    
            // test a box around the center of grid
            DotsAndBoxesGrid case4 = new DotsAndBoxesGrid(5, 5, 2);
            case4.drawHorizontal(2, 2, 0);
            case4.drawVertical(2, 2, 1);
            case4.drawHorizontal(2, 3, 0);
            case4.drawVertical(3, 2, 1);
    
            assertTrue(case4.boxComplete(2,2));
        }