def test_game_wins_several_moves(): #pass game = HangmanGame(['abc']) attempt = game.guess('a') assert attempt.is_hit() is True assert game.remaining_misses == 5 assert game.previous_guesses == ['a'] assert game.word.masked == 'a**' attempt = game.guess('c') assert attempt.is_hit() is True assert game.remaining_misses == 5 assert game.previous_guesses == ['a', 'c'] assert game.word.masked == 'a*c' with pytest.raises(GameWonException): game.guess('b') assert game.is_finished() is True assert game.is_won() is True assert game.is_lost() is False assert game.remaining_misses == 5 assert game.previous_guesses == ['a', 'c', 'b'] assert game.word.masked == 'abc'
def test_game_loses_several_guesses(): game = HangmanGame(['Python'], number_of_guesses=3) attempt = game.guess('x') # Miss! assert attempt.is_miss() is True assert game.remaining_misses == 2 assert game.previous_guesses == ['x'] assert game.word.masked == '******' attempt = game.guess('z') # Miss! assert attempt.is_miss() is True assert game.remaining_misses == 1 assert game.previous_guesses == ['x', 'z'] assert game.word.masked == '******' with pytest.raises(GameLostException): game.guess('a') # Miss! assert game.is_finished() is True assert game.is_lost() is True assert game.is_won() is False assert game.remaining_misses == 0 assert game.previous_guesses == ['x', 'z', 'a'] assert game.word.masked == '******'
def test_game_with_several_correct_and_incorrect_guesses(): #pass game = HangmanGame(['Python']) attempt = game.guess('y') assert attempt.is_hit() is True assert game.remaining_misses == 5 assert game.previous_guesses == ['y'] assert game.word.masked == '*y****' attempt = game.guess('x') # Miss! assert attempt.is_miss() is True assert game.remaining_misses == 4 assert game.previous_guesses == ['y', 'x'] assert game.word.masked == '*y****' attempt = game.guess('o') assert attempt.is_hit() is True assert game.remaining_misses == 4 assert game.previous_guesses == ['y', 'x', 'o'] assert game.word.masked == '*y**o*' attempt = game.guess('z') assert attempt.is_miss() is True assert game.remaining_misses == 3 assert game.previous_guesses == ['y', 'x', 'o', 'z'] assert game.word.masked == '*y**o*'
def test_game_loses_first_try(): game = HangmanGame(['Python'], number_of_guesses=1) with pytest.raises(GameLostException): game.guess('x') assert game.remaining_misses == 0 assert game.previous_guesses == ['x'] assert game.word.masked == '******'
def test_game_already_lost_raises_game_finished(): game = HangmanGame(['Python'], number_of_guesses=1) with pytest.raises(GameLostException): game.guess('x') # Miss! assert game.is_finished() is True assert game.is_lost() is True assert game.is_won() is False with pytest.raises(GameFinishedException): game.guess('n')
def test_game_already_won_raises_game_finished(): game = HangmanGame(['aaa']) with pytest.raises(GameWonException): game.guess('a') assert game.is_finished() is True assert game.is_won() is True assert game.is_lost() is False with pytest.raises(GameFinishedException): game.guess('x')
def test_game_wins_first_try(): game = HangmanGame(['aaa']) with pytest.raises(GameWonException): game.guess('a') assert game.is_finished() is True assert game.is_won() is True assert game.is_lost() is False assert game.remaining_misses == 5 assert game.previous_guesses == ['a'] assert game.word.masked == 'aaa'
def test_game_loses_first_try(): #pass game = HangmanGame(['Python'], number_of_guesses=1) with pytest.raises(GameLostException): game.guess('x') # Miss! assert game.is_finished() is True assert game.is_lost() is True assert game.is_won() is False assert game.remaining_misses == 0 assert game.previous_guesses == ['x'] assert game.word.masked == '******'
def test_guess_word_is_case_insensitve(): #pass game = HangmanGame(['Python']) attempt = game.guess('p') assert attempt.is_hit() is True assert game.remaining_misses == 5 assert game.previous_guesses == ['p'] assert game.word.masked == 'p*****' attempt = game.guess('N') assert attempt.is_hit() is True assert game.remaining_misses == 5 assert game.previous_guesses == ['p', 'n'] assert game.word.masked == 'p****n'
def test_game_with_several_incorrect_guesses(): game = HangmanGame(['Python']) attempt = game.guess('x') # Miss! assert attempt.is_miss() is True assert game.remaining_misses == 4 assert game.previous_guesses == ['x'] assert game.word.masked == '******' attempt = game.guess('z') # Miss! assert attempt.is_miss() is True assert game.remaining_misses == 3 assert game.previous_guesses == ['x', 'z'] assert game.word.masked == '******'
def test_game_with_two_correct_guesses_same_move(): game = HangmanGame(['alla']) attempt = game.guess('l') assert attempt.is_hit() is True assert game.remaining_misses == 5 assert game.previous_guesses == ['l'] assert game.word.masked == '*ll*'
def test_game_with_two_correct_guesses_same_move(): #pass game = HangmanGame(['rmotr']) attempt = game.guess('r') assert attempt.is_hit() is True assert game.remaining_misses == 5 assert game.previous_guesses == ['r'] assert game.word.masked == 'r***r'
def test_game_with_one_correct_guess(): #pass game = HangmanGame(['Python']) attempt = game.guess('y') assert attempt.is_hit() is True assert game.remaining_misses == 5 assert game.previous_guesses == ['y'] assert game.word.masked == '*y****'
def test_game_with_several_correct_guesses(): game = HangmanGame(['Python']) attempt = game.guess('y') assert attempt.is_hit() is True assert game.remaining_misses == 5 assert game.previous_guesses == ['y'] assert game.word.masked == '*y****' attempt = game.guess('o') assert attempt.is_hit() is True assert game.remaining_misses == 5 assert game.previous_guesses == ['y', 'o'] assert game.word.masked == '*y**o*' attempt = game.guess('t') assert attempt.is_hit() is True assert game.remaining_misses == 5 assert game.previous_guesses == ['y', 'o', 't'] assert game.word.masked == '*yt*o*'
def main(): print("=====================") print("###### Hangman ######") print("=====================") words = _input( "Enter your list of words separated by comma. Leave empty for default: " ) if words.strip(): words = build_list_of_words(words) else: words = None game = HangmanGame(word_list=words) print("\n### Game Initialized. Let's play!!\n") try: while True: print('') line_message = "({}) Enter new guess ({} remaining attempts): ".format( game.word.masked, game.remaining_misses) users_guess = _input(line_message) if not users_guess.strip(): print("\tEmpty is not valid. Please guess again.") continue try: attempt = game.guess(users_guess) except InvalidGuessedLetterException: print("\t Your guess is incorrect. Please guess again.") continue if attempt.is_hit(): print("\tCongratulations! That's correct.") else: print("\t:( That's a miss!") except GameWonException: print("\t YES! You win! The word was: {}".format(game.word.answer)) except GameLostException: print("\t :( OH NO! You Lose! The word was: {}".format( game.word.answer))