Beispiel #1
0
    def test_get_play_type_should_not_be_kickoff_at_time0_quarter3_if_already_kicked_off(self):
        # Arrange
        teama = FootballTeam("teama")
        teamb = FootballTeam("teamb")
        state = FootballSimulationGameState().team1(teama).team2(teamb).time(0)

        # Act & Assert
        self.assertNotEqual(
            KickOffPlay,
            ruleset.get_play_type(
                state.quarter(3).event(KickOffPlayOutcome(quarter=3, time=0, possession=teama, nonpossession=teamb))
            ),
        )
        self.assertNotEqual(
            KickOffPlay,
            ruleset.get_play_type(
                state.quarter(3).event(NormalPlayOutcome(quarter=3, time=0, possession=teama, nonpossession=teamb))
            ),
        )
        self.assertEqual(
            KickOffPlay,
            ruleset.get_play_type(
                state.quarter(3).event(NormalPlayOutcome(quarter=1, time=0, possession=teama, nonpossession=teamb))
            ),
        )
    def test_should_set_quarter(self):
        # Arrange & Act
        state = FootballSimulationGameState() \
                    .quarter(3)

        # Assert
        self.assertEqual(state.get_quarter(), 3)
    def test_should_set_team2(self):
        # Arrange & Act
        state = FootballSimulationGameState() \
                    .team2(FootballTeam('teamb'))

        # Assert
        self.assertEqual(state.get_team2().get_name(), 'teamb')
    def test_get_team_should_be_not_set_at_constructor(self):
        # Arrange
        state = FootballSimulationGameState()

        # Assert
        self.assertFalse(state.get_team1().is_set())
        self.assertFalse(state.get_team2().is_set())
    def test_should_set_time(self):
        # Arrange & Act
        state = FootballSimulationGameState() \
                    .time(138)

        # Assert
        self.assertEqual(state.get_time(), 138)
    def test_private_data_should_set_data_which_you_can_get(self):
        # Arrange & Act
        state = FootballSimulationGameState() \
                    .private('zoozoo')

        # Act
        self.assertTrue(state.has_private('zoozoo'))
        self.assertFalse(state.has_private('zoozoo-no'))
    def test_should_add_event(self):
        # Arrange & Act
        state = FootballSimulationGameState() \
                    .event(Event('my event 1')) \
                    .event(Event('second event'))

        # Assert
        self.assertEqual(state.get_events()[0].get_description(), 'my event 1')
        self.assertEqual(state.get_events()[1].get_description(), 'second event')
    def test_private_data_should_set_data_which_you_can_get2(self):
        # Arrange & Act
        state = FootballSimulationGameState() \
                    .private(('abcdef', 123, 'z'))

        # Act
        self.assertTrue(state.has_private(('abcdef', 123, 'z')))
        self.assertFalse(state.has_private(('abcdef', 123, 'no')))
        self.assertFalse(state.has_private(('abcdef', 321, 'z')))
        self.assertFalse(state.has_private(('fedcba', 123, 'z')))
    def test_should_set_possession(self):
        # Arrange & Act
        teama = FootballTeam('teama')
        teamb = FootballTeam('teamb')
        state = FootballSimulationGameState() \
                    .team1(teama) \
                    .team2(teamb) \
                    .possession(teama)

        # Assert
        self.assertEqual(state.get_possession(), teama)
        self.assertEqual(state.get_nonpossession(), teamb)
    def test_should_change_time_to_zero(self):
        # Arrange
        state = FootballSimulationGameState() \
                    .team1(FootballTeam('teama')) \
                    .team2(FootballTeam('teamb')) \
                    .quarter(1) \
                    .time(40000)

        # Act
        state = quarter_changed(state)

        # Assert
        self.assertEqual(0, state.get_time())
        self.assertEqual(2, state.get_quarter())
    def test_should_only_occur_once_a_quarter(self):
        # Arrange
        state = FootballSimulationGameState() \
                    .team1(FootballTeam('teama')) \
                    .team2(FootballTeam('teamb')) \
                    .quarter(2) \
                    .time(0)

        # Act
        state = quarter_banner(state)
        state = quarter_banner(state)

        # Assert
        types = [type(t) for t in state.get_events()]
        self.assertEqual(1, types.count(QuarterStartBannerEvent))
    def test_adding_client_should_add_callback_when_event_is_called(self):
        # Arrange
        mock_client = Mock(spec=FootballGameClient)

        state = FootballSimulationGameState() \
                    .team1(FootballTeam('teama')) \
                    .team2(FootballTeam('teamb')) \
                    .possession_index(0) \
                    .add_client(mock_client)

        # Act
        event = Event('my event 1')
        state.event(event)

        # Assert
        mock_client.on_event.assert_called_once_with(event)
    def test_get_events_should_be_zero_length_at_constructor(self):
        # Arrange
        state = FootballSimulationGameState()

        # Assert
        self.assertEqual(len(state.get_events()), 0)
    def test_get_view_only_state(self):
        # Arrange & Act
        teama = FootballTeam('teama')
        teamb = FootballTeam('teamb')
        ruleset = FootballRuleset().quarter_count(5) \
                                   .quarter_time(300)
        state = FootballSimulationGameState() \
                    .gameid(40) \
                    .team1(teama) \
                    .team2(teamb) \
                    .possession(teama) \
                    .ruleset(ruleset) \
                    .quarter(3) \
                    .time(100) \
                    .get_view_only_state()

        # Assert
        self.assertEqual(state.get_gameid(), 40)
        self.assertEqual(state.get_team1().get_name(), 'teama')
        self.assertEqual(state.get_team2().get_name(), 'teamb')
        self.assertEqual(state.get_possession().get_name(), 'teama')
        self.assertEqual(state.get_nonpossession().get_name(), 'teamb')
        self.assertFalse(hasattr(state.get_team1(), 'get_controller'))
        self.assertFalse(hasattr(state.get_team2(), 'get_controller'))
        self.assertFalse(hasattr(state.get_possession(), 'get_controller'))
        self.assertFalse(hasattr(state.get_nonpossession(), 'get_controller'))
        self.assertEqual(state.get_ruleset().get_quarter_count(), 5)
        self.assertEqual(state.get_quarter(), 3)
        self.assertEqual(state.get_ruleset().get_quarter_time(), 300)
        self.assertEqual(state.get_time(), 100)
        self.assertIsInstance(state, ViewOnlyFootballSimulationGameState)
    def test_should_set_gameid(self):
        # Arrange & Act
        state = FootballSimulationGameState().gameid(100)

        # Assert
        self.assertEqual(state.get_gameid(), 100)