def test(): importlib.reload(ants) hive = ants.Hive(ants.AssaultPlan()) dimensions = (2, 9) colony = ants.AntColony(None, hive, ants.ant_types(), ants.dry_layout, dimensions) # Extensive damage doubling tests queen_tunnel, side_tunnel = [[ colony.places['tunnel_{0}_{1}'.format(i, j)] for j in range(9) ] for i in range(2)] queen = ants.QueenAnt() queen_tunnel[7].add_insect(queen) # Turn 0 thrower = ants.ThrowerAnt() fire = ants.FireAnt() ninja = ants.NinjaAnt() side = ants.ThrowerAnt() front = ants.NinjaAnt() queen_tunnel[0].add_insect(thrower) queen_tunnel[1].add_insect(fire) queen_tunnel[2].add_insect(ninja) queen_tunnel[8].add_insect(front) side_tunnel[0].add_insect(side) buffed_ants = [thrower, fire, ninja] old_dmgs = [ant.damage for ant in buffed_ants] queen.action(colony) for ant, dmg in zip(buffed_ants, old_dmgs): assert ant.damage == dmg * 2, "{0}'s damage is {1}, but should be {2}".format( ant, ant.damage, dmg * 2) for ant in [side, front]: assert ant.damage == dmg, "{0}'s damage is {1}, but should be {2}".format( ant, ant.damage, dmg) assert queen.damage == 1, 'QueenAnt damage was modified to {0}'.format( ant.damage) # Turn 1 tank = ants.TankAnt() guard = ants.BodyguardAnt() queen_tank = ants.TankAnt() queen_tunnel[6].add_insect(tank) # Not protecting an ant queen_tunnel[1].add_insect(guard) # Guarding FireAnt queen_tunnel[7].add_insect(queen_tank) # Guarding QueenAnt buffed_ants.extend([tank, guard]) old_dmgs.extend([ant.damage for ant in [tank, guard, queen_tank]]) queen.action(colony) for ant, dmg in zip(buffed_ants, old_dmgs): assert ant.damage == dmg * 2, "{0}'s damage is {1}, but should be {2}".format( ant, ant.damage, dmg * 2) # Turn 2 thrower1 = ants.ThrowerAnt() thrower2 = ants.ThrowerAnt() queen_tunnel[6].add_insect(thrower1) # Add thrower1 in TankAnt queen_tunnel[5].add_insect(thrower2) buffed_ants.extend([thrower1, thrower2]) old_dmgs.extend([ant.damage for ant in [thrower1, thrower2]]) queen.action(colony) for ant, dmg in zip(buffed_ants, old_dmgs): assert ant.damage == dmg * 2, "{0}'s damage is {1}, but should be {2}".format( ant, ant.damage, dmg * 2)
def test_ninja_deadliness(self): error_msg = 'NinjaAnt does not strike all bees in its place' test_place = self.colony.places['tunnel_0_0'] for _ in range(3): test_place.add_insect(ants.Bee(1)) ninja = ants.NinjaAnt() test_place.add_insect(ninja) ninja.action(self.colony) self.assertIs(0, len(test_place.bees), error_msg)
def test_ninja_does_not_block(self): error_msg = 'NinjaAnt blocks bees' p0 = self.colony.places['tunnel_0_0'] p1 = self.colony.places['tunnel_0_1'] bee = ants.Bee(2) p1.add_insect(bee) p1.add_insect(ants.NinjaAnt()) bee.action(self.colony) self.assertIs(p0, bee.place, error_msg)
def test_instance_damage(self): error_msg = "Ninja damage not looked up on the instance" place = self.colony.places["tunnel_0_0"] bee = ants.Bee(900) place.add_insect(bee) buffNinja = ants.NinjaAnt() buffNinja.damage = 500 # Sharpen the sword place.add_insect(buffNinja) buffNinja.action(self.colony) self.assertEqual(400, bee.armor, error_msg)
def test_mod_damage(self): error_msg = 'Ninja damage should not be static' place = self.colony.places['tunnel_0_0'] bee = ants.Bee(900) place.add_insect(bee) #Amp up damage buffNinja = ants.NinjaAnt() buffNinja.damage = 500 place.add_insect(buffNinja) buffNinja.action(self.colony) self.assertEquals(400, bee.armor, error_msg)
def test_ninja_parameters(self): ninja = ants.NinjaAnt() self.assertIs(6, ants.NinjaAnt.food_cost, 'NinjaAnt has wrong cost') self.assertIs(1, ninja.armor, 'NinjaAnt has wrong armor')
def test_ninja_parameters(self): ninja = ants.NinjaAnt() self.assertEqual(6, ants.NinjaAnt.food_cost, "NinjaAnt has wrong cost") self.assertEqual(1, ninja.armor, "NinjaAnt has wrong armor")
import ants, importlib importlib.reload(ants) hive = ants.Hive(ants.AssaultPlan()) dimensions = (2, 9) colony = ants.AntColony(None, hive, ants.ant_types(), ants.dry_layout, dimensions) queen_tunnel, side_tunnel = [[ colony.places['tunnel_{0}_{1}'.format(i, j)] for j in range(9) ] for i in range(2)] queen = ants.QueenAnt() queen_tunnel[7].add_insect(queen) print('Turn1----------------------------') thrower = ants.ThrowerAnt() fire = ants.FireAnt() ninja = ants.NinjaAnt() side = ants.ThrowerAnt() front = ants.NinjaAnt() queen_tunnel[0].add_insect(thrower) queen_tunnel[1].add_insect(fire) queen_tunnel[2].add_insect(ninja) queen_tunnel[8].add_insect(front) side_tunnel[0].add_insect(side) queen.action(colony) print('Turn2--------------------------------') tank = ants.TankAnt() guard = ants.BodyguardAnt() queen_tank = ants.TankAnt() queen_tunnel[6].add_insect(tank) print("insert tank") queen_tunnel[1].add_insect(guard)