# HG changeset patch # User Jeremy Thurgood # Date 1283008074 -7200 # Node ID 45f209fbec2e22942ab302edfd834b15ea4d47da # Parent 0fed7618879699afc4ccf1686255fedf525855e7 Better result handling for tests. diff -r 0fed76188796 -r 45f209fbec2e gamelib/tests/game_logic_utils.py --- 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)