def test_drop_all(self): item1 = Thing(self.game, "miracle") item2 = Thing(self.game, "wonder") item1.invItem = True item2.invItem = True item1.makeKnown(self.me) item2.makeKnown(self.me) self.me.addThing(item1) self.me.addThing(item2) self.assertIs( self.me.location, self.start_room, "This test needs the Player to be in the start room", ) self.game.turnMain("drop all") dropall_msg = self.app.print_stack.pop() self.assertEqual( len(self.me.contains), 0, f"Expected empty inv, but found {self.me.contains}", ) self.assertIn(item1.ix, self.start_room.contains) self.assertIn(item1, self.start_room.contains[item1.ix]) self.assertIn(item2.ix, self.start_room.contains) self.assertIn(item2, self.start_room.contains[item2.ix]) self.game.turnMain("drop all") dropall_msg = self.app.print_stack.pop() self.assertEqual(dropall_msg, "Your inventory is empty. ")
def test_get_all_drop(self): item1 = Thing(self.game, "miracle") item2 = Thing(self.game, "wonder") item1.invItem = True item2.invItem = True item3 = item2.copyThing() item1.makeKnown(self.me) item3.makeKnown(self.me) self.start_room.addThing(item1) self.start_room.addThing(item3) self.me.addThing(item2) self.assertNotIn(item1.ix, self.me.contains) self.assertIn(item2.ix, self.me.contains) self.assertNotIn(item3, self.me.contains[item2.ix]) self.game.turnMain("take all") getall_msg = self.app.print_stack.pop() self.assertIn( item1.ix, self.me.contains, f"Item not added to inv with get all. Msg: '{getall_msg}'", ) self.assertIn(item1, self.me.contains[item1.ix]) self.assertIn( item2.ix, self.me.contains, f"Item not added to inv with get all. Msg: '{getall_msg}'", ) self.assertIn(item2, self.me.contains[item2.ix]) self.game.turnMain("take all") getall_msg = self.app.print_stack.pop() self.assertEqual(getall_msg, "There are no obvious items here to take. ")
def test_drop_item_not_in_inv(self): item = Thing(self.game, self._get_unique_noun()) item.invItem = True self.start_room.addThing(item) self.assertNotIn(item.ix, self.me.contains) success = DropVerb()._runVerbFuncAndEvents(self.game, item) self.assertFalse(success)
def test_look_under_non_underspace_non_inv_item(self): child = Thing(self.game, "mountain") child.invItem = False child.moveTo(self.start_room) self.game.turnMain("look under mountain") self.assertIn("There's no reason to look under the mountain. ", self.app.print_stack)
def test_get_explicitly_invitem_component_of_composite_object(self): parent = Thing(self.game, "cube") child = Thing(self.game, "knob") parent.addComposite(child) parent.moveTo(self.start_room) child.invItem = True self.game.turnMain("take knob") self.assertIn("The knob is attached to the cube. ", self.app.print_stack)
def test_verb_func_adds_invitem_to_inv(self): item = Thing(self.game, self._get_unique_noun()) item.invItem = True self.start_room.addThing(item) success = GetVerb()._runVerbFuncAndEvents(self.game, item) self.assertTrue(success) self.assertIn(item.ix, self.me.contains) self.assertEqual(len(self.me.contains[item.ix]), 1) self.assertIn(item, self.me.contains[item.ix])
def test_verb_func_does_not_add_to_inv_where_invitem_false(self): item = Thing(self.game, self._get_unique_noun()) item.invItem = False self.start_room.addThing(item) self.assertFalse(item.ix in self.me.contains) success = GetVerb()._runVerbFuncAndEvents(self.game, item) self.assertFalse(success) self.assertNotIn(item.ix, self.me.contains)
def test_verb_func_does_not_add_to_inv_where_already_in_inv(self): item = Thing(self.game, self._get_unique_noun()) item.invItem = True self.me.addThing(item) self.assertTrue(item.ix in self.me.contains) self.assertEqual(len(self.me.contains[item.ix]), 1) self.assertIn(item, self.me.contains[item.ix]) success = GetVerb()._runVerbFuncAndEvents(self.game, item) self.assertFalse(success) self.assertEqual(len(self.me.contains[item.ix]), 1)
def test_verb_func_drops_item(self): item = Thing(self.game, self._get_unique_noun()) item.invItem = True self.me.addThing(item) self.assertIn(item.ix, self.me.contains) self.assertEqual(len(self.me.contains[item.ix]), 1) self.assertIn(item, self.me.contains[item.ix]) self.game.turnMain(f"drop {item.verbose_name}") self.assertItemNotIn(item, self.me.contains, "Dropped item, but item still in inventory")
def test_set_on_adds_item(self): item = Thing(self.game, self._get_unique_noun()) item.invItem = True self.me.addThing(item) surface = Surface(self.game, self._get_unique_noun()) self.start_room.addThing(surface) self.assertNotIn(item.ix, surface.contains) success = SetOnVerb()._runVerbFuncAndEvents(self.game, item, surface) self.assertTrue(success) self.assertIn(item.ix, surface.contains) self.assertIn(item, surface.contains[item.ix])
def test_set_in_adds_item(self): item = Thing(self.game, self._get_unique_noun()) item.invItem = True self.me.addThing(item) container = Container(self.game, self._get_unique_noun()) self.start_room.addThing(container) self.assertNotIn(item.ix, container.contains) success = SetInVerb()._runVerbFuncAndEvents(self.game, item, container) self.assertTrue(success) self.assertIn(item.ix, container.contains) self.assertIn(item, container.contains[item.ix])
def test_cannot_set_under_non_underspace(self): item = Thing(self.game, self._get_unique_noun()) item.invItem = True self.me.addThing(item) invalid_iobj = Thing(self.game, self._get_unique_noun()) self.start_room.addThing(invalid_iobj) self.assertNotIn(item.ix, invalid_iobj.contains) success = SetUnderVerb()._runVerbFuncAndEvents(self.game, item, invalid_iobj) self.assertFalse(success) self.assertNotIn(item.ix, invalid_iobj.contains)