changeset 365:45f209fbec2e

Better result handling for tests.
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 28 Aug 2010 17:07:54 +0200
parents 0fed76188796
children fba28c041aeb
files gamelib/tests/game_logic_utils.py
diffstat 1 files changed, 11 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/tests/game_logic_utils.py	Sat Aug 28 17:09:05 2010 +0200
+++ b/gamelib/tests/game_logic_utils.py	Sat Aug 28 17:07:54 2010 +0200
@@ -57,6 +57,15 @@
     def assert_current_detail(self, scene):
         self.assertEquals(scene, self.state.current_detail.name)
 
+    def handle_result(self, result):
+        if result is None:
+            return None
+        if hasattr(result, 'process'):
+            if result.detail_view:
+                self.state.set_current_detail(result.detail_view)
+            return result
+        return [self.handle_result(r) for r in result]
+
     def interact_thing(self, thing, item=None):
         item_obj = None
         if item is not None:
@@ -64,16 +73,12 @@
             item_obj = self.state.items[item]
         thing_container = self.state.current_detail or self.state.current_scene
         result = thing_container.things[thing].interact(item_obj)
-        if result and result.detail_view:
-            self.state.set_current_detail(result.detail_view)
-        return result
+        return self.handle_result(result)
 
     def interact_item(self, target_item, item):
         self.assert_inventory_item(target_item)
         item_obj = self.state.items[item]
         target_obj = self.state.items[target_item]
         result = target_obj.interact(item_obj, self.state)
-        if result and result.detail_view:
-            self.state.set_current_detail(result.detail_view)
-        return result
+        return self.handle_result(result)