Files
wordle/test_game.py
2024-03-07 09:46:05 -06:00

80 lines
2.0 KiB
Python

#!/usr/bin/python
import unittest
import dictionary
import game
class TestGame(unittest.TestCase):
test_words = (
"aaaaa",
"aabbb",
"aaccc",
"bbbaa",
"bbbbb",
"ccaaa",
"cccaa",
"ccccc",
"abcde",
)
def test_select_word(self):
word = game.select_word(self.test_words)
self.assertIn(word, self.test_words)
word = game.select_word()
self.assertIn(word, dictionary.words())
def test_grade_word_correct(self):
target = "aaaaa"
guess = "aaaaa"
result = game.grade_word(target, guess, self.test_words)
expected = [
game.LetterResult.CORRECT,
game.LetterResult.CORRECT,
game.LetterResult.CORRECT,
game.LetterResult.CORRECT,
game.LetterResult.CORRECT,
]
self.assertEqual(expected, result)
self.assertTrue(game.success_result(result))
def test_grade_word_mixed(self):
C = game.LetterResult.CORRECT
M = game.LetterResult.MOVE
I = game.LetterResult.INCORRECT
test_cases = (
("aabbb", "aabbb", [C, C, C, C, C]),
("aabbb", "aaccc", [C, C, I, I, I]),
("bbbaa", "cccaa", [I, I, I, C, C]),
("aabbb", "cccaa", [I, I, I, M, M]),
("aabbb", "bbbaa", [M, M, C, M, M]),
("aabbb", "ccaaa", [I, I, M, M, I]),
("aabbb", "abcde", [C, M, I, I, I]),
("aabbb", "ccccc", [I, I, I, I, I]),
)
for target, guess, expected in test_cases:
result = game.grade_word(target, guess, self.test_words)
self.assertEqual(expected, result)
def test_grade_word_invalid(self):
target = "aaaaa"
guess = "inval"
with self.assertRaises(Exception):
game.grade_word(target, guess, self.test_words)
if __name__ == "__main__":
unittest.main()