import unittest from battlewords.generator import generate_puzzle, validate_puzzle from battlewords.models import Coord class TestGenerator(unittest.TestCase): def test_generate_valid_puzzle(self): # Provide a minimal word pool for deterministic testing words_by_len = { 4: ["TREE", "BOAT"], 5: ["APPLE", "RIVER"], 6: ["ORANGE", "PYTHON"], } p = generate_puzzle(grid_size=12, words_by_len=words_by_len, seed=1234) validate_puzzle(p, grid_size=12) # Ensure 6 words and 6 radar pulses self.assertEqual(len(p.words), 6) self.assertEqual(len(p.radar), 6) # Ensure no overlaps seen = set() for w in p.words: for c in w.cells: self.assertNotIn(c, seen) seen.add(c) self.assertTrue(0 <= c.x < 12 and 0 <= c.y < 12) if __name__ == "__main__": unittest.main()