def test_with_key(self): player = Player("julie", "f") key = Item("key", "door key") key.door_code = 12345 hall = Location("hall") door = Door("north", hall, "a locked door", locked=True, opened=False) with self.assertRaises(ActionRefused): door.unlock(player) with self.assertRaises(ActionRefused): door.unlock(player, key) door.door_code = 12345 self.assertTrue(door.locked) door.unlock(player, key) self.assertFalse(door.locked) door.locked = True with self.assertRaises(ActionRefused): door.unlock(player) key.move(player, player) door.unlock(player) self.assertFalse(door.locked) door.lock(player) self.assertTrue(door.locked)
def test_with_key(self): player = Player("julie", "f") key = Key("key", "door key") key.key_for(code=12345) hall = Location("hall") door = Door("north", hall, "a locked door", locked=True, opened=False) door2 = Door("south", hall, "another locked door", locked=True, opened=False) with self.assertRaises(ActionRefused): door.unlock(player) with self.assertRaises(ActionRefused): door.unlock(player, key) door.key_code = 12345 door2.key_code = 9999 key.key_for(door) self.assertTrue(door.locked) door.unlock(player, key) self.assertFalse(door.locked) with self.assertRaises(ActionRefused): door2.unlock(key) door.locked = True with self.assertRaises(ActionRefused): door.unlock(player) key.move(player, player) door.unlock(player) self.assertFalse(door.locked) door.lock(player) self.assertTrue(door.locked) door.unlock(player) player.remove(key, player) with self.assertRaises(ActionRefused): door.lock(player) door.key_code = None with self.assertRaises(LocationIntegrityError): key.key_for(door)
def test_actions(self): player = Player("julie", "f") hall = Location("hall") attic = Location("attic") unbound_exit = Exit("random", "foo.bar", "a random exit") with self.assertRaises(Exception): self.assertFalse(unbound_exit.allow_passage( player)) # should fail because not bound exit1 = Exit("ladder", attic, "first ladder to attic") exit1.allow_passage(player) door = Door("north", hall, "open unlocked door", locked=False, opened=True) with self.assertRaises(ActionRefused) as x: door.open(player) # fail, it's already open self.assertEqual("It's already open.", str(x.exception)) door.close(player) self.assertFalse(door.opened, "must be closed") with self.assertRaises(ActionRefused) as x: door.lock(player) # default door can't be locked self.assertEqual("You don't seem to have the means to lock it.", str(x.exception)) with self.assertRaises(ActionRefused) as x: door.unlock(player) # fail, it's not locked self.assertEqual("It's not locked.", str(x.exception)) door = Door("north", hall, "open locked door", locked=False, opened=True) with self.assertRaises(ActionRefused) as x: door.open(player) # fail, it's already open self.assertEqual("It's already open.", str(x.exception)) door.close(player) door.locked = True with self.assertRaises(ActionRefused) as x: door.lock(player) # it's already locked self.assertEqual("It's already locked.", str(x.exception)) self.assertTrue(door.locked) with self.assertRaises(ActionRefused) as x: door.unlock(player) # you can't unlock it self.assertEqual("You don't seem to have the means to unlock it.", str(x.exception)) self.assertTrue(door.locked) door = Door("north", hall, "closed unlocked door", locked=False, opened=False) door.open(player) self.assertTrue(door.opened) door.close(player) self.assertFalse(door.opened) with self.assertRaises(ActionRefused) as x: door.close(player) # it's already closed self.assertEqual("It's already closed.", str(x.exception)) door = Door("north", hall, "closed locked door", locked=True, opened=False) with self.assertRaises(ActionRefused) as x: door.open(player) # can't open it, it's locked self.assertEqual("You try to open it, but it's locked.", str(x.exception)) with self.assertRaises(ActionRefused) as x: door.close(player) # it's already closed self.assertEqual("It's already closed.", str(x.exception)) door = Door("north", hall, "Some door.") self.assertEqual("Some door.", door.short_description) self.assertEqual("Some door. It is open and unlocked.", door.description) self.assertTrue(door.opened) self.assertFalse(door.locked) door = Door("north", hall, "Some door.", "This is a peculiar door leading north.") self.assertEqual("Some door.", door.short_description) self.assertEqual( "This is a peculiar door leading north. It is open and unlocked.", door.description)
def test_actions(self): player = Player("julie", "f") hall = Location("hall") attic = Location("attic") unbound_exit = Exit("random", "foo.bar", "a random exit") with self.assertRaises(Exception): self.assertFalse(unbound_exit.allow_passage(player)) # should fail because not bound exit1 = Exit("ladder", attic, "first ladder to attic") exit1.allow_passage(player) door = Door("north", hall, "open unlocked door", locked=False, opened=True) with self.assertRaises(ActionRefused) as x: door.open(player) # fail, it's already open self.assertEqual("It's already open.", str(x.exception)) door.close(player) self.assertFalse(door.opened, "must be closed") with self.assertRaises(ActionRefused) as x: door.lock(player) # default door can't be locked self.assertEqual("You don't seem to have the means to lock it.", str(x.exception)) with self.assertRaises(ActionRefused) as x: door.unlock(player) # fail, it's not locked self.assertEqual("It's not locked.", str(x.exception)) door = Door("north", hall, "open locked door", locked=False, opened=True) with self.assertRaises(ActionRefused) as x: door.open(player) # fail, it's already open self.assertEqual("It's already open.", str(x.exception)) door.close(player) door.locked = True with self.assertRaises(ActionRefused) as x: door.lock(player) # it's already locked self.assertEqual("It's already locked.", str(x.exception)) self.assertTrue(door.locked) with self.assertRaises(ActionRefused) as x: door.unlock(player) # you can't unlock it self.assertEqual("You don't seem to have the means to unlock it.", str(x.exception)) self.assertTrue(door.locked) door = Door("north", hall, "closed unlocked door", locked=False, opened=False) door.open(player) self.assertTrue(door.opened) door.close(player) self.assertFalse(door.opened) with self.assertRaises(ActionRefused) as x: door.close(player) # it's already closed self.assertEqual("It's already closed.", str(x.exception)) door = Door("north", hall, "closed locked door", locked=True, opened=False) with self.assertRaises(ActionRefused) as x: door.open(player) # can't open it, it's locked self.assertEqual("You try to open it, but it's locked.", str(x.exception)) with self.assertRaises(ActionRefused) as x: door.close(player) # it's already closed self.assertEqual("It's already closed.", str(x.exception)) door = Door("north", hall, "Some door.") self.assertEqual("Some door.", door.short_description) self.assertEqual("Some door. It is open and unlocked.", door.description) self.assertTrue(door.opened) self.assertFalse(door.locked) door = Door("north", hall, "Some door.", "This is a peculiar door leading north.") self.assertEqual("Some door.", door.short_description) self.assertEqual("This is a peculiar door leading north. It is open and unlocked.", door.description)