test: add tests for the Maze class

Add some tests to test the Maze constructor.
This commit is contained in:
Dan Anglin 2024-02-13 14:21:35 +00:00
parent 2ebb555bac
commit 70175b3afd
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
2 changed files with 42 additions and 13 deletions

26
maze.py
View file

@ -13,31 +13,31 @@ class Maze:
self,
x_position: int,
y_position: int,
num_rows: int,
num_columns: int,
num_cell_rows: int,
num_cells_per_row: int,
cell_size_x: int,
cell_size_y: int,
window: Window = None,
) -> None:
self._x_position = x_position
self._y_position = y_position
self._num_rows = num_rows
self._num_columns = num_columns
self._num_cell_rows = num_cell_rows
self._num_cells_per_row = num_cells_per_row
self._cell_size_x = cell_size_x
self._cell_size_y = cell_size_y
self._window = window
# Create the Maze's cells
self._cells: List[List[Cell]] = [None for i in range(self._num_rows)]
self._cells: List[List[Cell]] = [None for i in range(self._num_cell_rows)]
self._create_cells()
def _create_cells(self):
cursor_x = self._x_position
cursor_y = self._y_position
for i in range(self._num_rows):
column: List[Cell] = [None for j in range(self._num_columns)]
for j in range(self._num_columns):
for i in range(self._num_cell_rows):
cells: List[Cell] = [None for j in range(self._num_cells_per_row)]
for j in range(self._num_cells_per_row):
cell = Cell(
cursor_x,
cursor_y,
@ -45,20 +45,20 @@ class Maze:
(cursor_y + self._cell_size_y),
self._window
)
column[j] = cell
if j == self._num_columns - 1:
cells[j] = cell
if j == self._num_cells_per_row - 1:
cursor_x = self._x_position
else:
cursor_x += self._cell_size_x
self._cells[i] = column
self._cells[i] = cells
cursor_y += self._cell_size_y
if self._window:
self._draw_cells()
def _draw_cells(self):
for i in range(self._num_rows):
for j in range(self._num_columns):
for i in range(self._num_cell_rows):
for j in range(self._num_cells_per_row):
self._cells[i][j].draw()
self._animate()

29
tests.py Normal file
View file

@ -0,0 +1,29 @@
import unittest
from maze import Maze
class Tests(unittest.TestCase):
def test_maze_create_cell_grid(self):
cases = [
{
"number_of_cell_rows": 12,
"number_of_cells_per_row": 10,
},
{
"number_of_cell_rows": 50,
"number_of_cells_per_row": 120,
},
{
"number_of_cell_rows": 4,
"number_of_cells_per_row": 4,
},
]
for case in cases:
maze = Maze(0, 0, case["number_of_cell_rows"], case["number_of_cells_per_row"], 2, 2)
self.assertEqual(len(maze._cells), case["number_of_cell_rows"])
self.assertEqual(len(maze._cells[0]), case["number_of_cells_per_row"])
if __name__ == "__main__":
unittest.main()