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

82 lines
2.4 KiB
Python

#!/usr/bin/python
import unittest
import constraints
from game import LetterResult
class TestConstraints(unittest.TestCase):
def test_empty(self):
consts = constraints.Constraints()
self.assertTrue(consts.matches("abcde"))
self.assertTrue(consts.matches("bcdef"))
def test_correct(self):
consts = constraints.Constraints()
consts.update_graded(
"abcde",
[
LetterResult.CORRECT,
LetterResult.INCORRECT,
LetterResult.INCORRECT,
LetterResult.INCORRECT,
LetterResult.INCORRECT,
],
)
self.assertTrue(consts.matches("amnop"))
self.assertTrue(consts.matches("aaaaa"))
self.assertFalse(consts.matches("abcde"))
self.assertFalse(consts.matches("lmnop"))
self.assertFalse(consts.matches("aedcb"))
self.assertFalse(consts.matches("amnob"))
def test_correct_count_limit(self):
consts = constraints.Constraints()
consts.update_graded(
"aazzz",
[
LetterResult.CORRECT,
LetterResult.INCORRECT,
LetterResult.INCORRECT,
LetterResult.INCORRECT,
LetterResult.INCORRECT,
],
)
self.assertTrue(consts.matches("abcde"))
self.assertTrue(consts.matches("abbbb"))
self.assertFalse(consts.matches("aabbb"))
self.assertFalse(consts.matches("abbba"))
self.assertFalse(consts.matches("bbbbb"))
self.assertFalse(consts.matches("bbbba"))
self.assertFalse(consts.matches("babbb"))
def test_move(self):
consts = constraints.Constraints()
consts.update_graded(
"abcde",
[
LetterResult.MOVE,
LetterResult.INCORRECT,
LetterResult.INCORRECT,
LetterResult.INCORRECT,
LetterResult.INCORRECT,
],
)
self.assertTrue(consts.matches("zzzza"))
self.assertTrue(consts.matches("zzzaa"))
self.assertTrue(consts.matches("zaaaa"))
self.assertFalse(consts.matches("azzzz"))
self.assertFalse(consts.matches("zzzzz"))
self.assertFalse(consts.matches("zzzba"))
if __name__ == "__main__":
unittest.main()