comparison gamelib/tests/game_logic_utils.py @ 365:45f209fbec2e

Better result handling for tests.
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 28 Aug 2010 17:07:54 +0200
parents bfb6c682b4fb
children fdf3a6dd476b
comparison
equal deleted inserted replaced
364:0fed76188796 365:45f209fbec2e
55 self.assertEquals(scene, self.state.current_scene.name) 55 self.assertEquals(scene, self.state.current_scene.name)
56 56
57 def assert_current_detail(self, scene): 57 def assert_current_detail(self, scene):
58 self.assertEquals(scene, self.state.current_detail.name) 58 self.assertEquals(scene, self.state.current_detail.name)
59 59
60 def handle_result(self, result):
61 if result is None:
62 return None
63 if hasattr(result, 'process'):
64 if result.detail_view:
65 self.state.set_current_detail(result.detail_view)
66 return result
67 return [self.handle_result(r) for r in result]
68
60 def interact_thing(self, thing, item=None): 69 def interact_thing(self, thing, item=None):
61 item_obj = None 70 item_obj = None
62 if item is not None: 71 if item is not None:
63 self.assert_inventory_item(item) 72 self.assert_inventory_item(item)
64 item_obj = self.state.items[item] 73 item_obj = self.state.items[item]
65 thing_container = self.state.current_detail or self.state.current_scene 74 thing_container = self.state.current_detail or self.state.current_scene
66 result = thing_container.things[thing].interact(item_obj) 75 result = thing_container.things[thing].interact(item_obj)
67 if result and result.detail_view: 76 return self.handle_result(result)
68 self.state.set_current_detail(result.detail_view)
69 return result
70 77
71 def interact_item(self, target_item, item): 78 def interact_item(self, target_item, item):
72 self.assert_inventory_item(target_item) 79 self.assert_inventory_item(target_item)
73 item_obj = self.state.items[item] 80 item_obj = self.state.items[item]
74 target_obj = self.state.items[target_item] 81 target_obj = self.state.items[target_item]
75 result = target_obj.interact(item_obj, self.state) 82 result = target_obj.interact(item_obj, self.state)
76 if result and result.detail_view: 83 return self.handle_result(result)
77 self.state.set_current_detail(result.detail_view)
78 return result
79 84