def test_get_critter_moves(): crit0Mock = mock.Mock() crit0Mock.get_move_list.return_value = 'move list' battleInfo = battle.BattleInfo('fighter', 'ai', [crit0Mock, None, None, None]) assert battleInfo.get_critter_moves(0) == 'move list' assert battleInfo.get_critter_moves(1) == None
def test_do_ai_enter(): aiMock = mock.Mock() aiMock.do_switch.return_value = [] battleInfo = battle.BattleInfo('fighter', aiMock, [None, None, 'crit2', 'crit3']) battleInfo.do_ai_enter() assert battleInfo.critters == [None, None, 'crit2', 'crit3'] battleInfo.critters = [None, None, 'crit2', None] battleInfo.do_ai_enter() assert battleInfo.critters == [None, None, 'crit2', None] aiMock.do_switch.return_value = ['crit2'] battleInfo.critters = ['crit0', None, None, 'crit3'] battleInfo.do_ai_enter() assert battleInfo.critters == ['crit0', None, 'crit2', 'crit3'] battleInfo.critters = [None, 'crit1', None, None] battleInfo.do_ai_enter() assert battleInfo.critters == [None, 'crit1', 'crit2', None] battleInfo.critters = [None, None, None, None] aiMock.do_switch.return_value = ['crit2', 'crit3'] battleInfo.do_ai_enter() assert battleInfo.critters == [None, None, 'crit2', 'crit3']
def test_valid_critter_info(): battleInfo = battle.BattleInfo('fighter', 'ai', ['crit0', None, None, 'crit3']) assert battleInfo.valid_critter(0) == True assert battleInfo.valid_critter(1) == False assert battleInfo.valid_critter(2) == False assert battleInfo.valid_critter(3) == True assert battleInfo.valid_critter(4) == False # out of bounds
def test_get_defender(): battleInfo = battle.BattleInfo('fighter', 'ai', ['crit0', None, 'crit2', None]) assert battleInfo.get_defender(0, 2) == 2 assert battleInfo.get_defender(0, 1) == 1 assert battleInfo.get_defender(0, 3) == 2 assert battleInfo.get_defender(2, 1) == 0 assert battleInfo.get_defender(2, 3) == 3
def test_get_critter_hps(): crit0Mock = mock.Mock() crit0Mock.currenthp = 30 crit2Mock = mock.Mock() crit2Mock.currenthp = 40 battleInfo = battle.BattleInfo('fighter', 'ai', [crit0Mock, None, crit2Mock, None]) assert battleInfo.get_critter_hps() == ['30', '', '40', '']
def test_get_critter_names(): crit0Mock = mock.Mock() crit0Mock.name = 'crit0' crit3Mock = mock.Mock() crit3Mock.name = 'crit3' battleInfo = battle.BattleInfo('fighter', 'ai', [crit0Mock, None, None, crit3Mock]) assert battleInfo.get_critter_names() == ['crit0', '', '', 'crit3']
def test_is_attacking_enemy(): battleInfo = battle.BattleInfo('fighter', 'ai', []) assert battleInfo.is_attacking_enemy(0, 1) == False assert battleInfo.is_attacking_enemy(0, 2) == True assert battleInfo.is_attacking_enemy(1, 0) == False assert battleInfo.is_attacking_enemy(1, 3) == True assert battleInfo.is_attacking_enemy(2, 0) == True assert battleInfo.is_attacking_enemy(2, 3) == False assert battleInfo.is_attacking_enemy(3, 1) == True assert battleInfo.is_attacking_enemy(3, 2) == False
def test_get_targets(): crit1Mock = mock.Mock() crit1Mock.name = 'crit1' crit2Mock = mock.Mock() crit2Mock.name = 'crit2' crit3Mock = mock.Mock() crit3Mock.name = 'crit3' battleInfo = battle.BattleInfo('fighter', 'ai', [None, crit1Mock, crit2Mock, crit3Mock]) assert battleInfo.get_targets(1) == ['', '', 'crit2', 'crit3']
def test_get_critter_spd_order(randomMock): crit1Mock = mock.Mock() crit1Mock.get_speed.return_value = 40 crit2Mock = mock.Mock() crit2Mock.get_speed.return_value = 40 crit3Mock = mock.Mock() crit3Mock.get_speed.return_value = 50 randomMock.side_effect = [0.1, 0.2, 0.6] battleInfo = battle.BattleInfo('fighter', 'ai', [None, crit1Mock, crit2Mock, crit3Mock]) assert battleInfo.get_critter_spd_order() == \ [crit3Mock, crit2Mock, crit1Mock]
def test_eligible_critter(): crit0Mock = mock.Mock() crit0Mock.name = 'sameName' crit0Mock.dead = False crit1Mock = mock.Mock() crit1Mock.name = 'sameName' crit1Mock.dead = False battleInfo = battle.BattleInfo('fighter', 'ai', [None, crit1Mock, None, None]) assert battleInfo.eligible_critter(crit1Mock) == False assert battleInfo.eligible_critter(crit0Mock) == True crit0Mock.dead = True assert battleInfo.eligible_critter(crit0Mock) == False
def test_enter_is_possible(): crit0Mock = mock.Mock() crit0Mock.dead = False crit1Mock = mock.Mock() crit1Mock.dead = False fighterMock = mock.Mock() fighterMock.critters = [crit0Mock] battleInfo = battle.BattleInfo(fighterMock, 'ai', [crit0Mock, None, None, None]) assert battleInfo.enter_is_possible() == False fighterMock.critters.append(crit1Mock) assert battleInfo.enter_is_possible() == True battleInfo.critters[1] = crit1Mock assert battleInfo.enter_is_possible() == False
def test_vaild_switch_info(): critMocks = [] for i in range(4): critMocks.append(mock.Mock()) critMocks[-1].dead = False fighterMock = mock.Mock() fighterMock.critters = critMocks battleInfo = battle.BattleInfo( fighterMock, 'ai', [critMocks[1], critMocks[3], None, 'aicrit0']) assert battleInfo.valid_switch(0, 0) == True assert battleInfo.valid_switch(1, 1) == True assert battleInfo.valid_switch(0, 2) == False with pytest.raises(Exception): battleInfo.valid_switch(2, 0)
def test_get_ordered_turns(randomMock): crit0Mock = mock.Mock() crit0Mock.get_speed.return_value = 50 crit1Mock = mock.Mock() crit1Mock.get_speed.return_value = 70 crit2Mock = mock.Mock() crit2Mock.get_speed.return_value = 30 crit3Mock = mock.Mock() crit3Mock.get_speed.return_value = 50 actions = [(0, 2, 'bite'), (1, 0, -1), (2, 0, 'growl'), (3, 0, 'tackle')] randomMock.side_effect = [0.1, 0.6, 0.2, 0.8] battleInfo = battle.BattleInfo( 'fighter', 'ai', [crit0Mock, crit1Mock, crit2Mock, crit3Mock]) assert battleInfo.get_ordered_turns(actions) == \ [(1, 0, -1), (3, 0, 'tackle'), (0, 2, 'bite'), (2, 0, 'growl')]
def test_determine_winner(): fighterMock = mock.Mock() aiMock = mock.Mock() battleInfo = battle.BattleInfo(fighterMock, aiMock, []) fighterMock.has_playable_critters.return_value = True aiMock.has_playable_critters.return_vale = True assert battleInfo.determine_winner() == None fighterMock.has_playable_critters.return_value = False assert battleInfo.determine_winner() == 'ai' aiMock.has_playable_critters.return_value = False assert battleInfo.determine_winner() == 'both' fighterMock.has_playable_critters.return_value = True assert battleInfo.determine_winner() == 'fighter'
def test_perform_switch(): critMocks = [] for i in range(3): critMocks.append(mock.Mock()) critMocks[i].dead = False critMocks[i].name = 'crit{}'.format(i) fighterMock = mock.Mock() fighterMock.critters = [critMocks[0], critMocks[1], critMocks[2]] battleInfo = battle.BattleInfo(fighterMock, 'ai', [critMocks[0], None, 'aicrit0', None]) battleInfo.perform_switch(0, 1) assert battleInfo.critters == [critMocks[2], None, 'aicrit0', None] with pytest.raises(Exception): battleInfo.perform_switch(1, 0) with pytest.raises(Exception): assert battleInfo.perform_switch(0, 2)
def test_critter_switch_options(): critMocks = [] for i in range(5): critMocks.append(mock.Mock()) critMocks[-1].dead = False fighterMock = mock.Mock() fighterMock.critters = [ critMocks[0], critMocks[1], critMocks[2], critMocks[3], critMocks[4] ] battleInfo = battle.BattleInfo( fighterMock, 'ai', [critMocks[2], critMocks[0], 'aiCrit0', 'aiCrit1']) assert battleInfo.critter_switch_options() == [ critMocks[1], critMocks[3], critMocks[4] ] fighterMock.critters = [critMocks[0], critMocks[2]] assert battleInfo.critter_switch_options() == [] fighterMock.critters = [] assert battleInfo.critter_switch_options() == []
def test_perform_enter(): critMocks = [] for i in range(4): critMocks.append(mock.Mock()) critMocks[i].dead = False fighterMock = mock.Mock() fighterMock.critters = critMocks battleInfo = battle.BattleInfo(fighterMock, 'ai', [None, None, 'ai0', 'ai1']) battleInfo.perform_enter(0) assert battleInfo.critters == [critMocks[0], None, 'ai0', 'ai1'] battleInfo.perform_enter(4) assert battleInfo.critters == [critMocks[0], None, 'ai0', 'ai1'] battleInfo.perform_enter(2) assert battleInfo.critters == [critMocks[0], critMocks[3], 'ai0', 'ai1'] with pytest.raises(Exception): battleInfo.perform_enter(1)
def test_execute_action(): critMocks = [] for i in range(4): critMocks.append(mock.Mock()) critMocks[-1].dead = False fighterMock = mock.Mock() fighterMock.critters = [critMocks[0], critMocks[1], critMocks[3]] battleInfo = battle.BattleInfo( fighterMock, 'ai', [critMocks[0], critMocks[3], critMocks[2], None]) battleInfo.execute_action((1, 0, -1)) assert battleInfo.critters == [ critMocks[0], critMocks[1], critMocks[2], None ] critMocks[0].attack.return_value = 'attack info' critMocks[2].defend.return_value = ['info0', 'info1'] critMocks[2].dead = True assert len(battleInfo.execute_action((0, 3, 'move'))) == 3 critMocks[0].attack.assert_called_with('move') critMocks[2].defend.assert_called_with('attack info') assert battleInfo.critters == [critMocks[0], critMocks[1], None, None]
def test_battle_info_init(): battleInfo = battle.BattleInfo('fighter', 'ai', 'crits') assert battleInfo.fighter == 'fighter' assert battleInfo.aiFighter == 'ai' assert battleInfo.critters == 'crits'
def test_critter_leave(): battleInfo = battle.BattleInfo('fighter', 'ai', ['crit0', 'crit1', 'crit2', 'crit3']) battleInfo.critter_leave(2) assert battleInfo.critters == ['crit0', 'crit1', None, 'crit3']
def test_switch_defender(): battleInfo = battle.BattleInfo('fighter', 'ai', []) assert battleInfo.switch_defender(0) == 1 assert battleInfo.switch_defender(1) == 0 assert battleInfo.switch_defender(2) == 3 assert battleInfo.switch_defender(3) == 2