コード例 #1
0
class Test_bfh_events(BFHTestCase):
    def setUp(self):
        self.conf = CfgConfigParser()
        self.conf.loadFromString("""[configuration]""")
        self.parser = BfhParser(self.conf)
        self.parser.startup()
        # mock parser queueEvent method so we can make assertions on it later on
        self.parser.queueEvent = Mock(name="queueEvent method")
        self.joe = Mock(name="Joe", spec=Client)

        def event_repr(self):
            return "Event(%r, data=%r, client=%r, target=%r)" % (
                b3.events.eventManager.getName(
                    self.type), self.data, self.client, self.target)

        b3.events.Event.__repr__ = event_repr

    def test_cmd_rotateMap_generates_EVT_GAME_ROUND_END(self):
        # prepare fake BFH server responses
        def fake_write(data):
            if data == ('mapList.getMapIndices', ):
                return [0, 1]
            else:
                return []

        self.parser.write = Mock(side_effect=fake_write)
        self.parser.getFullMapRotationList = Mock(return_value=MapListBlock([
            '4', '3', 'MP_007', 'RushLarge0', '4', 'MP_011', 'RushLarge0', '4',
            'MP_012', 'SquadRush0', '4', 'MP_013', 'SquadRush0', '4'
        ]))
        self.parser.rotateMap()
        self.assertEqual(1, self.parser.queueEvent.call_count)
        self.assertEqual(self.parser.getEventID("EVT_GAME_ROUND_END"),
                         self.parser.queueEvent.call_args[0][0].type)
        self.assertIsNone(self.parser.queueEvent.call_args[0][0].data)

    def test_player_onChat_event_all(self):
        self.parser.getClient = Mock(return_value=self.joe)

        self.parser.routeFrostbitePacket(
            ['player.onChat', 'Cucurbitaceae', 'test all', 'all'])
        self.assertEqual(1, self.parser.queueEvent.call_count)

        event = self.parser.queueEvent.call_args[0][0]
        self.assertEqual("Say", self.parser.getEventName(event.type))
        self.assertEquals('test all', event.data)
        self.assertEqual(self.joe, event.client)

    def test_player_onChat_event_team(self):
        self.parser.getClient = Mock(return_value=self.joe)

        self.parser.routeFrostbitePacket(
            ['player.onChat', 'Cucurbitaceae', 'test team', 'team', '1'])
        self.assertEqual(1, self.parser.queueEvent.call_count)

        event = self.parser.queueEvent.call_args[0][0]
        self.assertEqual("Team Say", self.parser.getEventName(event.type))
        self.assertEquals('test team', event.data)
        self.assertEqual(self.joe, event.client)

    def test_player_onChat_event_squad(self):
        self.parser.getClient = Mock(return_value=self.joe)

        self.parser.routeFrostbitePacket([
            'player.onChat', 'Cucurbitaceae', 'test squad', 'squad', '1', '1'
        ])
        self.assertEqual(1, self.parser.queueEvent.call_count)

        event = self.parser.queueEvent.call_args[0][0]
        self.assertEqual("Squad Say", self.parser.getEventName(event.type))
        self.assertEquals('test squad', event.data)
        self.assertEqual(self.joe, event.client)

    def test_server_onLevelLoaded(self):
        # GIVEN
        when(self.parser).write(('serverInfo', )).thenReturn([
            '[WASP] Hotwire all maps -- Working kick on kills', '0', '14',
            'Hotwire0', 'MP_Eastside', '0', '2', '0', '0', '', 'true', 'true',
            'false', '428710', '6019', '108.61.98.177:40000', '', 'true', 'EU',
            'ams', 'NL', '0', 'IN_GAME'
        ])
        # WHEN
        with patch.object(self.parser, "warning") as warning_mock:
            self.parser.routeFrostbitePacket([
                'server.onLevelLoaded', 'MP_Glades', 'TeamDeathMatch0', '0',
                '1'
            ])
        # THEN
        event = self.parser.queueEvent.call_args[0][0]
        self.assertEqual('Game Warmup', self.parser.getEventName(event.type))
        self.assertEquals('MP_Glades', event.data)
        self.assertListEqual([], warning_mock.mock_calls)
