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