From 7322ab2672ada8a383b14f7976e8f589c52be70d Mon Sep 17 00:00:00 2001
From: Adam Blank <blank@caltech.edu>
Date: Wed, 30 Oct 2024 21:21:57 +0000
Subject: [PATCH] Update test_miniproject.py

---
 tests/0.MiniProject/test_miniproject.py | 45 +++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/tests/0.MiniProject/test_miniproject.py b/tests/0.MiniProject/test_miniproject.py
index 8b13789..faa23ff 100644
--- a/tests/0.MiniProject/test_miniproject.py
+++ b/tests/0.MiniProject/test_miniproject.py
@@ -1 +1,46 @@
+from collections import Counter, defaultdict
+import random
+
+import pytest
+from src.floodfill import *
+
+NUM_ITERS: int = 100000
+
+
+@pytest.mark.parametrize('n, m', [(1, 1), (5, 5), (5, 10), (10, 5)])
+def test_generate_random_grid(n: int, m: int):
+    random.seed(1000)
+    d: defaultdict[tuple[int, int], Counter[str]] = defaultdict(Counter)
+    for _ in range(NUM_ITERS):
+        grid: list[list[str]] = generate_random_grid(n, m)
+        assert n == len(grid)
+        for i in range(n):
+            assert m == len(grid[i])
+
+        for i in range(n):
+            for j in range(m):
+                d[(i, j)][grid[i][j]] += 1
+
+    for x in d:
+        assert pytest.approx(
+            1/2, 0.01) == d[x][' '] / NUM_ITERS  # type: ignore
+        assert pytest.approx(
+            1/2, 0.01) == d[x]['W'] / NUM_ITERS  # type: ignore
+
+
+@pytest.mark.parametrize('n, m', [(1, 1), (5, 5), (5, 10), (10, 5), (10, 10)])
+def test_all_coordinates(n: int, m: int):
+    assert set([(x, y) for x in range(n) for y in range(m)]) == set(
+        all_coordinates(generate_random_grid(n, m)))
+
+
+def test_find_random_empty() -> None:
+    grid: list[list[str]] = [[' ', 'X', ' ', ' '], ['B', 'B', ' ', 'B']]
+    d: Counter[tuple[int, int]] = Counter()
+    for _ in range(NUM_ITERS):
+        d[find_random_empty(grid)] += 1
+    for x, y in d:
+        assert grid[x][y] == ' '
+        assert pytest.approx(  # type: ignore
+            1/4, 0.01) == d[(x, y)] / NUM_ITERS
 
-- 
GitLab