コード例 #2
0
class Test_bfh_events(BFHTestCase):
    def setUp(self):
        self.conf = CfgConfigParser()
        self.conf.loadFromString("""[configuration]""")
        self.parser = BfhParser(self.conf)
        self.parser.startup()
        # mock parser queueEvent method so we can make assertions on it later on
        self.parser.queueEvent = Mock(name="queueEvent method")
        self.joe = Mock(name="Joe", spec=Client)

        def event_repr(self):
            return "Event(%r, data=%r, client=%r, target=%r)" % (b3.events.eventManager.getName(self.type), self.data,
                                                                 self.client, self.target)
        b3.events.Event.__repr__ = event_repr

    def test_cmd_rotateMap_generates_EVT_GAME_ROUND_END(self):
        # prepare fake BFH server responses
        def fake_write(data):
            if data == ('mapList.getMapIndices', ):
                return [0, 1]
            else:
                return []

        self.parser.write = Mock(side_effect=fake_write)
        self.parser.getFullMapRotationList = Mock(return_value=MapListBlock(
            ['4', '3',
             'MP_007', 'RushLarge0', '4',
             'MP_011', 'RushLarge0', '4',
             'MP_012', 'SquadRush0', '4',
             'MP_013', 'SquadRush0', '4']))
        self.parser.rotateMap()
        self.assertEqual(1, self.parser.queueEvent.call_count)
        self.assertEqual(self.parser.getEventID("EVT_GAME_ROUND_END"), self.parser.queueEvent.call_args[0][0].type)
        self.assertIsNone(self.parser.queueEvent.call_args[0][0].data)

    def test_player_onChat_event_all(self):
        self.parser.getClient = Mock(return_value=self.joe)

        self.parser.routeFrostbitePacket(['player.onChat', 'Cucurbitaceae', 'test all', 'all'])
        self.assertEqual(1, self.parser.queueEvent.call_count)

        event = self.parser.queueEvent.call_args[0][0]
        self.assertEqual("Say", self.parser.getEventName(event.type))
        self.assertEquals('test all', event.data)
        self.assertEqual(self.joe, event.client)

    def test_player_onChat_event_team(self):
        self.parser.getClient = Mock(return_value=self.joe)

        self.parser.routeFrostbitePacket(['player.onChat', 'Cucurbitaceae', 'test team', 'team', '1'])
        self.assertEqual(1, self.parser.queueEvent.call_count)

        event = self.parser.queueEvent.call_args[0][0]
        self.assertEqual("Team Say", self.parser.getEventName(event.type))
        self.assertEquals('test team', event.data)
        self.assertEqual(self.joe, event.client)

    def test_player_onChat_event_squad(self):
        self.parser.getClient = Mock(return_value=self.joe)

        self.parser.routeFrostbitePacket(['player.onChat', 'Cucurbitaceae', 'test squad', 'squad', '1', '1'])
        self.assertEqual(1, self.parser.queueEvent.call_count)

        event = self.parser.queueEvent.call_args[0][0]
        self.assertEqual("Squad Say", self.parser.getEventName(event.type))
        self.assertEquals('test squad', event.data)
        self.assertEqual(self.joe, event.client)

    def test_server_onLevelLoaded(self):
        # GIVEN
        when(self.parser).write(('serverInfo',)).thenReturn([
            '[WASP] Hotwire all maps -- Working kick on kills', '0', '14', 'Hotwire0', 'MP_Eastside', '0', '2', '0', '0',
            '', 'true', 'true', 'false', '428710', '6019', '108.61.98.177:40000', '', 'true', 'EU', 'ams', 'NL', '0',
            'IN_GAME'])
        # WHEN
        with patch.object(self.parser, "warning") as warning_mock:
            self.parser.routeFrostbitePacket(['server.onLevelLoaded', 'MP_Glades', 'TeamDeathMatch0', '0', '1'])
        # THEN
        event = self.parser.queueEvent.call_args[0][0]
        self.assertEqual('Game Warmup', self.parser.getEventName(event.type))
        self.assertEquals('MP_Glades', event.data)
        self.assertListEqual([], warning_mock.mock_calls)