wrdler / tests /test_word_file_validation.py
Surn's picture
Enhance AI word generation and update to v0.1.1
d57c213
raw
history blame
2.67 kB
"""
Test validation of word files for MIN_REQUIRED threshold compliance.
"""
import os
import tempfile
import shutil
from wrdler.word_loader_ai import _save_ai_words_to_file
from wrdler.word_loader import MIN_REQUIRED
def test_save_ai_words_validates_min_required():
"""Test that _save_ai_words_to_file returns insufficiency info."""
# Create a temporary directory for test files
test_dir = tempfile.mkdtemp()
try:
# Mock the words directory to point to our temp dir
import wrdler.word_loader_ai as wl_ai
original_dirname = wl_ai.os.path.dirname
def mock_dirname(path):
if "word_loader_ai.py" in path:
return test_dir
return original_dirname(path)
wl_ai.os.path.dirname = mock_dirname
# Test case 1: Insufficient words (should return non-empty dict)
insufficient_words = [
"COOK", "BAKE", "HEAT", # 3 x 4-letter (need 25)
"ROAST", "GRILL", "STEAM", # 3 x 5-letter (need 25)
"SIMMER", "BRAISE", # 2 x 6-letter (need 25)
]
filename, insufficient = _save_ai_words_to_file("test_topic", insufficient_words)
assert filename == "test_topic.txt", f"Expected 'test_topic.txt', got '{filename}'"
assert len(insufficient) > 0, "Expected insufficient_lengths to be non-empty"
assert 4 in insufficient, "Expected 4-letter words to be insufficient"
assert 5 in insufficient, "Expected 5-letter words to be insufficient"
assert 6 in insufficient, "Expected 6-letter words to be insufficient"
# Test case 2: Sufficient words (should return empty dict)
sufficient_words = []
for length in [4, 5, 6]:
for i in range(MIN_REQUIRED):
# Generate unique words of the required length
word = chr(65 + (i % 26)) * length + str(i).zfill(length - 1)
sufficient_words.append(word[:length].upper())
filename2, insufficient2 = _save_ai_words_to_file("test_sufficient", sufficient_words)
assert filename2 == "test_sufficient.txt", f"Expected 'test_sufficient.txt', got '{filename2}'"
assert len(insufficient2) == 0, f"Expected empty insufficient_lengths, got {insufficient2}"
print("? All validation tests passed!")
finally:
# Restore original dirname
wl_ai.os.path.dirname = original_dirname
# Clean up temp directory
shutil.rmtree(test_dir, ignore_errors=True)
if __name__ == "__main__":
test_save_ai_words_validates_min_required()