Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
    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())
Ejemplo n.º 6
0
    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))
Ejemplo n.º 7
0
    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",
        )
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
    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])
Ejemplo n.º 12
0
    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])
Ejemplo n.º 13
0
    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",
     )
Ejemplo n.º 15
0
 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))
Ejemplo n.º 16
0
        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)
Ejemplo n.º 17
0
 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)