コード例 #1
0
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
コード例 #2
0
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]
コード例 #3
0
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]
コード例 #4
0
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]
コード例 #5
0
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
コード例 #6
0
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]
コード例 #7
0
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
コード例 #8
0
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)
コード例 #9
0
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]
コード例 #10
0
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]
コード例 #11
0
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
コード例 #12
0
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]
コード例 #13
0
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')]
コード例 #14
0
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
コード例 #15
0
def test_turtle_should_move_to_second_field():
    turtle = Turtle('RED')
    board = Board([turtle])

    board.move(turtle, 2)

    assert board.further_fields[1] == [turtle]
コード例 #16
0
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
コード例 #17
0
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
コード例 #18
0
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]
コード例 #19
0
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
コード例 #20
0
 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
コード例 #21
0
def test_is_last_should_return_true_for_first_turtle():
    turtle = Turtle('RED')
    board = Board([turtle])

    actual = board.is_last(turtle)

    assert actual
コード例 #22
0
def test_is_last_should_return_false_when_board_is_empty():
    turtle = Turtle('RED')
    board = Board([])

    actual = board.is_last(turtle)

    assert not actual
コード例 #23
0
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
コード例 #24
0
def test_turtle_should_move_to_third_field():
    turtle = Turtle('RED')
    board = Board([turtle])

    board.move(turtle, 3)

    assert board.further_fields[2] == [turtle]
コード例 #25
0
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
コード例 #26
0
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]
コード例 #27
0
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
コード例 #28
0
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
コード例 #29
0
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
コード例 #30
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] == []