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