Esempio n. 1
0
    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)
Esempio n. 2
0
    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))
Esempio n. 3
0
    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()
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)
Esempio n. 6
0
    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))
Esempio n. 7
0
    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)
Esempio n. 8
0
    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)
Esempio n. 9
0
    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))