def test_6th_guess_reveals_word(puzzle): guesses = [ g for g in string.ascii_uppercase if g not in puzzle['actual_word'] ] for g in guesses[:6]: res = make_guess(puzzle, g) assert 'actual_word' in res[ 'new_state'], "expected 6th guess to reveal word"
def test_guess_hides_word(puzzle, guess): res = make_guess(puzzle, guess) assert 'actual_word' not in res[ 'new_state'], "expected actual_word' to have been hidden"
def test_already_solved_guess(puzzle, letter): for g in set(puzzle['actual_word']): make_guess(puzzle, g) assertRaises(make_guess, puzzle, letter)
def test_too_many_guesses_fails(): p = new_puzzle() guesses = [g for g in string.ascii_uppercase if g not in p['actual_word']] for g in guesses[:6]: make_guess(p, g) assertRaises(make_guess, p, guesses[6])
def test_repeat_guess_fails(puzzle, letter): make_guess(puzzle, letter) assertRaises(make_guess, puzzle, letter)
def test_uppercase_and_lowercase_equivalent(puzzle, guess): puzzle2 = copy.deepcopy(puzzle) res = make_guess(puzzle, guess.lower()) res2 = make_guess(puzzle2, guess.upper()) assert res == res2, "expected upper- and lower-case case to produce equivalent results"