def test_guesses_taken_should_increment_if_letter_not_in_word(self): expectedGuessesTaken = 2 game = Game(word='TESTWORD', guessed_word_state=['', '', 'S', '', 'W', 'O', 'R', ''], letters_guessed=['S', 'A', 'W', 'O', 'R', 'C'], guesses_allowed=5, guesses_taken=expectedGuessesTaken) game.handleGuess('X') self.assertEquals(expectedGuessesTaken + 1, game.guesses_taken)
def test_guessed_word_state_is_unchanged_if_guess_not_in_word(self): initialGuessedWordState = ['', '', 'S', '', 'W', 'O', 'R', ''] game = Game(word='TESTWORD', guessed_word_state=initialGuessedWordState, letters_guessed=['S', 'A', 'W', 'O', 'R', 'C'], guesses_allowed=5, guesses_taken=2) game.handleGuess('X') self.assertEquals(initialGuessedWordState, game.guessed_word_state)
def test_guessed_word_state_is_updated_with_guessed_letter_in_word(self): initialGuessedWordState = ['', '', 'S', '', 'W', 'O', 'R', ''] expectedGuessedWordState = ['T', '', 'S', 'T', 'W', 'O', 'R', ''] game = Game(word='TESTWORD', guessed_word_state=initialGuessedWordState, letters_guessed=['S', 'A', 'W', 'O', 'R', 'C'], guesses_allowed=5, guesses_taken=2) game.handleGuess('T') self.assertEquals(expectedGuessedWordState, game.guessed_word_state)
def test_is_game_over_is_true_if_all_letters_guessed(self): initialLettersGuessed = ['H', 'E', 'L'] game = Game(word='HELLO', guessed_word_state=['H', 'E', 'L', 'L', ''], letters_guessed=initialLettersGuessed.copy(), guesses_allowed=5, guesses_taken=2) guess = 'O' game.handleGuess(guess) self.assertEqual(game.is_game_over, True)
def test_letters_guessed_should_add_guessed_letter_when_letter_not_in_word( self): initialLettersGuessed = ['S', 'A', 'W', 'O', 'R', 'C'] game = Game(word='TESTWORD', guessed_word_state=['', '', 'S', '', 'W', 'O', 'R', ''], letters_guessed=initialLettersGuessed.copy(), guesses_allowed=5, guesses_taken=2) guess = 'Q' game.handleGuess(guess) expectedLettersGuessed = initialLettersGuessed + [guess] self.assertEquals(game.letters_guessed, expectedLettersGuessed)
def test_available_letters_should_remove_guessed_letters_when_letter_not_in_word( self ): initialLettersAvailable = ['B', 'D', 'E', 'T', 'Q'] game = Game( word= 'TESTWORD', guessed_word_state= ['','','S','','W','O','R',''], letters_guessed = ['S', 'A', 'W', 'O', 'R','C'], letters_available = initialLettersAvailable, guesses_allowed= 5, guesses_taken= 2 ) guess = 'Q' game.handleGuess(guess) expectedLettersAvailable = [letter for letter in initialLettersAvailable if not letter in [guess]] self.assertEquals( game.letters_available, expectedLettersAvailable )
def start_game(): # new_game_id = str() new_game = Game() new_game.game_id = uuid.uuid4() new_game.game_over = False new_game.board = GameHandler.serialize_board( Connect4Game.create_board()) new_game.save() return Utils.build_reponse(Constants.STATUS_OK, Constants.GAME_READY, {'game_id': new_game.game_id})
def setUp(self): self.expected_game_data = { 'guesses_allowed': 5, 'guesses_taken': 3, 'letters_guessed': ['A'], 'guessed_word_state': ['', 'A'], 'is_game_over': False, 'id': None } self.mock_game = Game( word="TESTWORD", guesses_allowed=self.expected_game_data['guesses_allowed'], guesses_taken=self.expected_game_data['guesses_taken'], letters_guessed=self.expected_game_data['letters_guessed'], guessed_word_state=self.expected_game_data['guessed_word_state'], is_game_over=self.expected_game_data['is_game_over']) self.request_factory = APIRequestFactory() self.mock_get_request = self.request_factory.get('dummy')
def test_init_should_assign_given_word(self): game = Game(word="TESTWORD") self.assertEquals(game.word, "TESTWORD")
def test_init_should_set_letters_available_to_alphabet(self): game = Game(word="TESTWORD") self.assertEquals(game.letters_available, list('ABCDEFGHIJKLMNOPQRSTUVWXYZ'))
def test_guessed_word_state_is_only_empty_strings(self): testword = "apple" game = Game(word=testword) self.assertEquals(['', '', '', '', ''], game.guessed_word_state)
def test_guessed_word_state_is_same_length_as_word(self): testword = "apple" game = Game(word=testword) self.assertEquals(len(testword), len(game.guessed_word_state))
def test_word_is_capitalized(self): testword = "testword" game = Game(word=testword) self.assertEquals(testword.upper(), game.word)
def test_word_is_only_letters(self): with self.assertRaises(ValidationError): game = Game(word="A1B") game.full_clean()
def test_word_is_less_than_3_chars(self): with self.assertRaises(ValidationError): game = Game(word="AA") game.full_clean()
def test_word_is_required(self): with self.assertRaises(ValidationError): game = Game() game.full_clean()