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_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())