diff gamelib/tests/test_walkthrough.py @ 254:ca0c2875ad8f

More test fixes.
author Jeremy Thurgood <firxen@gmail.com>
date Fri, 27 Aug 2010 17:35:15 +0200
parents dfc89bc64fdb
children bfb6c682b4fb
line wrap: on
line diff
--- a/gamelib/tests/test_walkthrough.py	Fri Aug 27 17:32:05 2010 +0200
+++ b/gamelib/tests/test_walkthrough.py	Fri Aug 27 17:35:15 2010 +0200
@@ -8,12 +8,15 @@
     def close_detail(self):
         self.state.set_current_detail(None)
 
-    def move(self, source, target):
-        self.interact_thing(source+'.door')
+    def move_to(self, target):
+        self.interact_thing(self.state.current_scene.name + '.door')
         self.assert_current_scene('map')
-        self.interact_thing('map.to'+target)
+        self.interact_thing('map.to' + target)
         self.assert_current_scene(target)
 
+    def test_walkthrough_complete(self):
+        self.fail("Walkthrough incomplete.")
+
     def test_walkthrough(self):
         """A complete game walkthrough.
 
@@ -40,21 +43,8 @@
         self.assert_game_data('door', 'open', 'cryo.door')
         self.assert_inventory_item('titanium_leg')
 
-        # Go to the machine room.
-        self.move('cryo', 'machine')
-
-        # Sharpen leg into machete.
-        self.interact_thing('machine.grinder', 'titanium_leg')
-        self.assert_inventory_item('titanium_leg', False)
-        self.assert_inventory_item('machete')
-
         # Go to the mess.
-        self.move('machine', 'mess')
-
-        # Clear the broccoli.
-        self.assert_game_data('status', 'blocked', 'mess.tubes')
-        self.interact_thing('mess.tubes', 'machete')
-        self.assert_game_data('status', 'broken', 'mess.tubes')
+        self.move_to('mess')
 
         # Get the cans.
         self.assert_game_data('cans_available', 3, 'mess.cans')
@@ -66,6 +56,39 @@
         self.assert_inventory_item('full_can.2')
         self.assert_game_data('cans_available', 0, 'mess.cans')
 
+        # Bash one of the cans.
+        self.assert_item_exists('dented_can.0', False)
+        self.interact_item('full_can.1', 'titanium_leg')
+        self.assert_inventory_item('dented_can.0')
+        self.assert_inventory_item('full_can.1', False)
 
-        self.fail("Walkthrough incomplete.")
+        # Go to the machine room.
+        self.move_to('machine')
+
+        # Sharpen leg into machete.
+        self.interact_thing('machine.grinder', 'titanium_leg')
+        self.assert_inventory_item('titanium_leg', False)
+        self.assert_inventory_item('machete')
+
+        # Go to the cryo room.
+        self.move_to('cryo')
 
+        # Chop up some pipes.
+        self.assert_game_data('fixed', True, 'cryo.pipe.left')
+        self.interact_thing('cryo.pipe.left', 'machete')
+        self.assert_game_data('fixed', False, 'cryo.pipe.left')
+        self.assert_inventory_item('cryo_pipe.0')
+
+        self.assert_game_data('fixed', True, 'cryo.pipe.right')
+        self.interact_thing('cryo.pipe.right', 'machete')
+        self.assert_game_data('fixed', False, 'cryo.pipe.right')
+        self.assert_inventory_item('cryo_pipe.1')
+
+        # Go to the mess.
+        self.move_to('mess')
+
+        # Clear the broccoli.
+        self.assert_game_data('status', 'blocked', 'mess.tubes')
+        self.interact_thing('mess.tubes', 'machete')
+        self.assert_game_data('status', 'broken', 'mess.tubes')
+