def test_flag_cannot_be_played_if_already_claimed(self): for number in [10, 9, 8]: self.engine.board_logic.addCard( 2, Identifiers.NORTH, TroopCard(number, "color1")) self.engine.player1.provide_next_turn(TroopCard(1, "color2"), 3) self.engine.player2.provide_next_turn(TroopCard(2, "color2"), 3) self.engine.progress_turn() self.assertEquals(self.engine.last_move.flag, 1) self.assertEquals(self.engine.last_move.card, TroopCard(2, "color2"))
def test_unplayed_cards_after_initialization(self): expected_cards = set(self.engine.get_troop_cards()) self.assertEquals(expected_cards, set( self.engine.get_unplayed_cards())) self.__play_turn() expected_cards = expected_cards - \ set([TroopCard(color="color1", number=1), TroopCard(color="color1", number=2)]) self.assertEquals(expected_cards, set( self.engine.get_unplayed_cards())) outputArray = self.__getStartingString() for move in self.movesList[0]: outputArray.append(move) outputArray.append("") self.assertEquals(self.__getOutputFileContents(), "\n".join(outputArray))
def test_invalid_moves_with_flag_and_card(self): self.engine.player1.provide_next_turn(TroopCard(1, "blah"), 1) self.engine.player2.provide_next_turn(TroopCard(11, "color1"), 1) self.engine.progress_turn() self.assertEquals([TroopCard(color="color1", number=1)], self.engine.board_logic.board.get_flag(1).sides[Identifiers.NORTH]) self.assertEquals([TroopCard(color="color1", number=2)], self.engine.board_logic.board.get_flag(1).sides[Identifiers.SOUTH]) outputArray = self.__getStartingString() for move in self.movesList[0]: outputArray.append(move) outputArray.append("") self.assertEquals(self.__getOutputFileContents(), "\n".join(outputArray))
def test_one_turn_plays_a_troop_and_draws_new_one(self): # make new copies of the hand player1_hand = [card for card in self.engine.player1.hand] player2_hand = [card for card in self.engine.player2.hand] self.__play_turn() self.assertHandsDifferBy1(player1_hand, self.engine.player1.hand) self.assertHandsDifferBy1(player2_hand, self.engine.player2.hand) self.assertNotIn(TroopCard(1, "color1"), self.engine.player1.hand) self.assertNotIn(TroopCard(2, "color1"), self.engine.player1.hand) outputArray = self.__getStartingString() for move in self.movesList[0]: outputArray.append(move) outputArray.append("") self.assertEquals(self.__getOutputFileContents(), "\n".join(outputArray))
def test_player2_does_not_get_turn_if_player1_wins(self): for flag in xrange(9): self.engine.board_logic.addCard( flag, Identifiers.SOUTH, TroopCard(1, "color1")) self.engine.board_logic.addCard( flag, Identifiers.SOUTH, TroopCard(2, "color1")) self.engine.board_logic.addCard( flag, Identifiers.SOUTH, TroopCard(3, "color1")) self.engine.player1.provide_next_turn(TroopCard(1, "color2"), 9) self.engine.player2.provide_next_turn(TroopCard(2, "color2"), 9) self.engine.progress_turn() self.assertEquals(self.engine.last_move.flag, 9) self.assertEquals(self.engine.last_move.card, TroopCard(1, "color2"))
def test_invalid_moves_still_produce_a_valid_move(self): for i in xrange(4): self.__play_turn() self.assertEquals([TroopCard(color="color1", number=1), TroopCard(color="color1", number=3), TroopCard(color="color1", number=5)], self.engine.board_logic.board.get_flag(1).sides[Identifiers.NORTH]) self.assertEquals([TroopCard(color="color1", number=2), TroopCard(color="color1", number=4), TroopCard(color="color1", number=6)], self.engine.board_logic.board.get_flag(1).sides[Identifiers.SOUTH]) self.assertEquals([TroopCard(color="color1", number=7)], self.engine.board_logic.board.get_flag(2).sides[Identifiers.NORTH]) self.assertEquals([TroopCard(color="color1", number=8)], self.engine.board_logic.board.get_flag(2).sides[Identifiers.SOUTH]) outputArray = self.__getStartingString() for turn in self.movesList[:4]: for move in turn: outputArray.append(move) outputArray.append("") self.assertEquals(self.__getOutputFileContents(), "\n".join(outputArray))
def test_board_deck_should_have_all_sixty_cards_to_start_with(self): colors = ["RED", "GREEN", "ORANGE", "YELLOW", "BLUE", "PURPLE"] all_troops = [TroopCard(number, color) for color, number in sorted( product(colors, range(1, 11)), reverse=True)] return sorted(all_troops) == sorted(self.engine.troop_deck.deck)
def test_player2_does_not_get_turn_if_player1_wins(self): self.engine.board_logic.addCard( 1, Identifiers.NORTH, TroopCard(10, "color1")) self.engine.board_logic.addCard( 1, Identifiers.NORTH, TroopCard(9, "color1")) self.engine.board_logic.addCard( 1, Identifiers.NORTH, TroopCard(8, "color1")) self.engine.board_logic.addCard( 2, Identifiers.NORTH, TroopCard(10, "color4")) self.engine.board_logic.addCard( 2, Identifiers.NORTH, TroopCard(9, "color4")) self.engine.board_logic.addCard( 2, Identifiers.NORTH, TroopCard(8, "color4")) self.engine.board_logic.addCard( 3, Identifiers.NORTH, TroopCard(10, "color3")) self.engine.board_logic.addCard( 3, Identifiers.NORTH, TroopCard(9, "color3")) self.engine.board_logic.addCard( 3, Identifiers.NORTH, TroopCard(8, "color3")) self.engine.player1.provide_next_turn(TroopCard(1, "color2"), 9) self.engine.player2.provide_next_turn(TroopCard(2, "color2"), 9) self.engine.progress_turn() self.assertEquals(self.engine.last_move.flag, 9) self.assertEquals(self.engine.last_move.card, TroopCard(1, "color2"))
def __play_turn(self): self.engine.player1.provide_next_turn(TroopCard(1, "color1"), 1) self.engine.player2.provide_next_turn(TroopCard(2, "color1"), 1) self.engine.progress_turn()
def test_each_player_starts_with_names_and_with_7_cards_after_initialization(self): self.assertEquals([TroopCard(1, "color1"), TroopCard(3, "color1"), TroopCard(5, "color1"), TroopCard(7, "color1"), TroopCard(9, "color1"), TroopCard(1, "color2"), TroopCard(3, "color2")], self.engine.player1.hand) self.assertEquals([TroopCard(2, "color1"), TroopCard(4, "color1"), TroopCard(6, "color1"), TroopCard(8, "color1"), TroopCard(10, "color1"), TroopCard(2, "color2"), TroopCard(4, "color2")], self.engine.player2.hand) trueStartingString = self.__getStartingString() trueStartingString.append("") self.assertEquals( self.__getOutputFileContents(), "\n".join(trueStartingString)) '''