#!/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()