diff gamelib/tests/game_logic_utils.py @ 252:dfc89bc64fdb

Start of walkthrough "unit test" and associated fixes and tweaks.
author Jeremy Thurgood <firxen@gmail.com>
date Fri, 27 Aug 2010 16:45:47 +0200
parents 0bad554d0926
children ca0c2875ad8f
line wrap: on
line diff
--- a/gamelib/tests/game_logic_utils.py	Fri Aug 27 16:20:26 2010 +0200
+++ b/gamelib/tests/game_logic_utils.py	Fri Aug 27 16:45:47 2010 +0200
@@ -1,10 +1,9 @@
 import unittest
 
 import pygame
+from pygame.locals import SWSURFACE
 
 from gamelib import state
-
-from pygame.locals import SWSURFACE
 from gamelib.constants import SCREEN
 
 
@@ -21,18 +20,16 @@
         self.state = state.initial_state()
         self.state.set_current_scene(self.CURRENT_SCENE)
 
-    def set_game_data(self, key, value, thing=None, scene=None):
-        if scene is None:
-            scene = self.CURRENT_SCENE
-        gizmo = self.state.scenes[scene]
+    def set_game_data(self, key, value, thing=None):
+        gizmo = self.state.current_scene
         if thing is not None:
             gizmo = gizmo.things[thing]
         gizmo.set_data(key, value)
 
     def assert_game_data(self, key, value, thing=None, scene=None):
-        if scene is None:
-            scene = self.CURRENT_SCENE
-        gizmo = self.state.scenes[scene]
+        gizmo = self.state.current_scene
+        if scene is not None:
+            gizmo = self.state.scenes[scene]
         if thing is not None:
             gizmo = gizmo.things[thing]
         self.assertEquals(value, gizmo.get_data(key))
@@ -49,11 +46,16 @@
     def assert_item_exists(self, item, exists=True):
         self.assertEquals(exists, item in self.state.items)
 
-    def interact_thing(self, thing, item=None, detail=False):
+    def assert_current_scene(self, scene):
+        self.assertEquals(scene, self.state.current_scene.name)
+
+    def interact_thing(self, thing, item=None):
         item_obj = None
         if item is not None:
             item_obj = self.state.items[item]
-        thing_container = self.state.current_scene
-        if detail:
-            thing_container = self.state.current_detail
-        return thing_container.things[thing].interact(item_obj)
+        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
+