|
|
import unittest |
|
|
|
|
|
from wrdler.generator import generate_puzzle, validate_puzzle |
|
|
from wrdler.models import Coord |
|
|
|
|
|
|
|
|
class TestGenerator(unittest.TestCase): |
|
|
def test_generate_valid_puzzle(self): |
|
|
|
|
|
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) |
|
|
|
|
|
self.assertEqual(len(p.words), 6) |
|
|
self.assertEqual(len(p.radar), 6) |
|
|
|
|
|
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() |