def test_cannot_set_non_lock_as_door_lock(self): room2 = Room( self.game, "A different place", "Description of a different place. " ) c = DoorConnector(self.game, self.start_room, "n", room2, "s") lock = Surface(self.game, "lock?") with self.assertRaises(IFPError): c.setLock(lock)
def setUp(self): super().setUp() self.room2 = Room(self.game, "A hot room", "This room is uncomfortably hot. ") self.door = DoorConnector(self.game, self.start_room, "se", self.room2, "nw") self.key = Key(self.game, "key") self.me.addThing(self.key) self.lock = Lock(self.game, False, self.key) self.lock.is_locked = False self.door.setLock(self.lock)
def test_can_travel_DoorConnector(self): room1 = Room(self.game, "A place", "Description of a place. ") room2 = Room(self.game, "A different place", "Description of a different place. ") c = DoorConnector(self.game, room1, "n", room2, "s") self._assert_can_travel(room1, room2, c)
def test_lock_already_attached_to_something_cannot_be_applied_to_a_door(self): room2 = Room( self.game, "A different place", "Description of a different place. " ) c = DoorConnector(self.game, self.start_room, "n", room2, "s") lock = Lock(self.game, is_locked=True, key_obj=None) c.setLock(lock) c2 = DoorConnector(self.game, self.start_room, "e", room2, "w") with self.assertRaises(IFPError): c2.setLock(lock)
def test_cannot_travel_closed_and_locked_door(self): room2 = Room( self.game, "A different place", "Description of a different place. " ) c = DoorConnector(self.game, self.start_room, "n", room2, "s") lock = Lock(self.game, is_locked=True, key_obj=None) c.setLock(lock) self.assertItemIn( self.me, self.start_room.contains, "test needs player to start here" ) self.assertIs(self.start_room.north, c) self.game.turnMain("n") self.assertIn( f"{c.entrance_a.capNameArticle(True)} is locked. ", self.app.print_stack ) self.assertIs(self.me.location, self.start_room) self.assertItemIn( self.me, self.start_room.contains, "player should not have moved" )
def test_can_travel_DoorConnector(self): room1 = Room(self.game, "A place", "Description of a place. ") room2 = Room( self.game, "A different place", "Description of a different place. " ) c = DoorConnector(self.game, room1, "n", room2, "s") c.entrance_a.makeClosed() self._assert_can_travel(room1, room2, "n", "s") self.assertIn("You open the north door. ", self.app.print_stack) self.assertIn("You go through the north door. ", self.app.print_stack) self.assertIn("You go through the south door. ", self.app.print_stack) self.assertIn( room1.desc + "There is a door to the north. It is open. ", self.app.print_stack, )
class TestDoorVerbs(IFPTestCase): def setUp(self): super().setUp() self.room2 = Room(self.game, "A hot room", "This room is uncomfortably hot. ") self.door = DoorConnector(self.game, self.start_room, "se", self.room2, "nw") self.key = Key(self.game, "key") self.me.addThing(self.key) self.lock = Lock(self.game, False, self.key) self.lock.is_locked = False self.door.setLock(self.lock) def test_open_door(self): self.assertFalse( self.door.entrance_a.is_open, "This test needs the door to be initially closed", ) self.assertFalse( self.door.entrance_a.lock_obj.is_locked, "This test needs the door to be initially unlocked", ) self.game.turnMain("open door") self.assertTrue( self.door.entrance_a.is_open, "Performed open verb on unlocked door, but door is closed. " f"Msg: {self.app.print_stack[-1]}", ) def test_close_door(self): self.door.entrance_a.makeOpen() self.assertTrue( self.door.entrance_a.is_open, "This test needs the door to be initially open", ) self.game.turnMain("close door") self.assertFalse( self.door.entrance_a.is_open, "Performed close verb on open door, but door is open. " f"Msg: {self.app.print_stack[-1]}", ) def test_lock_door(self): self.lock.is_locked = False self.assertIn(self.key.ix, self.me.contains) self.assertIn(self.key, self.me.contains[self.key.ix]) self.game.turnMain("lock door") self.assertTrue( self.lock.is_locked, "Performed lock verb with key in inv, but lock is unlocked. " f"Msg: {self.app.print_stack[-1]}", ) def test_unlock_door(self): self.lock.is_locked = True self.assertIn(self.key.ix, self.me.contains) self.assertIn(self.key, self.me.contains[self.key.ix]) self.game.turnMain("unlock door") self.assertFalse( self.lock.is_locked, "Performed unlock verb with key in inv, but lock is locked. " f"Msg: {self.app.print_stack[-1]}", ) def test_lock_door_with(self): self.lock.is_locked = False self.assertIn(self.key.ix, self.me.contains) self.assertIn(self.key, self.me.contains[self.key.ix]) self.game.turnMain("lock door with key") self.assertTrue( self.lock.is_locked, "Performed lock with verb with key, but lock is unlocked. " f"Msg: {self.app.print_stack[-1]}", ) def test_unlock_door_with(self): self.lock.is_locked = True self.assertIn(self.key.ix, self.me.contains) self.assertIn(self.key, self.me.contains[self.key.ix]) self.game.turnMain("unlock door with key") self.assertFalse( self.lock.is_locked, "Performed unlock verb with key, but lock is locked. " f"Msg: {self.app.print_stack[-1]}", ) def test_open_locked_door(self): self.lock.is_locked = True self.assertFalse( self.door.entrance_a.is_open, "This test needs the door to be initially closed", ) self.assertTrue( self.door.entrance_a.lock_obj.is_locked, "This test needs the door to be initially locked", ) self.game.turnMain("open door") self.assertFalse( self.door.entrance_a.is_open, "Performed open verb on locked door, but door is open. " f"Msg: {self.app.print_stack[-1]}", )
boxlock = Lock(game, True, silverkey) box.setLock(boxlock) # Beach beach = OutdoorRoom(game, "Beach, near the shack", "You find yourself on an abandoned beach. ") def beachArrival(game): freeEnding.endGame(game) beach.arriveFunc = beachArrival shackdoor = DoorConnector(game, startroom, "e", beach, "w") shackdoor.entrance_a.description = "To the east, a door leads outside. " shackdoor.entrance_b.description = "The door to the shack is directly west of you. " cabinlock = Lock(game, True, rustykey) shackdoor.setLock(cabinlock) startroom.exit = shackdoor beach.entrance = shackdoor # Attic attic = Room(game, "Shack, attic", "You are in a dim, cramped attic. ") shackladder = LadderConnector(game, startroom, attic) shackladder.entrance_a.description = ( "Against the north wall is a ladder leading up to the attic. ")