コード例 #1
0
 def test_north(self):
     ui = TestUI()
     miser = Miser(ui)
     miser.handle_command(["n"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.flags["dungeon_unlocked"] = True
     miser.handle_command(["n"])
     self.assertEqual(miser.current_position, Rooms.FOYER)
     miser.current_position = Rooms.DINING_ROOM
     miser.handle_command(["n"])
     self.assertEqual(miser.current_position, Rooms.DINING_ROOM)
コード例 #2
0
 def test_get_inside(self):
     ui = TestUI()
     miser = Miser(ui)
     miser.handle_command(["get", "mat"])
     miser.handle_command(["get", "key"])
     miser.handle_command(["unlock", "door"])
     miser.handle_command(["north"])
     self.assertEqual(miser.current_position, Rooms.FOYER)
コード例 #3
0
 def test_handle_command(self):
     ui = TestUI()
     miser = Miser(ui)
     miser.handle_command(["backlit"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.handle_command(["get", "sword"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.handle_command(["get", "donut"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
コード例 #4
0
 def test_west(self):
     ui = TestUI()
     miser = Miser(ui)
     miser.handle_command(["w"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.current_position = Rooms.FOYER
     miser.handle_command(["w"])
     self.assertEqual(miser.current_position, Rooms.DINING_ROOM)
コード例 #5
0
 def test_score_command(self):
     ui = TestUI()
     miser = Miser(ui)
     # score can exit from user input
     miser.flags["game_over"] = False
     ui.input_buffer = ["y"]
     miser.handle_command(["score"])
     self.assertTrue(miser.flags["game_over"])
     # score can not exit from user input
     miser.flags["game_over"] = False
     ui.input_buffer = ["n"]
     miser.handle_command(["score"])
     self.assertFalse(miser.flags["game_over"])
コード例 #6
0
 def test_exposing_key_works(self):
     ui = TestUI()
     miser = Miser(ui)
     self.assertEqual(miser.get_item_location(Subjects.KEY), -2)
     miser.handle_command(["move", "mat"])
     self.assertEqual(miser.get_item_location(Subjects.KEY),
                      Rooms.FRONT_PORCH)
コード例 #7
0
 def test_say_command(self):
     ui = TestUI()
     miser = Miser(ui)
     miser.handle_command(["say", "xyzzy"])
     miser.handle_command(["say", "sword"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.current_position = Rooms.FRONT_PORCH
     miser.handle_command(["say", "victory"])
     self.assertEqual(miser.flags["portal_visible"], False)
     miser.current_position = Rooms.TROPHY_ROOM
     miser.handle_command(["say", "victory"])
     self.assertEqual(miser.flags["portal_visible"], True)
     miser.current_position = Rooms.FRONT_PORCH
     miser.handle_command(["say", "ritnew"])
     self.assertEqual(miser.flags["snake_charmed"], False)
     miser.current_position = Rooms.CONSERVATORY
     miser.handle_command(["say", "ritnew"])
     self.assertEqual(miser.flags["snake_charmed"], True)
コード例 #8
0
 def test_open_command(self):
     ui = TestUI()
     miser = Miser(ui)
     # can't open missing book
     miser.handle_command(["open", "book"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     # can open book if present
     miser.current_position = Rooms.LIBRARY
     miser.handle_command(["open", "book"])
     self.assertEqual(miser.current_position, Rooms.LIBRARY)
     # can open book in inventory
     miser.handle_command(["get", "book"])
     miser.current_position = Rooms.FRONT_PORCH
     miser.handle_command(["open", "book"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     # open valve
     miser.current_position = Rooms.PUMP_HOUSE
     miser.handle_command(["open", "valve"])
     self.assertEqual(miser.current_position, Rooms.PUMP_HOUSE)
     # open front door only if unlocked
     miser = Miser(ui)
     miser.handle_command(["open", "door"])
     self.assertFalse(miser.flags["dungeon_unlocked"])
     miser.flags["dungeon_unlocked"] = True
     miser.handle_command(["open", "door"])
     self.assertTrue(miser.flags["dungeon_unlocked"])
     miser.handle_command(["open", "door"])
     self.assertTrue(miser.flags["dungeon_unlocked"])
     # can't open doors just anywhere
     miser.current_position = Rooms.CLOSET
     miser.handle_command(["open", "door"])
     self.assertEqual(miser.current_position, Rooms.CLOSET)
     # opening trapdoor leads to dungeon
     miser.current_position = Rooms.PARLOR
     miser.handle_command(["open", "door"])
     self.assertEqual(miser.current_position, Rooms.DUNGEON)
     # open cabinet needs cabinet
     miser.current_position = Rooms.FRONT_PORCH
     miser.handle_command(["open", "cabinet"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.current_position = Rooms.REDWALL_ROOM
     miser.handle_command(["open", "cabinet"])
     self.assertEqual(miser.current_position, Rooms.REDWALL_ROOM)
     # open bag needs bag
     miser.current_position = Rooms.FRONT_PORCH
     miser.handle_command(["open", "bag"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.current_position = Rooms.VAULT
     miser.handle_command(["open", "bag"])
     self.assertEqual(miser.current_position, Rooms.VAULT)
     # open vault needs vault
     miser.current_position = Rooms.FRONT_PORCH
     miser.handle_command(["open", "vault"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.current_position = Rooms.REDWALL_ROOM
     miser.flags["found_vault"] = True
     miser.flags["vault_open"] = False
     miser.handle_command(["open", "vault"])
     self.assertEqual(miser.current_position, Rooms.REDWALL_ROOM)
     miser.flags["vault_open"] = True
     miser.handle_command(["open", "vault"])
     self.assertEqual(miser.current_position, Rooms.REDWALL_ROOM)
     # open organ needs ballroom
     miser.current_position = Rooms.FRONT_PORCH
     miser.handle_command(["open", "organ"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.current_position = Rooms.BALLROOM
     miser.handle_command(["open", "organ"])
     self.assertEqual(miser.current_position, Rooms.BALLROOM)
     miser.flags["organ_playing"] = True
     miser.handle_command(["open", "organ"])
     self.assertEqual(miser.current_position, Rooms.BALLROOM)
     miser.handle_command(["open", "organ"])
     self.assertEqual(miser.current_position, Rooms.BALLROOM)
コード例 #9
0
 def test_go_command(self):
     ui = TestUI()
     miser = Miser(ui)
     # no stairs without sword
     miser.current_position = Rooms.GREAT_HALL
     miser.handle_command(["go", "stairs"])
     self.assertEqual(miser.current_position, Rooms.GREAT_HALL)
     # stairs with sword
     miser.current_position = Rooms.CHINESE_ROOM
     miser.handle_command(["get", "sword"])
     miser.current_position = Rooms.GREAT_HALL
     miser.handle_command(["go", "stairs"])
     self.assertEqual(miser.current_position, Rooms.MIDDLE_WESTERN_HALLWAY)
     # stairs down
     miser.handle_command(["go", "stairs"])
     self.assertEqual(miser.current_position, Rooms.GREAT_HALL)
     # no stairs
     miser.current_position = Rooms.FRONT_PORCH
     miser.handle_command(["go", "stairs"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     # ladder in wrong place
     miser.current_position = Rooms.FRONT_PORCH
     miser.handle_command(["go", "ladder"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     # pool in wrong place
     miser.current_position = Rooms.FRONT_PORCH
     miser.handle_command(["go", "pool"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     # can't go flooded pool
     miser.current_position = Rooms.POOL_AREA
     miser.flags["pool_flooded"] = True
     miser.handle_command(["go", "pool"])
     self.assertEqual(miser.current_position, Rooms.POOL_AREA)
     # can go empty pool
     miser.flags["pool_flooded"] = False
     miser.handle_command(["go", "pool"])
     self.assertEqual(miser.current_position, Rooms.BOTTOM_OF_POOL)
     # can go up ladder
     miser.handle_command(["go", "ladder"])
     self.assertEqual(miser.current_position, Rooms.POOL_AREA)
コード例 #10
0
 def test_unlock_vault(self):
     ui = TestUI()
     miser = Miser(ui)
     # vault is hidden
     miser.current_position = Rooms.REDWALL_ROOM
     miser.handle_command(["unlock", "vault"])
     self.assertEqual(miser.current_position, Rooms.REDWALL_ROOM)
     # vault exposed, no combo
     miser.flags["found_vault"] = True
     miser.handle_command(["unlock", "vault"])
     self.assertEqual(miser.current_position, Rooms.REDWALL_ROOM)
     # vault exposed, known combo
     miser.flags["know_combination"] = True
     miser.handle_command(["unlock", "vault"])
     self.assertEqual(miser.flags["vault_open"], True)
     # vault reopen
     miser.handle_command(["unlock", "vault"])
     self.assertEqual(miser.flags["vault_open"], True)
コード例 #11
0
 def test_swim_command(self):
     ui = TestUI()
     miser = Miser(ui)
     # can't swim here
     miser.handle_command(["swim"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     # swim in wishing well
     miser.current_position = Rooms.PORTICO
     miser.handle_command(["swim"])
     self.assertEqual(miser.current_position, Rooms.PORTICO)
     # swim in mercury pool
     miser.current_position = Rooms.POOL_AREA
     miser.handle_command(["swim"])
     self.assertEqual(miser.current_position, Rooms.POOL_AREA)
     # swim in empty pool
     miser.flags["pool_flooded"] = False
     miser.handle_command(["swim"])
     self.assertEqual(miser.current_position, Rooms.POOL_AREA)
コード例 #12
0
 def test_turn_command(self):
     ui = TestUI()
     miser = Miser(ui)
     miser.handle_command(["turn", "mat"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.handle_command(["turn", "valve"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.current_position = Rooms.PUMP_HOUSE
     miser.flags["pool_flooded"] = True
     miser.items[Items.RING].location = -3
     miser.handle_command(["turn", "valve"])
     self.assertEqual(miser.flags["pool_flooded"], False)
     self.assertEqual(miser.items[Items.RING].location, Rooms.POOL_AREA)
     miser.flags["pool_flooded"] = False
     miser.items[Items.RING].location = Rooms.POOL_AREA
     miser.handle_command(["turn", "valve"])
     self.assertEqual(miser.flags["pool_flooded"], True)
     self.assertEqual(miser.items[Items.RING].location, -3)
コード例 #13
0
 def test_east(self):
     ui = TestUI()
     miser = Miser(ui)
     miser.handle_command(["e"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.current_position = Rooms.DINING_ROOM
     miser.handle_command(["e"])
     self.assertEqual(miser.current_position, Rooms.FOYER)
     miser.current_position = Rooms.CONSERVATORY
     miser.flags["snake_charmed"] = False
     miser.flags["angry_snake"] = False
     miser.handle_command(["e"])
     self.assertEqual(miser.current_position, Rooms.CONSERVATORY)
     self.assertEqual(miser.flags["angry_snake"], True)
     miser.current_position = Rooms.CONSERVATORY
     miser.flags["snake_charmed"] = False
     miser.flags["angry_snake"] = True
     miser.handle_command(["e"])
     self.assertEqual(miser.flags["game_over"], True)
コード例 #14
0
 def test_south(self):
     ui = TestUI()
     miser = Miser(ui)
     miser.handle_command(["s"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.current_position = Rooms.GREAT_HALL
     miser.handle_command(["s"])
     self.assertEqual(miser.current_position, Rooms.FOYER)
     miser.current_position = Rooms.BLUE_ROOM
     miser.flags["fire_burning"] = True
     miser.handle_command(["s"])
     self.assertEqual(miser.flags["game_over"], True)
コード例 #15
0
 def test_unlock_front_door(self):
     ui = TestUI()
     miser = Miser(ui)
     miser.handle_command(["unlock", "door"])
     self.assertEqual(miser.flags["dungeon_unlocked"], False)
     miser.handle_command(["move", "mat"])
     miser.handle_command(["get", "key"])
     miser.handle_command(["unlock", "door"])
     self.assertEqual(miser.flags["dungeon_unlocked"], True)
     miser.handle_command(["unlock", "door"])
     self.assertEqual(miser.flags["dungeon_unlocked"], True)
コード例 #16
0
 def test_fix_command(self):
     ui = TestUI()
     miser = Miser(ui)
     # fix valve
     miser.current_position = Rooms.PUMP_HOUSE
     miser.handle_command(["fix", "valve"])
     self.assertEqual(miser.current_position, Rooms.PUMP_HOUSE)
     # fix not parachute
     miser.handle_command(["fix", "bucket"])
     self.assertEqual(miser.current_position, Rooms.PUMP_HOUSE)
     # fix parachute when not here
     miser.handle_command(["fix", "parachute"])
     self.assertEqual(miser.current_position, Rooms.PUMP_HOUSE)
     # fix parachute without ripcord
     miser.current_position = Rooms.CLOSET
     miser.handle_command(["get", "parachute"])
     miser.handle_command(["fix", "parachute"])
     self.assertEqual(miser.current_position, Rooms.CLOSET)
     # fix parachute
     miser.current_position = Rooms.BALLROOM
     miser.flags["organ_playing"] = True
     miser.handle_command(["open", "organ"])
     self.assertEqual(miser.get_item_location(Subjects.RIPCORD),
                      Rooms.BALLROOM)
     miser.handle_command(["get", "ripcord"])
     miser.handle_command(["fix", "parachute"])
     self.assertEqual(miser.current_position, Rooms.BALLROOM)
     # fix it again
     miser.handle_command(["fix", "parachute"])
     self.assertEqual(miser.current_position, Rooms.BALLROOM)
コード例 #17
0
 def test_final_stats(self):
     ui = TestUI()
     miser = Miser(ui)
     miser.final_stats()
     self.assertEqual(miser.gathered_treasures, 0)
     miser.flags["escaped"] = True
     miser.final_stats()
     self.assertEqual(miser.gathered_treasures, 1)
     miser.gathered_treasures = 1
     miser.flags["escaped"] = True
     miser.final_stats()
     self.assertEqual(miser.gathered_treasures, 2)
     miser.gathered_treasures = 2
     miser.flags["escaped"] = True
     miser.final_stats()
     self.assertEqual(miser.gathered_treasures, 3)
     miser.gathered_treasures = 3
     miser.flags["escaped"] = True
     miser.final_stats()
     self.assertEqual(miser.gathered_treasures, 4)
     miser.gathered_treasures = 4
     miser.flags["escaped"] = True
     miser.final_stats()
     self.assertEqual(miser.gathered_treasures, 5)
     miser.gathered_treasures = 5
     miser.flags["escaped"] = True
     miser.final_stats()
     self.assertEqual(miser.gathered_treasures, 6)
コード例 #18
0
 def test_unlock_command(self):
     ui = TestUI()
     miser = Miser(ui)
     # unhandled object
     miser.handle_command(["unlock", "mat"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     # handled object, wrong location
     miser.current_position = Rooms.FOYER
     miser.handle_command(["unlock", "door"])
     self.assertEqual(miser.current_position, Rooms.FOYER)
     # vault not visible
     miser.current_position = Rooms.REDWALL_ROOM
     miser.handle_command(["unlock", "door"])
     self.assertEqual(miser.current_position, Rooms.REDWALL_ROOM)
     # trapdoor has no lock
     miser.current_position = Rooms.PARLOR
     miser.handle_command(["unlock", "door"])
     self.assertEqual(miser.current_position, Rooms.PARLOR)
コード例 #19
0
 def test_move_things(self):
     ui = TestUI()
     miser = Miser(ui)
     miser.current_position = Rooms.REDWALL_ROOM
     miser.handle_command(["move", "cabinet"])
     self.assertEqual(miser.flags["found_vault"], True)
     miser.current_position = Rooms.BALLROOM
     miser.handle_command(["move", "organ"])
     self.assertEqual(miser.current_position, Rooms.BALLROOM)
     miser.handle_command(["move", "mat"])
     self.assertEqual(miser.current_position, Rooms.BALLROOM)
     miser.current_position = Rooms.PARLOR
     miser.handle_command(["move", "rug"])
     self.assertEqual(miser.items[Items.TRAPDOOR].location, Rooms.PARLOR)
     miser.current_position = Rooms.CHINESE_ROOM
     miser.handle_command(["move", "sword"])
     self.assertEqual(miser.current_position, Rooms.CHINESE_ROOM)
コード例 #20
0
 def test_get_and_drop_work(self):
     ui = TestUI()
     miser = Miser(ui)
     self.assertEqual(miser.get_item_location(Subjects.MAT),
                      Rooms.FRONT_PORCH)
     miser.handle_command(["get", "mat"])
     self.assertEqual(miser.get_item_location(Subjects.MAT), -1)
     miser.handle_command(["drop", "mat"])
     self.assertEqual(miser.get_item_location(Subjects.MAT),
                      Rooms.FRONT_PORCH)
     miser.handle_command(["drop", "mat"])
     self.assertEqual(miser.get_item_location(Subjects.MAT),
                      Rooms.FRONT_PORCH)
     miser.handle_command(["get", "mat"])
     miser.handle_command(["get", "mat"])
     self.assertEqual(miser.get_item_location(Subjects.MAT), -1)
     miser.current_position = Rooms.PUMP_HOUSE
     miser.handle_command(["get", "valve"])
     self.assertEqual(miser.subjects[Subjects.VALVE].item_id,
                      Items.UNMOVABLE)
     treasure_count = miser.gathered_treasures
     miser.current_position = Rooms.HEDGE_MAZE5
     miser.handle_command(["get", "leaf"])
     self.assertEqual(miser.gathered_treasures, treasure_count + 1)
     miser.handle_command(["drop", "leaf"])
     self.assertEqual(miser.gathered_treasures, treasure_count + 1)
     miser.current_position = Rooms.WEST_BEDROOM
     miser.handle_command(["get", "penny"])
     self.assertEqual(miser.get_item_location(Subjects.PENNY), -1)
     miser.current_position = Rooms.PORTICO
     miser.handle_command(["drop", "penny"])
     self.assertEqual(miser.rooms[Rooms.BALLROOM].moves[2], Rooms.CHAPEL)
     self.assertEqual(miser.items[Items.PENNY].location, -2)
     miser.current_position = Rooms.BACK_YARD
     miser.handle_command(["get", "cross"])
     self.assertEqual(miser.get_item_location(Subjects.CROSS), -1)
     miser.current_position = Rooms.CHAPEL
     miser.flags["organ_playing"] = False
     miser.handle_command(["drop", "cross"])
     self.assertEqual(miser.flags["organ_playing"], True)
コード例 #21
0
 def test_pour_things(self):
     ui = TestUI()
     miser = Miser(ui)
     miser.handle_command(["pour", "mat"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.handle_command(["pour", "bucket"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.current_position = Rooms.PUMP_HOUSE
     miser.handle_command(["pour", "bucket"])
     self.assertEqual(miser.current_position, Rooms.PUMP_HOUSE)
     miser.handle_command(["get", "bucket"])
     miser.flags["bucket_full"] = True
     miser.handle_command(["pour", "bucket"])
     self.assertEqual(miser.current_position, Rooms.PUMP_HOUSE)
     self.assertEqual(miser.flags["bucket_full"], False)
     miser.current_position = Rooms.BLUE_ROOM
     miser.flags["fire_burning"] = True
     miser.flags["bucket_full"] = True
     miser.handle_command(["pour", "bucket"])
     self.assertEqual(miser.current_position, Rooms.BLUE_ROOM)
     self.assertEqual(miser.flags["fire_burning"], False)
     self.assertEqual(miser.flags["bucket_full"], False)
     # pour into wishing well
     miser.flags["bucket_full"] = True
     miser.current_position = Rooms.PORTICO
     miser.handle_command(["pour", "bucket"])
     self.assertEqual(miser.current_position, Rooms.PORTICO)
コード例 #22
0
 def test_jump_command(self):
     ui = TestUI()
     miser = Miser(ui)
     # no place to jump
     miser.current_position = Rooms.FRONT_PORCH
     miser.handle_command(["jump"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     # jump stairs (first)
     miser.current_position = Rooms.MIDDLE_WESTERN_HALLWAY
     miser.handle_command(["jump"])
     self.assertEqual(miser.current_position, Rooms.GREAT_HALL)
     self.assertTrue(miser.flags["jump_warning"])
     # jump stairs (second) kills you
     miser.current_position = Rooms.MIDDLE_WESTERN_HALLWAY
     miser.handle_command(["jump"])
     self.assertTrue(miser.flags["game_over"])
     # jump front balcony no parachute kills you
     miser = Miser(ui)
     miser.current_position = Rooms.FRONT_BALCONY
     miser.handle_command(["jump"])
     self.assertTrue(miser.flags["game_over"])
     # jump with broken parachute does nothing
     miser = Miser(ui)
     miser.current_position = Rooms.CLOSET
     miser.handle_command(["get", "parachute"])
     miser.current_position = Rooms.FRONT_BALCONY
     miser.handle_command(["jump"])
     self.assertEqual(miser.current_position, Rooms.FRONT_BALCONY)
     # jump rear balcony with good parachute lands in maze
     miser = Miser(ui)
     miser.items[Items.REPAIRED_PARACHUTE].location = -1
     miser.current_position = Rooms.REAR_BALCONY
     miser.handle_command(["jump"])
     self.assertEqual(miser.current_position, Rooms.HEDGE_MAZE0)
     # jump front balcony with good parachute escapes
     miser = Miser(ui)
     miser.items[Items.REPAIRED_PARACHUTE].location = -1
     miser.current_position = Rooms.FRONT_BALCONY
     miser.handle_command(["jump"])
     self.assertTrue(miser.flags["escaped"])
コード例 #23
0
 def test_fill_things(self):
     ui = TestUI()
     miser = Miser(ui)
     miser.handle_command(["fill", "pool"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.handle_command(["fill", "key"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.handle_command(["fill", "mat"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     miser.current_position = Rooms.PUMP_HOUSE
     miser.handle_command(["get", "bucket"])
     self.assertEqual(miser.flags["bucket_full"], False)
     miser.handle_command(["fill", "bucket"])
     self.assertEqual(miser.current_position, Rooms.PUMP_HOUSE)
     self.assertEqual(miser.flags["bucket_full"], False)
     miser.flags["bucket_full"] = True
     miser.handle_command(["fill", "bucket"])
     self.assertEqual(miser.current_position, Rooms.PUMP_HOUSE)
     self.assertEqual(miser.flags["bucket_full"], True)
     miser.current_position = Rooms.POOL_AREA
     miser.flags["pool_flooded"] = True
     miser.flags["bucket_full"] = False
     miser.handle_command(["fill", "bucket"])
     self.assertEqual(miser.current_position, Rooms.POOL_AREA)
     self.assertEqual(miser.flags["bucket_full"], False)
     miser.current_position = Rooms.BACK_YARD
     miser.flags["bucket_full"] = False
     miser.handle_command(["fill", "bucket"])
     self.assertEqual(miser.current_position, Rooms.BACK_YARD)
     self.assertEqual(miser.flags["bucket_full"], True)
コード例 #24
0
 def test_main_command_loop(self):
     ui = TestUI()
     miser = Miser(ui)
     # loop exits when game over
     miser.flags["game_over"] = True
     miser.main_command_loop()
     self.assertTrue(True)
     # loop can exit from user input
     miser.flags["game_over"] = False
     ui.input_buffer = ["quit", "y"]
     miser.main_command_loop()
     self.assertTrue(miser.flags["game_over"])
     # bad input is handled
     miser.flags["game_over"] = False
     ui.input_buffer = ["this is a test", "quit", "y"]
     miser.main_command_loop()
     self.assertTrue(miser.flags["game_over"])
コード例 #25
0
 def test_can_create(self):
     ui = TestUI()
     miser = Miser(ui)
     self.assertIsInstance(miser, Miser)
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
コード例 #26
0
 def test_complete(self):
     ui = TestUI()
     miser = Miser(ui)
     miser.handle_command(["get", "mat"])
     miser.handle_command(["get", "key"])
     miser.handle_command(["unlock", "door"])
     miser.handle_command(["north"])
     miser.handle_command(["west"])
     miser.handle_command(["west"])
     miser.handle_command(["get", "sword"])
     miser.handle_command(["north"])
     miser.handle_command(["north"])
     self.assertEqual(miser.current_position, Rooms.BACK_YARD)
     miser.handle_command(["get", "cross"])
     miser.handle_command(["west"])
     miser.handle_command(["north"])
     miser.handle_command(["get", "bucket"])
     miser.handle_command(["turn", "valve"])
     miser.handle_command(["south"])
     miser.handle_command(["go", "pool"])
     self.assertEqual(miser.current_position, Rooms.BOTTOM_OF_POOL)
     miser.handle_command(["get", "ring"])
     ui.input_buffer = ["n"]
     miser.handle_command(["score"])
     self.assertEqual(miser.gathered_treasures, 1)
     miser.handle_command(["go", "ladder"])
     miser.handle_command(["east"])
     miser.handle_command(["fill", "bucket"])
     miser.handle_command(["east"])
     miser.handle_command(["west"])
     miser.handle_command(["north"])
     miser.handle_command(["west"])
     miser.handle_command(["get", "leaf"])
     ui.input_buffer = ["n"]
     miser.handle_command(["score"])
     self.assertEqual(miser.gathered_treasures, 2)
     miser.handle_command(["east"])
     miser.handle_command(["south"])
     miser.handle_command(["east"])
     miser.handle_command(["south"])
     self.assertEqual(miser.current_position, Rooms.BACK_YARD)
     miser.handle_command(["south"])
     miser.handle_command(["east"])
     miser.handle_command(["east"])
     miser.handle_command(["east"])
     self.assertEqual(miser.current_position, Rooms.CONSERVATORY)
     miser.handle_command(["say", "ritnew"])
     miser.handle_command(["south"])
     self.assertEqual(miser.current_position, Rooms.REDWALL_ROOM)
     miser.handle_command(["push", "cabinet"])
     miser.handle_command(["south"])
     miser.handle_command(["move", "rug"])
     miser.handle_command(["east"])
     miser.handle_command(["pour", "bucket"])
     miser.handle_command(["south"])
     miser.handle_command(["get", "book"])
     miser.handle_command(["open", "book"])
     miser.handle_command(["north"])
     miser.handle_command(["east"])
     miser.handle_command(["north"])
     self.assertEqual(miser.current_position, Rooms.TROPHY_ROOM)
     miser.handle_command(["say", "victory"])
     miser.handle_command(["west"])
     miser.handle_command(["west"])
     miser.handle_command(["west"])
     miser.handle_command(["south"])
     miser.handle_command(["go", "stairs"])
     miser.handle_command(["west"])
     miser.handle_command(["get", "penny"])
     miser.handle_command(["east"])
     miser.handle_command(["east"])
     miser.handle_command(["get", "paper"])
     miser.handle_command(["read", "paper"])
     miser.handle_command(["east"])
     miser.handle_command(["east"])
     miser.handle_command(["north"])
     miser.handle_command(["get", "parachute"])
     miser.handle_command(["south"])
     miser.handle_command(["west"])
     miser.handle_command(["south"])
     self.assertEqual(miser.current_position, Rooms.SOUTH_END_EAST_HALLWAY)
     miser.handle_command(["get", "painting"])
     ui.input_buffer = ["n"]
     miser.handle_command(["score"])
     self.assertEqual(miser.gathered_treasures, 3)
     miser.handle_command(["north"])
     miser.handle_command(["west"])
     miser.handle_command(["west"])
     miser.handle_command(["go", "stairs"])
     miser.handle_command(["north"])
     miser.handle_command(["east"])
     miser.handle_command(["south"])
     miser.handle_command(["unlock", "vault"])
     miser.handle_command(["east"])
     self.assertEqual(miser.current_position, Rooms.VAULT)
     miser.handle_command(["get", "bag"])
     ui.input_buffer = ["n"]
     miser.handle_command(["score"])
     self.assertEqual(miser.gathered_treasures, 4)
     miser.handle_command(["west"])
     miser.handle_command(["north"])
     miser.handle_command(["east"])
     miser.handle_command(["east"])
     miser.handle_command(["north"])
     miser.handle_command(["west"])
     miser.handle_command(["west"])
     self.assertEqual(miser.current_position, Rooms.PORTICO)
     miser.handle_command(["drop", "penny"])
     miser.handle_command(["east"])
     miser.handle_command(["north"])
     miser.handle_command(["east"])
     miser.handle_command(["drop", "cross"])
     miser.handle_command(["west"])
     self.assertEqual(miser.current_position, Rooms.BALLROOM)
     miser.handle_command(["open", "organ"])
     miser.handle_command(["get", "ripcord"])
     miser.handle_command(["get", "slippers"])
     ui.input_buffer = ["n"]
     miser.handle_command(["score"])
     self.assertEqual(miser.gathered_treasures, 5)
     miser.handle_command(["fix", "parachute"])
     self.assertEqual(miser.current_position, Rooms.BALLROOM)
     miser.handle_command(["south"])
     self.assertEqual(miser.current_position, Rooms.PORTICO)
     miser.handle_command(["east"])
     self.assertEqual(miser.current_position, Rooms.SMOKING_ROOM)
     miser.handle_command(["east"])
     self.assertEqual(miser.current_position, Rooms.GAME_ROOM)
     miser.handle_command(["south"])
     self.assertEqual(miser.current_position, Rooms.TROPHY_ROOM)
     miser.handle_command(["west"])
     miser.handle_command(["west"])
     miser.handle_command(["west"])
     miser.handle_command(["south"])
     self.assertEqual(miser.current_position, Rooms.GREAT_HALL)
     miser.handle_command(["go", "stairs"])
     miser.handle_command(["east"])
     miser.handle_command(["east"])
     miser.handle_command(["south"])
     miser.handle_command(["south"])
     self.assertEqual(miser.current_position, Rooms.FRONT_BALCONY)
     miser.handle_command(["jump"])
     self.assertEqual(miser.gathered_treasures, 7)
     self.assertTrue(miser.flags["game_over"])
コード例 #27
0
 def test_read_command(self):
     ui = TestUI()
     miser = Miser(ui)
     # read something not present
     miser.handle_command(["read", "ring"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     # read something unmovable
     miser.handle_command(["read", "door"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     # read something without writing
     miser.handle_command(["read", "mat"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     # read a book
     miser.current_position = Rooms.LIBRARY
     miser.handle_command(["read", "book"])
     self.assertEqual(miser.current_position, Rooms.LIBRARY)
     # read a paper
     miser.current_position = Rooms.MASTER_BEDROOM
     miser.handle_command(["read", "paper"])
     self.assertEqual(miser.current_position, Rooms.MASTER_BEDROOM)
コード例 #28
0
 def test_look_command(self):
     ui = TestUI()
     miser = Miser(ui)
     # carrying full bucket
     miser.current_position = Rooms.PUMP_HOUSE
     miser.flags["bucket_full"] = True
     miser.handle_command(["look"])
     self.assertEqual(miser.current_position, Rooms.PUMP_HOUSE)
     # pool flooded and empty
     miser.current_position = Rooms.POOL_AREA
     miser.flags["pool_flooded"] = False
     miser.handle_command(["look"])
     miser.flags["pool_flooded"] = True
     miser.handle_command(["look"])
     self.assertEqual(miser.current_position, Rooms.POOL_AREA)
     # fire in Blue room
     miser.current_position = Rooms.BLUE_ROOM
     miser.flags["fire_burning"] = True
     miser.handle_command(["look"])
     self.assertEqual(miser.current_position, Rooms.BLUE_ROOM)
     # pantry
     miser.current_position = Rooms.PANTRY
     miser.handle_command(["look"])
     self.assertEqual(miser.current_position, Rooms.PANTRY)
     # back yard
     miser.current_position = Rooms.BACK_YARD
     miser.handle_command(["look"])
     self.assertEqual(miser.current_position, Rooms.BACK_YARD)
     # open vault in Red Wall room
     miser.current_position = Rooms.REDWALL_ROOM
     miser.flags["vault_open"] = True
     miser.handle_command(["look"])
     self.assertEqual(miser.current_position, Rooms.REDWALL_ROOM)
コード例 #29
0
 def test_inventory_command(self):
     ui = TestUI()
     miser = Miser(ui)
     # works for empty
     miser.handle_command(["inventory"])
     # works for stuff
     miser.handle_command(["move", "mat"])
     miser.handle_command(["get", "key"])
     miser.handle_command(["inventory"])
     self.assertEqual(miser.current_position, Rooms.FRONT_PORCH)
     # full bucket works
     miser.current_position = Rooms.PUMP_HOUSE
     miser.handle_command(["get", "bucket"])
     miser.flags["bucket_full"] = True
     miser.handle_command(["inventory"])
     self.assertEqual(miser.current_position, Rooms.PUMP_HOUSE)
     # broken parachute works
     miser.current_position = Rooms.CLOSET
     miser.handle_command(["get", "parachute"])
     miser.handle_command(["inventory"])
     self.assertEqual(miser.current_position, Rooms.CLOSET)