def test_look_under_empty_underspace(self): parent = UnderSpace(self.game, "table") parent.moveTo(self.start_room) self.game.turnMain("look under table") self.assertIn("There is nothing under the table. ", self.app.print_stack)
def test_get_underspace_reveals_single_contained_item(self): parent = UnderSpace(self.game, "rug") child = Thing(self.game, "penny") parent.moveTo(self.start_room) child.moveTo(parent) self.game.turnMain("take rug") self.assertIn("A penny is revealed. ", self.app.print_stack)
def test_add_remove_composite_item_from_UnderSpace(self): parent = UnderSpace(self.game, "parent") parent.revealed = True child = Thing(self.game, "child") sub = Thing(self.game, "sub") child.addComposite(sub) self.start_room.addThing(parent) self._assert_can_add_remove(parent, child)
def test_add_remove_item_with_lock_from_UnderSpace(self): parent = UnderSpace(self.game, "parent") parent.revealed = True child = Container(self.game, "child") child.has_lid = True lock = Lock(self.game, "lock", None) child.setLock(lock) self.start_room.addThing(parent) self._assert_can_add_remove(parent, child)
def test_get_underspace_reveals_multiple_contained_items(self): parent = UnderSpace(self.game, "rug") child = Thing(self.game, "penny") child2 = Thing(self.game, "rock") parent.moveTo(self.start_room) child.moveTo(parent) child2.moveTo(parent) self.game.turnMain("take rug") self.assertIn("are revealed", self.app.print_stack.pop())
def test_set_under_gives_too_big_message_if_item_too_big(self): item = Thing(self.game, "giant") item.size = 100000 self.me.addThing(item) place = UnderSpace(self.game, "place") self.start_room.addThing(place) self.game.turnMain(f"set giant under place") self.assertIn("too big", self.app.print_stack.pop()) self.assertFalse(place.containsItem(item))
def test_composite_object_redirection(self): bench = Surface(self.game, "bench") self.start_room.addThing(bench) underbench = UnderSpace(self.game, "space") bench.addComposite(underbench) widget = Thing(self.game, "widget") underbench.addThing(widget) self.game.turnMain("look under bench") msg = self.app.print_stack.pop() self.assertIn( widget.verbose_name, msg, "Unexpected response attempting to use a component redirection", )
def test_get_composite_underspace_reveals_contained_item(self): item = Container(self.game, "box") parent = UnderSpace(self.game, "space") child = Thing(self.game, "penny") item.addComposite(parent) item.moveTo(self.start_room) child.moveTo(parent) self.game.turnMain("take box") self.assertIn("A penny is revealed. ", self.app.print_stack)
def test_undescribed_underspace_not_included_in_composite_desc(self): subject = Thing(self.game, self._get_unique_noun()) child = UnderSpace(self.game, "child") subject.addComposite(child) self.start_room.addThing(subject) self.assertNotIn(child.verbose_name, subject.composite_desc) self.game.turnMain(f"l {subject.verbose_name}") msg = self.app.print_stack.pop() self.assertNotIn(child.verbose_name, msg)
def test_set_composite_child_under_gives_attached_message(self): parent = Thing(self.game, "thing") parent.moveTo(self.me) item = Thing(self.game, "handle") parent.addComposite(item) underspace = UnderSpace(self.game, "place") self.start_room.addThing(underspace) self.game.turnMain(f"set handle under place") self.assertIn("is attached to", self.app.print_stack.pop()) self.assertIs(item.location, self.me)
def test_set_under_adds_item(self): item = Thing(self.game, self._get_unique_noun()) item.invItem = True self.me.addThing(item) underspace = UnderSpace(self.game, self._get_unique_noun()) self.start_room.addThing(underspace) self.assertNotIn(item.ix, underspace.contains) self.game.turnMain( f"set {item.verbose_name} under {underspace.verbose_name}") self.assertIn(item.ix, underspace.contains) self.assertIn(item, underspace.contains[item.ix])
def test_set_under_adds_item(self): item = Thing(self.game, self._get_unique_noun()) item.invItem = True self.me.addThing(item) underspace = UnderSpace(self.game, self._get_unique_noun()) self.start_room.addThing(underspace) self.assertNotIn(item.ix, underspace.contains) success = SetUnderVerb()._runVerbFuncAndEvents(self.game, item, underspace) self.assertTrue(success) self.assertIn(item.ix, underspace.contains) self.assertIn(item, underspace.contains[item.ix])
def test_look_under(self): parent = UnderSpace(self.game, "table") child = Thing(self.game, "penny") parent.addThing(child) parent.moveTo(self.start_room) self.game.turnMain("look under table") look_under_desc = self.app.print_stack.pop() self.assertEqual( look_under_desc, parent.contains_desc, f"Contains desc printed incorrectly. Expected {parent.contains_desc} got " f"{look_under_desc}", )
def test_reveal_contents(self): box = UnderSpace(self.app.game, "box") widget = Thing(self.app.game, "widget") widget.moveTo(box) sub_widget = Thing(self.app.game, "glitter") sub_widget.moveTo(widget) box.moveTo(self.start_room) box.revealed = False self.app.game.turnMain("l") self.app.game.turnMain("take widget") self.assertIn("don't see any widget", self.app.print_stack.pop()) self.assertItemNotIn( widget, self.start_room.sub_contains, "Contents shown before reveal" ) box.revealUnder() self.assertItemIn( widget, self.start_room.sub_contains, "Contents not shown after reveal" ) self.assertItemIn( sub_widget, self.start_room.sub_contains, "Sub contents not shown after reveal", )
def test_set_underspace_under_itself(self): item = UnderSpace(self.game, "thing") item.moveTo(self.start_room) self.game.turnMain("set thing under thing") self.assertIn("You cannot", self.app.print_stack.pop()) self.assertFalse(item.containsItem(item))
print(opal.ix) print(opal.ix in me.knows_about) opal.getVerbDobj = takeOpalFunc bench = Surface(game, "bench") bench.can_contain_sitting_player = True bench.can_contain_standing_player = True bench.invItem = False bench.description = "A rough wooden bench sits against the wall. " bench.x_description = ( "The wooden bench is splintering, and faded grey. It looks very old. ") bench.moveTo(startroom) underbench = UnderSpace(game, "space") underbench.contains_preposition = "in" bench.addComposite(underbench) # UnderSpaces that are components of another item are not described if their "description" # attribute is None # This also means that we cannot see what's underneath # Set description to an empty string so we can show what's underneath without # having to print an actual description of the UnderSpace underbench.description = "" underbench.full_name = "space under the bench" box = Container(game, "box") box.giveLid() box.moveTo(underbench) opal.moveTo(box)
def test_add_remove_from_UnderSpace(self): parent = UnderSpace(self.game, "parent") parent.revealed = True child = Thing(self.game, "child") self.start_room.addThing(parent) self._assert_can_add_remove(parent, child)