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