package lab17;

import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;

class ToroidalGridTest {

    @Test
    void testInit() {
        ToroidalGrid grid = new ToroidalGrid();
        assertEquals(10, grid.numRows(), "incorrect number of rows");
        assertEquals(8, grid.numCols(), "incorrect number of cols");
        assertTrue(grid.getCell(1, 2).isOn(), "incorrect cell #1");
        assertTrue(grid.getCell(2, 3).isOn(), "incorrect cell #2");
        assertTrue(grid.getCell(3, 1).isOn(), "incorrect cell #3");
        assertTrue(grid.getCell(3, 2).isOn(), "incorrect cell #4");
        assertTrue(grid.getCell(3, 3).isOn(), "incorrect cell #5");
    }

    @Test
    void testCountOn() {
        ToroidalGrid grid = new ToroidalGrid();
        assertEquals(5, grid.countOn(), "number of cells");
        grid.turnOn(6, 7);
        assertEquals(6, grid.countOn(), "number of cells");
        grid.turnOn(8, 0);
        assertEquals(7, grid.countOn(), "number of cells");
    }

    @Test
    void testTest() {
        ToroidalGrid grid = new ToroidalGrid();
        grid.turnOn(0, 5);
        assertEquals(1, grid.test(10, 5), "wrap on bottom");
        grid.turnOn(9, 6);
        assertEquals(1, grid.test(-1, 6), "wrap on top");
        grid.turnOn(6, 0);
        assertEquals(1, grid.test(6, 8), "wrap on right");
        grid.turnOn(7, 7);
        assertEquals(1, grid.test(7, -1), "wrap on left");
    }

}
