def test_find_ammo(self): player = Mock() inventory = standard_items.Inventory(player) import questgame.game_items.weapons as weapons ammo_poor = MockHelper.get_mock_item(spec=weapons.WoodArrow) ammo_poor.cost = 1 ammo_best = MockHelper.get_mock_item(spec=weapons.SteelArrow) ammo_best.cost = 100 ammo_good = MockHelper.get_mock_item(spec=weapons.IronArrow) ammo_good.cost = 10 #Add poor arrow self.assertEqual(inventory.find_ammo(weapons.Arrow), False) inventory.add(ammo_poor) #Add best arrow self.assertEqual(inventory.find_ammo(weapons.Arrow), ammo_poor) inventory.add(ammo_best) self.assertEqual(inventory.find_ammo(weapons.Arrow), ammo_best) #Add good arrow - should still select best arrow inventory.add(ammo_good) self.assertEqual(inventory.find_ammo(weapons.Arrow), ammo_best)
def test_loot_body(self): player = players.Thief() rat = players.Rat() zombie_rat = players.ZombieRat() another_rat = players.Rat() #Inventory is empty #Is looted #Inventory has 1 item #Inventory has 2 items #Empty self.assertEqual(player.loot_body(rat), []) #Already looted self.assertFalse(player.loot_body(rat)) penny = MockHelper.get_mock_item() quarter = MockHelper.get_mock_scroll() #1 item self.assertTrue(zombie_rat.pickup(penny)) self.assertEqual(player.loot_body(zombie_rat), [penny]) self.assertTrue(player.is_carrying(penny)) self.assertFalse(zombie_rat.is_carrying(penny)) #2 items self.assertTrue(another_rat.pickup(penny)) self.assertTrue(another_rat.pickup(quarter)) self.assertEqual(player.loot_body(another_rat), [penny, quarter]) self.assertTrue(player.is_carrying(penny)) self.assertTrue(player.is_carrying(quarter)) self.assertFalse(another_rat.is_carrying(penny)) self.assertFalse(another_rat.is_carrying(quarter))
def test_throw(self): player = players.Thief() rat = players.Rat() dagger = MockHelper.get_mock_weapon() not_a_dagger = MockHelper.get_mock_item() #Must be carrying item #Item must be a throwable weapon #Should decrease number of items when thrown #If none left then no longer carrying #Not carrying player.is_carrying = Mock(return_value=False) self.assertFalse(player.throw(dagger, rat)) player.is_carrying.assert_called_once() #Not a weapon #TODO: Allow food to be thrown? player.is_carrying = Mock(return_value=True) self.assertFalse(player.throw(not_a_dagger, rat)) #Not throwable #Mock class methods mock_is_throwable = PropertyMock(return_value=True) type(dagger).is_throwable = mock_is_throwable self.assertTrue(player.throw(dagger, rat)) mock_is_throwable.assert_called_once()
def test_get_item(self): player = players.Thief() penny = MockHelper.get_mock_item() #Get an item from inventory #Returns False if no such item self.assertFalse(player.get_item(penny)) self.assertTrue(player.pickup(penny)) self.assertEqual(player.get_item(penny), penny)
def test_get_item(self): player = Mock() inventory = standard_items.Inventory(player) beer = MockHelper.get_mock_item() #Nothing in inventroy self.assertFalse(inventory.get_item(beer)) #Beer is in inventory self.assertTrue(inventory.add(beer)) self.assertEqual(inventory.get_item(beer), beer)
def test_drop(self): player = players.Thief() penny = MockHelper.get_mock_item() #Must be carrying item, then calls remove - which returns the item player.is_carrying = Mock(return_value=True) player.remove_item = Mock(return_value=penny) self.assertEqual(player.drop(penny), penny) #not carrying player.is_carrying = Mock(return_value=False) self.assertFalse(player.drop(penny))
def test_get_item_by_name(self): player = players.Thief() penny = MockHelper.get_mock_item() #Get an item from inventory #Returns False if no such item self.assertFalse(player.get_item_by_name('penny')) self.assertTrue(player.pickup(penny)) penny.is_match = Mock(return_value=False) self.assertFalse(player.get_item_by_name('penny')) penny.is_match.assert_called_once() penny.is_match = Mock(return_value=True) self.assertEqual(player.get_item_by_name('penny'), penny)
def test_count_items(self): player = Mock() beer = MockHelper.get_mock_item() inventory = standard_items.Inventory(player) #Test None self.assertEqual(inventory.count_items(None), 0) self.assertEqual(inventory.count_items(beer), 0) #Test 1 item self.assertTrue(inventory.add(beer)) self.assertEqual(inventory.count_items(beer), 1) #Test 2 items self.assertTrue(inventory.add(beer)) self.assertEqual(inventory.count_items(beer), 2)
def test_give(self): player = players.Thief() rat = players.Rat() penny = MockHelper.get_mock_item() #Can give player.is_carrying = Mock(return_value=True) player.remove_item = Mock(return_value=True) self.assertTrue(player.give(penny, rat)) #Not carrying player.is_carrying = Mock(return_value=False) self.assertFalse(player.give(penny, rat)) #Can't remove player.is_carrying = Mock(return_value=True) player.remove_item = Mock(return_value=False) self.assertFalse(player.give(penny, rat))