82 lines
2.3 KiB
Python
82 lines
2.3 KiB
Python
#!/usr/bin/python
|
|
|
|
import unittest
|
|
|
|
import constraints
|
|
from wordle 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()
|