58 lines
2.1 KiB
Python
58 lines
2.1 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()
|