class mixin_cmd_nuke(object): def setUp(self): super(mixin_cmd_nuke, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] panuke-nuke: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.console.say = Mock() self.console.saybig = Mock() self.console.write = Mock() self.moderator.connects("2") def tearDown(self): super(mixin_cmd_nuke, self).tearDown() self.sleep_patcher.stop() def test_no_argument(self): self.moderator.message_history = [] self.moderator.says("!nuke") self.assertEqual(['Invalid data, try !help panuke'], self.moderator.message_history) self.console.write.assert_has_calls([]) def test_unknown_player(self): self.moderator.message_history = [] self.moderator.says("!nuke f00") self.assertEqual(['No players found matching f00'], self.moderator.message_history) self.console.write.assert_has_calls([]) def test_joe(self): self.joe.connects('3') self.moderator.message_history = [] self.moderator.says("!nuke joe") self.assertEqual([], self.moderator.message_history) self.assertEqual([], self.joe.message_history) self.console.write.assert_has_calls([call('nuke 3')]) def test_joe_multi(self): def _start_new_thread(function, args): function(*args) with patch.object(thread, 'start_new_thread', wraps=_start_new_thread): self.joe.connects('3') self.moderator.message_history = [] self.moderator.says("!nuke joe 3") self.assertEqual([], self.moderator.message_history) self.assertEqual([], self.joe.message_history) self.console.write.assert_has_calls([call('nuke 3'), call('nuke 3'), call('nuke 3')])
class Test_cmd_lms(Iourt42TestCase): def setUp(self): super(Test_cmd_lms, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] palms-lms: 20 ; change game type to Last Man Standing """) self.p = PoweradminurtPlugin(self.console, self.conf) when(self.console).getCvar('timelimit').thenReturn(Cvar('timelimit', value=20)) when(self.console).getCvar('g_maxGameClients').thenReturn(Cvar('g_maxGameClients', value=16)) when(self.console).getCvar('sv_maxclients').thenReturn(Cvar('sv_maxclients', value=16)) when(self.console).getCvar('sv_privateClients').thenReturn(Cvar('sv_privateClients', value=0)) when(self.console).getCvar('g_allowvote').thenReturn(Cvar('g_allowvote', value=0)) self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.moderator.connects("2") def test_nominal(self): self.moderator.message_history = [] self.moderator.says("!lms") self.console.write.assert_has_calls([call('g_gametype 1')]) self.assertEqual(['game type changed to Last Man Standing'], self.moderator.message_history)
def setUp(self): super(Test_cmd_pagear, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pagear-gear: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) when(self.console).getCvar('timelimit').thenReturn(Cvar('timelimit', value=20)) when(self.console).getCvar('g_maxGameClients').thenReturn(Cvar('g_maxGameClients', value=16)) when(self.console).getCvar('sv_maxclients').thenReturn(Cvar('sv_maxclients', value=16)) when(self.console).getCvar('sv_privateClients').thenReturn(Cvar('sv_privateClients', value=0)) when(self.console).getCvar('g_allowvote').thenReturn(Cvar('g_allowvote', value=0)) when(self.console).getCvar('g_modversion').thenReturn(Cvar('g_modversion', value="4.2.018")) self.given_forbidden_weapon_are(G_NONE) self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.setCvar_patcher = patch.object(self.console, 'setCvar') self.setCvar_mock = self.setCvar_patcher.start() self.superadmin.connects("2")
def setUp(self): super(Test_headshotcounter, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [headshotcounter] # enable the headshot counter? hs_enable: True # reset counts? Options: no / map / round reset_vars: no # set broadcast to True if you want the counter to appear in the upper left, False is in chatarea broadcast: True # Announce every single headshot? announce_all: True # Announce percentages (after 5 headshots) announce_percentages: True # Only show percentages larger than next threshold percent_min: 10 # Advise victims to wear a helmet? warn_helmet: True # After how many headshots? warn_helmet_nr: 7 # Advise victims to wear kevlar? warn_kevlar: True # After how many torso hits? warn_kevlar_nr: 50 """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock()
def setUp(self): super(mixin_conf, self).setUp() self.conf = CfgConfigParser() self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() logger = logging.getLogger('output') logger.setLevel(logging.INFO)
class Test_cmd_goto(Iourt42TestCase): def setUp(self): super(Test_cmd_goto, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] paskins-skins: 20 ; set the use of client skins <on/off> """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.moderator.connects("2") def test_missing_parameter(self): self.moderator.message_history = [] self.moderator.says("!skins") self.assertListEqual(["Invalid or missing data, try !help paskins"], self.moderator.message_history) def test_junk(self): self.moderator.message_history = [] self.moderator.says("!skins qsdf") self.assertListEqual(["Invalid or missing data, try !help paskins"], self.moderator.message_history) def test_on(self): self.moderator.says("!skins on") self.console.write.assert_has_calls([call('set g_skins "1"')]) def test_off(self): self.moderator.says("!skins off") self.console.write.assert_has_calls([call('set g_skins "0"')])
class mixin_cmd_version(object): def setUp(self): super(mixin_cmd_version, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] paversion-version: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.console.say = Mock() self.console.saybig = Mock() self.console.write = Mock() self.moderator.connects("2") def tearDown(self): super(mixin_cmd_version, self).tearDown() self.sleep_patcher.stop() def test_nominal(self): self.moderator.message_history = [] self.moderator.says("!version") self.assertEqual(['I am PowerAdminUrt version %s by %s' % (plugin_version, plugin_author)], self.moderator.message_history)
def setUp(self): super(Test_cmd_ident, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] paident-id: 20 [special] paident_full_level: 40 """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.parser_conf._settings.update( {'b3': { "time_zone": "GMT", "time_format": "%I:%M%p %Z %m/%d/%y" }}) self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.moderator.connects("2") self.moderator.message_history = []
class mixin_cmd_pasetnextmap(object): def setUp(self): super(mixin_cmd_pasetnextmap, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pasetnextmap-snmap: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) when(self.console).getCvar('timelimit').thenReturn(Cvar('timelimit', value=20)) when(self.console).getCvar('g_maxGameClients').thenReturn(Cvar('g_maxGameClients', value=16)) when(self.console).getCvar('sv_maxclients').thenReturn(Cvar('sv_maxclients', value=16)) when(self.console).getCvar('sv_privateClients').thenReturn(Cvar('sv_privateClients', value=0)) when(self.console).getCvar('g_allowvote').thenReturn(Cvar('g_allowvote', value=0)) self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.console.say = Mock() self.console.saybig = Mock() self.console.write = Mock() self.moderator.connects("2") def tearDown(self): super(mixin_cmd_pasetnextmap, self).tearDown() self.sleep_patcher.stop() def test_missing_parameter(self): self.moderator.clearMessageHistory() self.moderator.says("!snmap") self.assertEqual(['Invalid or missing data, try !help setnextmap'], self.moderator.message_history) def test_existing_map(self): # GIVEN when(self.console).getMapsSoundingLike('f00').thenReturn('f00') # WHEN self.moderator.clearMessageHistory() self.moderator.says("!snmap f00") # THEN verify(self.console).getMapsSoundingLike('f00') self.assertEqual(['nextmap set to f00'], self.moderator.message_history) def test_suggestions(self): # GIVEN when(self.console).getMapsSoundingLike('f00').thenReturn(['f001', 'foo2']) # WHEN self.moderator.clearMessageHistory() self.moderator.says("!snmap f00") # THEN verify(self.console).getMapsSoundingLike('f00') self.assertEqual(['do you mean : f001, foo2 ?'], self.moderator.message_history)
class Test_cmd_ident(Iourt41TestCase): def setUp(self): super(Test_cmd_ident, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] paident-id: 20 [special] paident_full_level: 40 """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.parser_conf._settings.update({'b3': {"time_zone": "GMT", "time_format": "%I:%M%p %Z %m/%d/%y"}}) self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.moderator.connects("2") self.moderator.message_history = [] def test_no_parameter(self): # WHEN self.moderator.says("!id") # THEN self.assertListEqual(["Your id is @2"], self.moderator.message_history) def test_junk(self): # WHEN self.moderator.says("!id qsdfsqdq sqfd qf") # THEN self.assertListEqual(["No players found matching qsdfsqdq"], self.moderator.message_history) def test_nominal_under_full_level(self): # GIVEN self.joe.pbid = "joe_pbid" self.joe.connects('3') # WHEN with patch('time.time', return_value=0.0) as time_mock: self.moderator.says("!id joe") # THEN self.assertListEqual(['12:00AM GMT 01/01/70 @3 Joe'], self.moderator.message_history) def test_nominal_above_full_level(self): # GIVEN self.joe.pbid = "joe_pbid" self.joe.connects('3') self.joe.timeAdd = 90*60.0 self.superadmin.connects('1') # WHEN with patch('time.time', return_value=180*60.0): self.superadmin.says("!id joe") # THEN self.assertListEqual(['03:00AM GMT 01/01/70 @3 Joe 01:30AM GMT 01/01/70'], self.superadmin.message_history)
class mixin_cmd_pasetnextmap(object): def setUp(self): super(mixin_cmd_pasetnextmap, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pasetnextmap-snmap: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.console.say = Mock() self.console.saybig = Mock() self.console.write = Mock() self.moderator.connects("2") def tearDown(self): super(mixin_cmd_pasetnextmap, self).tearDown() self.sleep_patcher.stop() def test_missing_parameter(self): self.moderator.clearMessageHistory() self.moderator.says("!snmap") self.assertEqual(['Invalid or missing data, try !help pasetnextmap'], self.moderator.message_history) def test_existing_map(self): # GIVEN when(self.console).getMapsSoundingLike('f00').thenReturn('f00') # WHEN self.moderator.clearMessageHistory() self.moderator.says("!snmap f00") # THEN verify(self.console).getMapsSoundingLike('f00') self.assertEqual(['nextmap set to f00'], self.moderator.message_history) def test_suggestions(self): # GIVEN when(self.console).getMapsSoundingLike('f00').thenReturn( ['f001', 'foo2']) # WHEN self.moderator.clearMessageHistory() self.moderator.says("!snmap f00") # THEN verify(self.console).getMapsSoundingLike('f00') self.assertEqual(['do you mean : f001, foo2 ?'], self.moderator.message_history)
class Test_cmd_captain(Iourt42TestCase): def setUp(self): super(Test_cmd_captain, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pacaptain-captain: 40 ; set the the given client as the captain for its team """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.admin.connects("2") self.moderator.connects("3") def test_match_mode_deactivated(self): self.p._matchmode = False self.admin.message_history = [] self.admin.says("!captain") self.assertListEqual( ["!pacaptain command is available only in match mode"], self.admin.message_history) def test_client_spectator(self): self.p._matchmode = True self.admin.message_history = [] self.admin.team = TEAM_SPEC self.admin.says("!captain") self.assertListEqual( ["Level-40-Admin is a spectator! - Can't set captain status"], self.admin.message_history) def test_client_with_no_parameters(self): self.p._matchmode = True self.admin.message_history = [] self.admin.team = TEAM_RED self.admin.says("!captain") self.console.write.assert_has_calls( [call('forcecaptain %s' % self.admin.cid)]) def test_client_with_parameters(self): self.p._matchmode = True self.admin.message_history = [] self.admin.team = TEAM_RED self.moderator.message_history = [] self.moderator.team = TEAM_BLUE self.admin.says("!captain 3") self.console.write.assert_has_calls( [call('forcecaptain %s' % self.moderator.cid)]) self.assertListEqual( ["You were set as captain for the BLUE team by the Admin"], self.moderator.message_history)
class mixin_conf(object): def setUp(self): super(mixin_conf, self).setUp() self.conf = CfgConfigParser() self.p = PoweradminurtPlugin(self.console, self.conf) # when starting the PoweradminurtPlugin expects the game server to provide a few cvar values when(self.console).getCvar('timelimit').thenReturn(Cvar('timelimit', value=20)) when(self.console).getCvar('g_maxGameClients').thenReturn(Cvar('g_maxGameClients', value=16)) when(self.console).getCvar('sv_maxclients').thenReturn(Cvar('sv_maxclients', value=16)) when(self.console).getCvar('sv_privateClients').thenReturn(Cvar('sv_privateClients', value=0)) when(self.console).getCvar('g_allowvote').thenReturn(Cvar('g_allowvote', value=0)) logger = logging.getLogger('output') logger.setLevel(logging.INFO) def test_empty_config(self): self.conf.loadFromString(""" [foo] """) self.p.onLoadConfig() # should not raise any error ####################################### matchmode ####################################### def test_matchmode__plugins_disable(self): # empty self.conf.loadFromString(""" [matchmode] plugins_disable: """) self.p.LoadMatchMode() self.assertEqual([], self.p.match_plugin_disable) # one element self.conf.loadFromString(""" [matchmode] plugins_disable: foo """) self.p.LoadMatchMode() self.assertEqual(['foo'], self.p.match_plugin_disable) # many self.conf.loadFromString(""" [matchmode] plugins_disable: foo, bar """) self.p.LoadMatchMode() self.assertEqual(['foo', 'bar'], self.p.match_plugin_disable)
class mixin_cmd_paset(object): def setUp(self): super(mixin_cmd_paset, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString( """ [commands] paset: 20 """ ) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, "sleep") self.sleep_patcher.start() self.setCvar_patcher = patch.object(self.console, "setCvar") self.setCvar_mock = self.setCvar_patcher.start() self.moderator.connects("2") def assert_setCvar_calls(self, expected_calls): self.assertListEqual(expected_calls, self.setCvar_mock.mock_calls) def tearDown(self): super(mixin_cmd_paset, self).tearDown() self.sleep_patcher.stop() self.setCvar_patcher.stop() def test_nominal(self): # WHEN self.moderator.says("!paset sv_foo bar") # THEN self.assert_setCvar_calls([call("sv_foo", "bar")]) self.assertListEqual([], self.moderator.message_history) def test_no_parameter(self): # WHEN self.moderator.says("!paset") # THEN self.assert_setCvar_calls([]) self.assertListEqual(["Invalid or missing data, try !help paset"], self.moderator.message_history) def test_no_value(self): # WHEN self.moderator.says("!paset sv_foo") # THEN self.assert_setCvar_calls([call("sv_foo", "")]) self.assertListEqual([], self.moderator.message_history)
class mixin_cmd_paset(object): def setUp(self): super(mixin_cmd_paset, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] paset: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.setCvar_patcher = patch.object(self.console, 'setCvar') self.setCvar_mock = self.setCvar_patcher.start() self.moderator.connects("2") def assert_setCvar_calls(self, expected_calls): self.assertListEqual(expected_calls, self.setCvar_mock.mock_calls) def tearDown(self): super(mixin_cmd_paset, self).tearDown() self.sleep_patcher.stop() self.setCvar_patcher.stop() def test_nominal(self): # WHEN self.moderator.says('!paset sv_foo bar') # THEN self.assert_setCvar_calls([call('sv_foo', 'bar')]) self.assertListEqual([], self.moderator.message_history) def test_no_parameter(self): # WHEN self.moderator.says('!paset') # THEN self.assert_setCvar_calls([]) self.assertListEqual(['Invalid or missing data, try !help paset'], self.moderator.message_history) def test_no_value(self): # WHEN self.moderator.says('!paset sv_foo') # THEN self.assert_setCvar_calls([call('sv_foo', '')]) self.assertListEqual([], self.moderator.message_history)
def setUp(self): super(Test_cmd_swap, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] paswap-swap: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.admin.connects("2") self.moderator.connects("3")
def setUp(self): super(Test_cmd_captain, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pacaptain-captain: 40 ; set the the given client as the captain for its team """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.admin.connects("2") self.moderator.connects("3")
class Test_cmd_kill(Iourt42TestCase): def setUp(self): super(Test_cmd_kill, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pakill-kill: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) when(self.console).getCvar('timelimit').thenReturn(Cvar('timelimit', value=20)) when(self.console).getCvar('g_maxGameClients').thenReturn(Cvar('g_maxGameClients', value=16)) when(self.console).getCvar('sv_maxclients').thenReturn(Cvar('sv_maxclients', value=16)) when(self.console).getCvar('sv_privateClients').thenReturn(Cvar('sv_privateClients', value=0)) when(self.console).getCvar('g_allowvote').thenReturn(Cvar('g_allowvote', value=0)) self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.moderator.connects("2") def tearDown(self): super(Test_cmd_kill, self).tearDown() def test_no_argument(self): self.moderator.message_history = [] self.moderator.says("!kill") self.assertEqual(['Invalid data, try !help panuke'], self.moderator.message_history) self.console.write.assert_has_calls([]) def test_unknown_player(self): self.moderator.message_history = [] self.moderator.says("!kill f00") self.assertEqual(['No players found matching f00'], self.moderator.message_history) self.console.write.assert_has_calls([]) def test_joe(self): self.joe.connects('3') self.moderator.message_history = [] self.moderator.says("!kill joe") self.assertEqual([], self.moderator.message_history) self.assertEqual([], self.joe.message_history) self.console.write.assert_has_calls([call('smite 3')])
def setUp(self): super(Test_cmd_pagear, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pagear-gear: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) when(self.console).getCvar('timelimit').thenReturn(Cvar('timelimit', value=20)) when(self.console).getCvar('g_maxGameClients').thenReturn(Cvar('g_maxGameClients', value=16)) when(self.console).getCvar('sv_maxclients').thenReturn(Cvar('sv_maxclients', value=16)) when(self.console).getCvar('sv_privateClients').thenReturn(Cvar('sv_privateClients', value=0)) when(self.console).getCvar('g_allowvote').thenReturn(Cvar('g_allowvote', value=0)) when(self.console).getCvar('g_modversion').thenReturn(Cvar('g_modversion', value="4.1")) self.given_forbidden_weapon_are(G_NONE) self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.setCvar_patcher = patch.object(self.console, 'setCvar') self.setCvar_mock = self.setCvar_patcher.start() self.superadmin.connects("2")
def setUp(self): super(mixin_name_checker, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [namechecker] checkdupes: True checkunknown: True checkbadnames: True """) self.p = PoweradminurtPlugin(self.console, self.conf) when(self.console).getCvar('timelimit').thenReturn(Cvar('timelimit', value=20)) when(self.console).getCvar('g_maxGameClients').thenReturn(Cvar('g_maxGameClients', value=16)) when(self.console).getCvar('sv_maxclients').thenReturn(Cvar('sv_maxclients', value=16)) when(self.console).getCvar('sv_privateClients').thenReturn(Cvar('sv_privateClients', value=0)) when(self.console).getCvar('g_allowvote').thenReturn(Cvar('g_allowvote', value=0)) self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.console.say = Mock() self.console.write = Mock() self.p._ignoreTill = 0
def setUp(self): super(mixin_cmd_pasetnextmap, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pasetnextmap-snmap: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) when(self.console).getCvar('timelimit').thenReturn(Cvar('timelimit', value=20)) when(self.console).getCvar('g_maxGameClients').thenReturn(Cvar('g_maxGameClients', value=16)) when(self.console).getCvar('sv_maxclients').thenReturn(Cvar('sv_maxclients', value=16)) when(self.console).getCvar('sv_privateClients').thenReturn(Cvar('sv_privateClients', value=0)) when(self.console).getCvar('g_allowvote').thenReturn(Cvar('g_allowvote', value=0)) self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.console.say = Mock() self.console.saybig = Mock() self.console.write = Mock() self.moderator.connects("2")
def setUp(self): super(Test_cmd_jump, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pajump-jump: 20 ; change game type to Jump """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.moderator.connects("2")
def setUp(self): super(Test_cmd_goto, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] paskins-skins: 20 ; set the use of client skins <on/off> """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.moderator.connects("2")
def setUp(self): super(Test_cmd_funstuff, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pastamina-stamina: 20 ; set the stamina behavior <default/regain/infinite> """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.moderator.connects("2")
class Test_cmd_captain(Iourt42TestCase): def setUp(self): super(Test_cmd_captain, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pacaptain-captain: 40 ; set the the given client as the captain for its team """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.admin.connects("2") self.moderator.connects("3") def test_match_mode_deactivated(self): self.p._matchmode = False self.admin.message_history = [] self.admin.says("!captain") self.assertListEqual(["!pacaptain command is available only in match mode"], self.admin.message_history) def test_client_spectator(self): self.p._matchmode = True self.admin.message_history = [] self.admin.team = TEAM_SPEC self.admin.says("!captain") self.assertListEqual(["Level-40-Admin is a spectator! - Can't set captain status"], self.admin.message_history) def test_client_with_no_parameters(self): self.p._matchmode = True self.admin.message_history = [] self.admin.team = TEAM_RED self.admin.says("!captain") self.console.write.assert_has_calls([call('forcecaptain %s' % self.admin.cid)]) def test_client_with_parameters(self): self.p._matchmode = True self.admin.message_history = [] self.admin.team = TEAM_RED self.moderator.message_history = [] self.moderator.team = TEAM_BLUE self.admin.says("!captain 3") self.console.write.assert_has_calls([call('forcecaptain %s' % self.moderator.cid)]) self.assertListEqual(["You were set as captain for the BLUE team by the Admin"], self.moderator.message_history)
def setUp(self): super(mixin_cmd_paset, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] paset: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.setCvar_patcher = patch.object(self.console, 'setCvar') self.setCvar_mock = self.setCvar_patcher.start() self.moderator.connects("2")
def setUp(self): super(Test_radio_spam_protection, self).setUp() self.conf = CfgConfigParser() self.p = PoweradminurtPlugin(self.console, self.conf) when(self.console).getCvar('timelimit').thenReturn(Cvar('timelimit', value=20)) when(self.console).getCvar('g_maxGameClients').thenReturn(Cvar('g_maxGameClients', value=16)) when(self.console).getCvar('sv_maxclients').thenReturn(Cvar('sv_maxclients', value=16)) when(self.console).getCvar('sv_privateClients').thenReturn(Cvar('sv_privateClients', value=0)) when(self.console).getCvar('g_allowvote').thenReturn(Cvar('g_allowvote', value=0))
class Test_cmd_kill(Iourt42TestCase): def setUp(self): super(Test_cmd_kill, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString( """ [commands] pakill-kill: 20 """ ) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.moderator.connects("2") def tearDown(self): super(Test_cmd_kill, self).tearDown() def test_no_argument(self): self.moderator.message_history = [] self.moderator.says("!kill") self.assertEqual(["Invalid data, try !help pakill"], self.moderator.message_history) self.console.write.assert_has_calls([]) def test_unknown_player(self): self.moderator.message_history = [] self.moderator.says("!kill f00") self.assertEqual(["No players found matching f00"], self.moderator.message_history) self.console.write.assert_has_calls([]) def test_joe(self): self.joe.connects("3") self.moderator.message_history = [] self.moderator.says("!kill joe") self.assertEqual([], self.moderator.message_history) self.assertEqual([], self.joe.message_history) self.console.write.assert_has_calls([call("smite 3")])
def setUp(self): super(mixin_cmd_pasetnextmap, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pasetnextmap-snmap: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.console.say = Mock() self.console.saybig = Mock() self.console.write = Mock() self.moderator.connects("2")
class Test_cmd_funstuff(Iourt42TestCase): def setUp(self): super(Test_cmd_funstuff, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pastamina-stamina: 20 ; set the stamina behavior <default/regain/infinite> """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.moderator.connects("2") def test_missing_parameter(self): self.moderator.message_history = [] self.moderator.says("!stamina") self.assertListEqual(["Invalid or missing data, try !help pastamina"], self.moderator.message_history) def test_junk(self): self.moderator.message_history = [] self.moderator.says("!stamina qsdf") self.assertListEqual(["Invalid or missing data, try !help pastamina"], self.moderator.message_history) def test_default(self): self.moderator.says("!stamina default") self.console.write.assert_has_calls([call('set g_stamina "0"')]) def test_regain(self): self.moderator.says("!stamina regain") self.console.write.assert_has_calls([call('set g_stamina "1"')]) def test_infinite(self): self.moderator.says("!stamina infinite") self.console.write.assert_has_calls([call('set g_stamina "2"')])
def setUp(self): super(mixin_name_checker, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [namechecker] checkdupes: True checkunknown: True checkbadnames: True """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.console.say = Mock() self.console.write = Mock() self.p._ignoreTill = 0
class Test_cmd_swap(Iourt42TestCase): def setUp(self): super(Test_cmd_swap, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] paswap-swap: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.admin.connects("2") self.moderator.connects("3") def test_plugin_using_overridden_command_method(self): self.admin.team = TEAM_RED self.moderator.team = TEAM_BLUE self.admin.says("!swap 2 3") self.console.write.assert_has_calls([call('swap %s %s' % (self.admin.cid, self.moderator.cid))])
class Test_cmd_swap(Iourt42TestCase): def setUp(self): super(Test_cmd_swap, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] paswap-swap: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.admin.connects("2") self.moderator.connects("3") def test_plugin_using_overridden_command_method(self): self.admin.team = TEAM_RED self.moderator.team = TEAM_BLUE self.admin.says("!swap 2 3") self.console.write.assert_has_calls( [call('swap %s %s' % (self.admin.cid, self.moderator.cid))])
def setUp(self): super(mixin_conf, self).setUp() self.conf = CfgConfigParser() self.p = PoweradminurtPlugin(self.console, self.conf) # when starting the PoweradminurtPlugin expects the game server to provide a few cvar values when(self.console).getCvar('timelimit').thenReturn(Cvar('timelimit', value=20)) when(self.console).getCvar('g_maxGameClients').thenReturn(Cvar('g_maxGameClients', value=16)) when(self.console).getCvar('sv_maxclients').thenReturn(Cvar('sv_maxclients', value=16)) when(self.console).getCvar('sv_privateClients').thenReturn(Cvar('sv_privateClients', value=0)) when(self.console).getCvar('g_allowvote').thenReturn(Cvar('g_allowvote', value=0)) logger = logging.getLogger('output') logger.setLevel(logging.INFO)
class mixin_cmd_version(object): def setUp(self): super(mixin_cmd_version, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] paversion-version: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) when(self.console).getCvar('timelimit').thenReturn(Cvar('timelimit', value=20)) when(self.console).getCvar('g_maxGameClients').thenReturn(Cvar('g_maxGameClients', value=16)) when(self.console).getCvar('sv_maxclients').thenReturn(Cvar('sv_maxclients', value=16)) when(self.console).getCvar('sv_privateClients').thenReturn(Cvar('sv_privateClients', value=0)) when(self.console).getCvar('g_allowvote').thenReturn(Cvar('g_allowvote', value=0)) self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.console.say = Mock() self.console.saybig = Mock() self.console.write = Mock() self.moderator.connects("2") def tearDown(self): super(mixin_cmd_version, self).tearDown() self.sleep_patcher.stop() def test_nominal(self): self.moderator.message_history = [] self.moderator.says("!version") self.assertEqual(['I am PowerAdminUrt version %s by %s' % (plugin_version, plugin_author)], self.moderator.message_history)
class Test_cmd_jump(Iourt42TestCase): def setUp(self): super(Test_cmd_jump, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pajump-jump: 20 ; change game type to Jump """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() self.moderator.connects("2") def test_nominal(self): self.moderator.message_history = [] self.moderator.says("!jump") self.console.write.assert_has_calls([call('set g_gametype "9"')]) self.assertEqual(['game type changed to Jump'], self.moderator.message_history)
class mixin_conf(object): def setUp(self): super(mixin_conf, self).setUp() self.conf = CfgConfigParser() self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() logger = logging.getLogger('output') logger.setLevel(logging.INFO) def test_empty_config(self): self.conf.loadFromString(""" [foo] """) self.p.onLoadConfig() # should not raise any error ####################################### matchmode ####################################### def test_matchmode__plugins_disable(self): # empty self.conf.loadFromString(""" [matchmode] plugins_disable: """) self.p.loadMatchMode() self.assertEqual([], self.p._match_plugin_disable) # one element self.conf.loadFromString(""" [matchmode] plugins_disable: foo """) self.p.loadMatchMode() self.assertEqual(['foo'], self.p._match_plugin_disable) # many self.conf.loadFromString(""" [matchmode] plugins_disable: foo, bar """) self.p.loadMatchMode() self.assertEqual(['foo', 'bar'], self.p._match_plugin_disable)
def setUp(self): super(mixin_cmd_paset, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString( """ [commands] paset: 20 """ ) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, "sleep") self.sleep_patcher.start() self.setCvar_patcher = patch.object(self.console, "setCvar") self.setCvar_mock = self.setCvar_patcher.start() self.moderator.connects("2")
def setUp(self): super(mixin_cmd_version, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] paversion-version: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.console.say = Mock() self.console.saybig = Mock() self.console.write = Mock() self.moderator.connects("2")
class mixin_name_checker(object): def setUp(self): super(mixin_name_checker, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [namechecker] checkdupes: True checkunknown: True checkbadnames: True """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.console.say = Mock() self.console.write = Mock() self.p._ignoreTill = 0 def tearDown(self): super(mixin_name_checker, self).tearDown() self.sleep_patcher.stop() def test_checkdupes_no_dup(self): # GIVEN p1 = FakeClient(self.console, name="theName", guid="p1guid") p1.warn = Mock() p1.connects("1") p2 = FakeClient(self.console, name="anotherName", guid="p2guid") p2.warn = Mock() p2.connects("2") # WHEN self.assertFalse(p1.name == p2.name) self.p.namecheck() # THEN self.assertFalse(p1.warn.called) self.assertFalse(p2.warn.called) def test_checkdupes_with_dup(self): # GIVEN p1 = FakeClient(self.console, name="sameName", guid="p1guid") p1.warn = Mock() p1.connects("1") p2 = FakeClient(self.console, name="sameName", guid="p2guid") p2.warn = Mock() p2.connects("2") # WHEN self.assertTrue(p1.name == p2.name) self.p.namecheck() # THEN p1.warn.assert_has_calls([call(ANY, ANY, 'badname', None, '')]) p2.warn.assert_has_calls([call(ANY, ANY, 'badname', None, '')]) def test_checkdupes_with_player_reconnecting(self): # GIVEN p1 = FakeClient(self.console, name="sameName", guid="p1guid") p1.warn = Mock() p1.connects("1") # WHEN p1.disconnects() p1.connects("2") self.p.namecheck() # THEN self.assertFalse(p1.warn.called) def test_checkunknown(self): # GIVEN p1 = FakeClient(self.console, name="New UrT Player", guid="p1guid") p1.warn = Mock() p1.connects("1") # WHEN self.p.namecheck() # THEN p1.warn.assert_has_calls([call(ANY, ANY, 'badname', None, '')]) def test_checkbadnames(self): # GIVEN p1 = FakeClient(self.console, name="all", guid="p1guid") p1.warn = Mock() p1.connects("1") # WHEN self.p.namecheck() # THEN p1.warn.assert_has_calls([call(ANY, ANY, 'badname', None, '')])
class Test_cmd_pagear(Iourt42TestCase): def setUp(self): super(Test_cmd_pagear, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [commands] pagear-gear: 20 """) self.p = PoweradminurtPlugin(self.console, self.conf) when(self.console).getCvar('timelimit').thenReturn(Cvar('timelimit', value=20)) when(self.console).getCvar('g_maxGameClients').thenReturn(Cvar('g_maxGameClients', value=16)) when(self.console).getCvar('sv_maxclients').thenReturn(Cvar('sv_maxclients', value=16)) when(self.console).getCvar('sv_privateClients').thenReturn(Cvar('sv_privateClients', value=0)) when(self.console).getCvar('g_allowvote').thenReturn(Cvar('g_allowvote', value=0)) when(self.console).getCvar('g_modversion').thenReturn(Cvar('g_modversion', value="4.2.018")) self.given_forbidden_weapon_are(G_NONE) self.p.onLoadConfig() self.p.onStartup() self.sleep_patcher = patch.object(time, 'sleep') self.sleep_patcher.start() self.setCvar_patcher = patch.object(self.console, 'setCvar') self.setCvar_mock = self.setCvar_patcher.start() self.superadmin.connects("2") def tearDown(self): super(Test_cmd_pagear, self).tearDown() self.sleep_patcher.stop() self.setCvar_patcher.stop() def given_forbidden_weapon_are(self, g_gear_value): when(self.console).getCvar('g_gear').thenReturn(Cvar('g_gear', value=str(g_gear_value))) def assert_set_gear(self, expected_gear_value, fail_message=None): self.assertListEqual([call('g_gear', str(expected_gear_value))], self.setCvar_mock.mock_calls, fail_message) def test_no_parameter(self): # GIVEN self.given_forbidden_weapon_are(G_NONE) self.p.onStartup() # WHEN self.superadmin.message_history = [] self.superadmin.says("!gear") # THEN self.assertListEqual(["current gear: med:ON, vest:ON, ak:ON, de:ON, psg:ON, nvg:ON, hk:ON, mac:ON, mp5:ON, las:ON, ber:ON, ump:ON, g36:ON, neg:ON, glo:ON, smo:ON, m4:ON, lr:ON, hel:ON, spas:ON, sr8:ON, he:ON, colt:ON, ammo:ON, sil:ON", "Usage: !pagear [+/-][med|vest|ak|de|psg|nvg|hk|mac|mp5|las|ber|ump|g36|neg|glo|smo|m4|lr|hel|spas|sr8|he|colt|ammo|sil]", "Load weapon groups: !pagear [+/-][all_nades|all_auto|all_pistols|all_snipers]", "Load defaults: !pagear [reset|all|none]"], self.superadmin.message_history) def test_reset(self): # GIVEN self.given_forbidden_weapon_are("1234") self.p.onStartup() # WHEN self.superadmin.says("!gear reset") # THEN self.assert_set_gear('1234') def test_all(self): # WHEN self.superadmin.says("!gear all") # THEN self.assert_set_gear(G_NONE) def test_none(self): # WHEN self.superadmin.says("!gear none") # THEN self.assert_set_gear(G_ALL) def test_unknown_weapon(self): # WHEN self.superadmin.says("!gear +f00") # THEN self.assertListEqual([], self.setCvar_mock.mock_calls) self.assertListEqual([ "could not recognize weapon/item 'f00'", "gear not changed" ], self.superadmin.message_history) def test_disallow_negev(self): # GIVEN self.given_forbidden_weapon_are(G_NONE) # WHEN self.superadmin.says("!gear -neg") # THEN self.assert_set_gear(G_NEGEV_LMG) def test_allow_negev_short(self): # GIVEN self.given_forbidden_weapon_are(G_ALL) # WHEN self.superadmin.says("!gear +neg") # THEN self.assert_set_gear(all_gear_but(G_NEGEV_LMG)) def test_allow_negev_long(self): # GIVEN self.given_forbidden_weapon_are(G_ALL) # WHEN self.superadmin.says("!gear +negev") # THEN self.assert_set_gear(all_gear_but(G_NEGEV_LMG)) def test_allow_negev_long_spaced(self): # GIVEN self.given_forbidden_weapon_are(G_ALL) # WHEN self.superadmin.says("!gear + negev") # THEN self.assert_set_gear(all_gear_but(G_NEGEV_LMG)) def test_disallow(self): for weapon_name, weapon_code in weapon_codes: # GIVEN self.setCvar_mock.reset_mock() self.given_forbidden_weapon_are(G_NONE) # WHEN self.superadmin.says("!gear -%s" % weapon_name) # THEN self.assert_set_gear(weapon_code, weapon_name) def test_allow(self): for weapon_name, weapon_code in weapon_codes: # GIVEN self.setCvar_mock.reset_mock() self.given_forbidden_weapon_are(G_ALL) # WHEN self.superadmin.says("!gear +%s" % weapon_name) # THEN self.assert_set_gear(all_gear_but(weapon_code), weapon_name) def test_allow_group_nades(self): # GIVEN self.given_forbidden_weapon_are(G_ALL) # WHEN self.superadmin.says("!gear +all_nades") # THEN self.assert_set_gear(all_gear_but(G_SMOKE_GRENADE, G_HE_GRENADE)) def test_disallow_group_nades(self): # GIVEN self.given_forbidden_weapon_are(G_NONE) # WHEN self.superadmin.says("!gear -all_nades") # THEN self.assert_set_gear(only_gear(G_SMOKE_GRENADE, G_HE_GRENADE)) def test_disallow_group_nades_spaced(self): # GIVEN self.given_forbidden_weapon_are(G_NONE) # WHEN self.superadmin.says("!gear - all_nades") # THEN self.assert_set_gear(only_gear(G_SMOKE_GRENADE, G_HE_GRENADE)) def test_allow_all_snipers(self): # GIVEN self.given_forbidden_weapon_are(G_ALL) # WHEN self.superadmin.says("!gear +all_snipers") # THEN self.assert_set_gear(all_gear_but(G_SR8, G_PSG1)) def test_disallow_all_snipers(self): # GIVEN self.given_forbidden_weapon_are(G_NONE) # WHEN self.superadmin.says("!gear -all_snipers") # THEN self.assert_set_gear(only_gear(G_SR8, G_PSG1)) def test_allow_all_pistols(self): # GIVEN self.given_forbidden_weapon_are(G_ALL) # WHEN self.superadmin.says("!gear +all_pistols") # THEN self.assert_set_gear(all_gear_but(G_BERETTA_92FS, G_50_DESERT_EAGLE, G_GLOCK, G_COLT1911)) def test_disallow_all_pistols(self): # GIVEN self.given_forbidden_weapon_are(G_NONE) # WHEN self.superadmin.says("!gear -all_pistols") # THEN self.assert_set_gear(only_gear(G_BERETTA_92FS, G_50_DESERT_EAGLE, G_GLOCK, G_COLT1911)) def test_allow_all_auto(self): # GIVEN self.given_forbidden_weapon_are(G_ALL) # WHEN self.superadmin.says("!gear +all_auto") # THEN self.assert_set_gear(all_gear_but(G_MP5K, G_LR300ML, G_COLT_M4, G_MAC11, G_UMP45, G_G36, G_AK103, G_NEGEV_LMG)) def test_disallow_all_auto(self): # GIVEN self.given_forbidden_weapon_are(G_NONE) # WHEN self.superadmin.says("!gear -all_auto") # THEN self.assert_set_gear(only_gear(G_MP5K, G_LR300ML, G_COLT_M4, G_MAC11, G_UMP45, G_G36, G_AK103, G_NEGEV_LMG)) def test_disallow_all_auto_and_no_smoke(self): # GIVEN self.given_forbidden_weapon_are(G_ALL) # WHEN self.superadmin.says("!gear all -all_auto -smoke") # THEN self.assert_set_gear(only_gear(G_MP5K, G_LR300ML, G_COLT_M4, G_MAC11, G_UMP45, G_G36, G_AK103, G_NEGEV_LMG, G_SMOKE_GRENADE)) def test_disallow_all_auto_and_no_smoke_spaced(self): # GIVEN self.given_forbidden_weapon_are(G_ALL) # WHEN self.superadmin.says("!gear all - all_auto - smoke") # THEN self.assert_set_gear(only_gear(G_MP5K, G_LR300ML, G_COLT_M4, G_MAC11, G_UMP45, G_G36, G_AK103, G_NEGEV_LMG, G_SMOKE_GRENADE)) def test_disallow_all_auto_but_lr300(self): # GIVEN self.given_forbidden_weapon_are(G_ALL) # WHEN self.superadmin.says("!gear all -all_auto +lr") # THEN self.assert_set_gear(only_gear(G_MP5K, G_COLT_M4, G_MAC11, G_UMP45, G_G36, G_AK103, G_NEGEV_LMG)) def test_disallow_all_auto_but_lr300_spaced(self): # GIVEN self.given_forbidden_weapon_are(G_ALL) # WHEN self.superadmin.says("!gear all - all_auto + lr") # THEN self.assert_set_gear(only_gear(G_MP5K, G_COLT_M4, G_MAC11, G_UMP45, G_G36, G_AK103, G_NEGEV_LMG))
class Test_headshotcounter(Iourt41TestCase): def setUp(self): super(Test_headshotcounter, self).setUp() self.conf = CfgConfigParser() self.conf.loadFromString(""" [headshotcounter] # enable the headshot counter? hs_enable: True # reset counts? Options: no / map / round reset_vars: no # set broadcast to True if you want the counter to appear in the upper left, False is in chatarea broadcast: True # Announce every single headshot? announce_all: True # Announce percentages (after 5 headshots) announce_percentages: True # Only show percentages larger than next threshold percent_min: 10 # Advise victims to wear a helmet? warn_helmet: True # After how many headshots? warn_helmet_nr: 7 # Advise victims to wear kevlar? warn_kevlar: True # After how many torso hits? warn_kevlar_nr: 50 """) self.p = PoweradminurtPlugin(self.console, self.conf) self.init_default_cvar() self.p.onLoadConfig() self.p.onStartup() self.console.say = Mock() self.console.write = Mock() def test_hitlocation(self): def joe_hits_simon(hitloc): #Hit: 13 10 0 8: Grover hit jacobdk92 in the Head #Hit: cid acid hitloc aweap: text self.console.parseLine( "Hit: 7 6 %s 8: Grover hit jacobdk92 in the Head" % hitloc) def assertCounts(head, helmet, torso): self.assertEqual( head, self.joe.var(self.p, 'headhits', default=0.0).value) self.assertEqual( helmet, self.joe.var(self.p, 'helmethits', default=0.0).value) self.assertEqual( torso, self.simon.var(self.p, 'torsohitted', default=0.0).value) # GIVEN self.joe.connects("6") self.simon.connects("7") # WHEN joe_hits_simon('4') # THEN assertCounts(head=0.0, helmet=0.0, torso=0.0) # WHEN joe_hits_simon('0') # THEN assertCounts(head=1.0, helmet=0.0, torso=0.0) # WHEN joe_hits_simon('1') # THEN assertCounts(head=1.0, helmet=1.0, torso=0.0) # WHEN joe_hits_simon('2') # THEN assertCounts(head=1.0, helmet=1.0, torso=1.0)