def test_turtles_should_move_when_moving_bottom_turtle_from_further_to_start(): turtle1 = Turtle('RED') turtle2 = Turtle('BLUE') board = Board([turtle1, turtle2]) board.move(turtle1, 1) board.move(turtle2, 1) board.move(turtle1, -1) assert [turtle2, turtle1] in board.start_field
def test_two_turtles_should_move_when_moving_bottom_turtle_from_further(): turtle1 = Turtle('RED') turtle2 = Turtle('BLUE') board = Board([turtle1, turtle2]) board.move(turtle1, 1) board.move(turtle2, 1) board.move(turtle1, 1) assert board.further_fields[1] == [turtle2, turtle1]
def test_bottom_turtle_should_stay_when_moving_top_turtle_from_further(): turtle1 = Turtle('RED') turtle2 = Turtle('BLUE') board = Board([turtle1, turtle2]) board.move(turtle1, 1) board.move(turtle2, 1) board.move(turtle2, 1) assert board.further_fields[0] == [turtle1]
def test_turtles_are_in_the_same_field_in_order_after_move_from_further(): turtle1 = Turtle('RED') turtle2 = Turtle('BLUE') board = Board([turtle1, turtle2]) board.move(turtle1, 2) board.move(turtle2, 1) board.move(turtle2, 1) assert board.further_fields[1] == [turtle2, turtle1]
def test_is_last_should_return_true_for_last_turtle(): turtle1 = Turtle('RED') turtle2 = Turtle('BLUE') board = Board([turtle1, turtle2]) board.move(turtle1, 2) board.move(turtle2, 1) actual = board.is_last(turtle2) assert actual
def test_turtles_should_be_at_second_when_moving_bottom_turtle_from_start(): turtle1 = Turtle('RED') turtle2 = Turtle('BLUE') board = Board([turtle1, turtle2]) board.move(turtle1, 1) board.move(turtle2, 1) board.move(turtle1, -1) board.move(turtle1, 1) assert board.further_fields[0] == [turtle2, turtle1]
def test_one_turtle_should_stay_at_start_when_moving_top_turtle_from_start(): turtle1 = Turtle('RED') turtle2 = Turtle('BLUE') board = Board([turtle1, turtle2]) board.move(turtle1, 1) board.move(turtle2, 1) board.move(turtle1, -1) board.move(turtle2, 1) assert [turtle1] in board.start_field
def create_game(people: List[Person]): turtles = [ Turtle('RED'), Turtle('GREEN'), Turtle('BLUE'), Turtle('PURPLE'), Turtle('YELLOW') ] cards = create_cards() random.shuffle(cards) return Game(people, turtles, cards)
def test_three_turtles_one_should_stay_in_first_field_when_moving_middle(): turtle1 = Turtle('RED') turtle2 = Turtle('BLUE') turtle3 = Turtle('GREEN') board = Board([turtle1, turtle2, turtle3]) board.move(turtle1, 1) board.move(turtle2, 1) board.move(turtle3, 1) board.move(turtle2, 1) assert board.further_fields[0] == [turtle1]
def test_three_turtles_two_should_move_to_second_field_when_moving_middle(): turtle1 = Turtle('RED') turtle2 = Turtle('BLUE') turtle3 = Turtle('GREEN') board = Board([turtle1, turtle2, turtle3]) board.move(turtle1, 1) board.move(turtle2, 1) board.move(turtle3, 1) board.move(turtle2, 1) assert board.further_fields[1] == [turtle3, turtle2]
def test_is_move_possible_returns_false_when_back_card_turtle_back_on_start(): card = Card(0, 'RED', 'MINUS') turtle1 = Turtle('RED') turtle2 = Turtle('BLUE') board = Board([turtle1, turtle2]) board.move(turtle2, 1) board.move(turtle1, 1) board.move(turtle2, -1) actual = board.is_move_with_card_possible(card) assert not actual
def test_get_ranking_returns_turtles_sorted_by_pos_when_there_are_stacks(): turtle1 = Turtle('RED') turtle2 = Turtle('GREEN') turtle3 = Turtle('YELLOW') board = Board([turtle1, turtle2, turtle3]) board.move(turtle1, 3) board.move(turtle2, 2) board.move(turtle3, 2) actual = board.get_ranking() assert actual == [turtle1, turtle3, turtle2]
def test_play_returns_ranking_when_autonomous_turtle_finishes(cards, people): turtles = [Turtle('GREEN'), Turtle('RED'), Turtle('YELLOW')] # we add one green card in order to make Piotr win all_cards = [Card(4 * HAND_SIZE, 'GREEN', 'PLUS')] + cards game = Game(people, turtles, all_cards) # one more move is required becuase we moved the green turtle once for _ in range(8 + 1): active = game.active_player game.play(active.person, Action(active.cards[0])) active = game.active_player ranking = game.play(active.person, Action(active.cards[0])) assert ranking == [Person(0, 'Piotr'), Person(1, 'Marta')]
def test_is_move_possible_returns_false_when_rainbow_card_turtle_on_start(): board = Board([Turtle('RED')]) card = Card(0, 'RAINBOW', 'MINUS') actual = board.is_move_with_card_possible(card) assert not actual
def test_turtle_should_move_to_second_field(): turtle = Turtle('RED') board = Board([turtle]) board.move(turtle, 2) assert board.further_fields[1] == [turtle]
def test_is_move_possible_returns_true_when_one_turtle_forward_card(): board = Board([Turtle('RED')]) card = Card(0, 'RAINBOW', 'PLUS') actual = board.is_move_with_card_possible(card) assert actual
def test_is_move_possible_returns_false_when_backward_card_turtle_on_start(): card = Card(0, 'RED', 'MINUS') board = Board([Turtle('RED')]) actual = board.is_move_with_card_possible(card) assert not actual
def test_move_should_move_turtle_to_finish_from_start(): turtle = Turtle('RED') board = Board([turtle]) board.move(turtle, 9) assert board.further_fields[8] == [turtle]
def test_has_anyone_finished_should_return_false_when_all_are_on_start(): turtle = Turtle('RED') board = Board([turtle]) actual = board.has_anyone_finished() assert not actual
def _is_move_with_regular_card_possible(self, card: Card): turtle = Turtle(card.color) if turtle not in self.turtles: return False if card.offset < 0 and self._find_pos(turtle) == 0: return False return True
def test_is_last_should_return_true_for_first_turtle(): turtle = Turtle('RED') board = Board([turtle]) actual = board.is_last(turtle) assert actual
def test_is_last_should_return_false_when_board_is_empty(): turtle = Turtle('RED') board = Board([]) actual = board.is_last(turtle) assert not actual
def test_turtle_shouldnt_be_on_first_when_moved_from_first_to_second(): turtle = Turtle('RED') board = Board([turtle]) board.move(turtle, 0) assert [turtle] not in board.start_field
def test_turtle_should_move_to_third_field(): turtle = Turtle('RED') board = Board([turtle]) board.move(turtle, 3) assert board.further_fields[2] == [turtle]
def test_is_move_possible_returns_false_when_no_turtle_with_given_color(): board = Board([Turtle('RED')]) card = Card(0, 'GREEN', 'PLUS') actual = board.is_move_with_card_possible(card) assert not actual
def test_move_moves_to_the_last_field_when_goes_out_of_the_board_from_start(): turtle = Turtle('RED') board = Board([turtle]) board.move(turtle, 10) assert board.further_fields[-1] == [turtle]
def test_is_move_possible_should_return_true_when_card_is_forward(): card = Card(0, 'RED', 'PLUS') board = Board([Turtle('RED')]) actual = board.is_move_with_card_possible(card) assert actual
def test_should_broadcast_game_won_when_someone_wins(): controller = GameController() controller.handle(HelloServerMsg(0, 'Piotr'), 0) controller.handle(HelloServerMsg(1, 'Marta'), 1) controller.handle(WantToJoinMsg(0), 0) controller.handle(WantToJoinMsg(1), 1) controller.handle(StartGameMsg(0), 0) controller.game.board.move(Turtle('YELLOW'), 8) actual = controller.handle(PlayCardMsg(0, 28, None), 0) expected_msgs = [ MsgToSend(0, message='game won', winner_name='Marta', sorted_list_of_player_places=['Marta', 'Piotr'], sorted_list_of_players_turtle_colors=['YELLOW', 'GREEN']), MsgToSend(1, message='game won', winner_name='Marta', sorted_list_of_player_places=['Marta', 'Piotr'], sorted_list_of_players_turtle_colors=['YELLOW', 'GREEN']) ] for expected_msg in expected_msgs: assert expected_msg in actual
def test_turtle_stack_should_be_smaller_on_start_when_moved_from_start(): turtle = Turtle('RED') board = Board([turtle]) board.move(turtle, 0) assert len(board.start_field) == 0
def test_turtle_is_not_in_the_second_field_after_moving_through_the_second(): turtle = Turtle('RED') board = Board([turtle]) board.move(turtle, 1) board.move(turtle, 1) assert board.further_fields[0] == []