class TestNavigationConsole(unittest.TestCase): def setUp(self): self.spaceship = Spaceship('@', 'Galactica', (0, 0, 0, 0)) self.spaceship.load_interior([[['.'], ['.']]], {'.': 'Floor'}) self.player = Player('Mike') self.spaceship.get_interior().add_player((0, 0), self.player) self.console = NavigationConsole() def test_console_makes_player_pilot_spaceship(self): self.console.set_player(self.player) self.assertEqual(self.console.activate(), "You are piloting the spaceship now...", "corresponding message should be returned") self.assertTrue(self.player.is_pilot(), "player should become a pilot") def test_console_can_not_be_used_if_spaceship_is_broken(self): self.spaceship.receive_damage(1000) self.console.set_player(self.player) self.assertEqual(self.console.activate(), "The console is inoperable.", "console can not be activated if spaceship is broken") self.assertFalse(self.player.is_pilot(), "player should not become a pilot") def test_spaceship_can_be_piloted_only_by_one_player(self): player = Player('Josh') self.spaceship.get_interior().add_player((1, 0), player) self.console.set_player(self.player) self.console.activate() self.console.set_player(player) self.assertEqual(self.console.activate(), "Someone else is operating the console...", "corresponding message should be returned") self.assertFalse(player.is_pilot(), "player should not become a pilot")
def test_spaceship_can_be_piloted_only_by_one_player(self): player = Player('Josh') self.spaceship.get_interior().add_player((1, 0), player) self.console.set_player(self.player) self.console.activate() self.console.set_player(player) self.assertEqual(self.console.activate(), "Someone else is operating the console...", "corresponding message should be returned") self.assertFalse(player.is_pilot(), "player should not become a pilot")
def setUp(self): tiles_map = items_map = [ "#####", "#...#", "#####", "#...#", "#####"] self.obj_defs = {".": "Floor", "#": "Wall"} level = InteriorLevel() level.load_char_map(tiles_map, items_map, self.obj_defs) mike = Player('Mike') mike.set_color((255, 0, 0)) level.add_player((2, 1), mike) self.view = InteriorView(level)
class TestPlayerInventory(unittest.TestCase): def setUp(self): self.player = Player('Mike') def test_duplicate_items_stack(self): self.player.inventory_add(LaserGun()) self.player.inventory_add(LaserGun(), 3) inv = self.player.get_inventory() self.assertEqual(dict([(k.get_name(), v) for k, v in inv.items()]), {'laser gun': 4}, "items of the same type must stack") def test_removing_item_from_inventory(self): self.player.inventory_add(LaserGun(), 2) item = self.player.inventory_remove_by_name('laser gun') self.assertEqual(item.get_name(), 'laser gun', "correct item should be returned") self.assertFalse(self.player.inventory_remove_by_name('sword'), "non existent item should yield False") inv = self.player.get_inventory() self.assertEqual(dict([(k.get_name(), v) for k, v in inv.items()]), {'laser gun': 1}, "items stack should decrease") item = self.player.inventory_remove_by_name('laser gun') self.assertEqual(self.player.get_inventory(), {}, "last item in stack should be removed from inventory") def test_melee_weapon_affects_damage(self): unarmed_damage = self.player.get_melee_damage() self.player.equip(Knife()) self.assertGreaterEqual(self.player.get_melee_damage(), unarmed_damage, "melee weapon should affect damage") def test_ranged_weapon_required_to_shoot(self): self.assertFalse(self.player.is_gunman(), "player should not be able to shoot without a gun") self.assertFalse(self.player.get_ranged_damage()) self.player.equip(LaserGun()) self.assertTrue(self.player.is_gunman(), "player should be able to shoot after equiping a gun") self.assertGreater(self.player.get_ranged_damage(), 0, "damage should be non-negative integer") def test_unarmored_player_does_not_alter_damage(self): self.player.receive_damage(100) self.assertFalse(self.player.is_alive(), "player without armor should not alter damage") def test_armor_affects_received_damage(self): self.player.equip(PowerArmor(), 'torso') self.player.receive_damage(100) self.assertTrue(self.player.is_alive(), "armor should reduce received damage") def test_armor_changes_player_char(self): default_char = self.player.get_char() armor = PowerArmor() self.player.equip(armor, 'torso') self.assertEqual(self.player.get_char(), armor.get_player_char(), "equipping armor should change player char") self.player.unequip('torso') self.assertEqual(self.player.get_char(), default_char, ("player char should reset after unequipping the " "armor: %s" % self.player.get_char()))
def setUp(self): self.player = Player('Mike')
def setUp(self): self.spaceship = Spaceship('@', 'Galactica', (0, 0, 0, 0)) self.spaceship.load_interior([[['.'], ['.']]], {'.': 'Floor'}) self.player = Player('Mike') self.spaceship.get_interior().add_player((0, 0), self.player) self.console = NavigationConsole()