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