annotate gamelib/tests/test_game_logic.py @ 59:23d2c58369fc

Some game logic test stuff.
author Jeremy Thurgood <firxen@gmail.com>
date Mon, 23 Aug 2010 16:47:27 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
59
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
1 import unittest
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
2
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
3 import pygame
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
4
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
5 from gamelib import state
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
6
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
7 from pygame.locals import SWSURFACE
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
8 from gamelib.constants import SCREEN
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
9
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
10
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
11 # We need this stuff set up so we can load images and whatnot.
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
12 pygame.display.init()
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
13 pygame.display.set_mode(SCREEN, SWSURFACE)
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
14
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
15
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
16 class TestGameLogic(unittest.TestCase):
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
17 def setUp(self):
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
18 self.state = state.initial_state()
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
19
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
20 def set_game_data(self, key, value, scene, thing=None):
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
21 gizmo = self.state.scenes[scene]
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
22 if thing is not None:
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
23 gizmo = gizmo.things[thing]
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
24 gizmo.set_data(key, value)
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
25
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
26 def assert_game_data(self, key, value, scene, thing=None):
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
27 gizmo = self.state.scenes[scene]
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
28 if thing is not None:
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
29 gizmo = gizmo.things[thing]
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
30 self.assertEquals(value, gizmo.get_data(key))
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
31
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
32 def interact_thing(self, scene_name, thing_name, item_name=None):
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
33 item = None
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
34 if item_name is not None:
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
35 item = self.state.items[item_name]
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
36 self.state.scenes[scene_name].things[thing_name].interact(item)
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
37
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
38 def test_cryo_door_closed_hand(self):
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
39 "The door is closed and we touch it with the hand. No change."
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
40
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
41 self.assert_game_data('accessible', True, 'cryo')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
42 self.assert_game_data('accessible', False, 'bridge')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
43 self.assert_game_data('open', False, 'cryo', 'cryo.door')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
44
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
45 self.interact_thing('cryo', 'cryo.door')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
46
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
47 self.assert_game_data('accessible', True, 'cryo')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
48 self.assert_game_data('accessible', False, 'bridge')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
49 self.assert_game_data('open', False, 'cryo', 'cryo.door')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
50
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
51 def test_cryo_door_closed_titanium_leg(self):
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
52 "The door is closed and we touch it with the titanium leg. It opens."
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
53
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
54 self.assert_game_data('accessible', True, 'cryo')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
55 self.assert_game_data('accessible', False, 'bridge')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
56 self.assert_game_data('open', False, 'cryo', 'cryo.door')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
57
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
58 self.interact_thing('cryo', 'cryo.door', 'titanium_leg')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
59
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
60 self.assert_game_data('accessible', True, 'cryo')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
61 self.assert_game_data('accessible', True, 'bridge')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
62 self.assert_game_data('open', True, 'cryo', 'cryo.door')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
63
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
64 def test_cryo_door_open_hand(self):
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
65 "The door is open and we touch it with the hand. No change."
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
66
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
67 self.set_game_data('accessible', True, 'bridge')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
68 self.set_game_data('open', True, 'cryo', 'cryo.door')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
69
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
70 self.interact_thing('cryo', 'cryo.door')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
71
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
72 self.assert_game_data('accessible', True, 'cryo')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
73 self.assert_game_data('accessible', True, 'bridge')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
74 self.assert_game_data('open', True, 'cryo', 'cryo.door')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
75
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
76 def test_cryo_door_open_titanium_leg(self):
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
77 "The door is open and we touch it with the titanium leg. No change."
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
78
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
79 self.set_game_data('accessible', True, 'bridge')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
80 self.set_game_data('open', True, 'cryo', 'cryo.door')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
81
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
82 self.interact_thing('cryo', 'cryo.door', 'titanium_leg')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
83
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
84 self.assert_game_data('accessible', True, 'cryo')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
85 self.assert_game_data('accessible', True, 'bridge')
23d2c58369fc Some game logic test stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
86 self.assert_game_data('open', True, 'cryo', 'cryo.door')