ya2 · news · projects · code · about

c80f4df669c621a76cb505638254713b4364cf4e
[pmachines.git] / tests / lib / test_gameobject.py
1 from pathlib import Path
2 import sys
3 if '' in sys.path: sys.path.remove('')
4 sys.path.append(str(Path(__file__).parent.parent.parent))
5 from unittest.mock import patch
6 from unittest import TestCase
7 from panda3d.core import loadPrcFileData
8 from ya2.engine.engine import Engine
9 from ya2.gameobject import AiColleague, AudioColleague, EventColleague, \
10 FsmColleague, GameObject, GfxColleague, GuiColleague, LogicColleague, \
11 PhysColleague, Colleague
12
13
14 class AiTests(TestCase):
15
16 def setUp(self):
17 loadPrcFileData('', 'window-type none')
18 loadPrcFileData('', 'audio-library-name null')
19
20 def tearDown(self):
21 self.engine.destroy()
22
23 def test_init(self):
24 self.engine = Engine()
25 game_obj = GameObject()
26 ai = AiColleague(game_obj)
27 self.assertIsInstance(ai, AiColleague)
28
29
30 class AudioTests(TestCase):
31
32 def setUp(self):
33 loadPrcFileData('', 'window-type none')
34 loadPrcFileData('', 'audio-library-name null')
35
36 def tearDown(self):
37 self.engine.destroy()
38
39 def test_init(self):
40 self.engine = Engine()
41 game_obj = GameObject()
42 audio = AudioColleague(game_obj)
43 self.assertIsInstance(audio, AudioColleague)
44
45
46 class ColleagueTests(TestCase):
47
48 def setUp(self):
49 loadPrcFileData('', 'window-type none')
50 loadPrcFileData('', 'audio-library-name null')
51
52 def tearDown(self):
53 self.engine.destroy()
54
55 def test_init(self):
56 self.engine = Engine()
57 game_obj = GameObject()
58 colleague = Colleague(game_obj)
59 self.assertIsInstance(colleague, Colleague)
60
61
62 class EventTests(TestCase):
63
64 def setUp(self):
65 loadPrcFileData('', 'window-type none')
66 loadPrcFileData('', 'audio-library-name null')
67
68 def tearDown(self):
69 self.engine.destroy()
70
71 def test_init(self):
72 self.engine = Engine()
73 game_obj = GameObject()
74 event = EventColleague(game_obj)
75 self.assertIsInstance(event, EventColleague)
76
77
78 class FsmTests(TestCase):
79
80 def setUp(self):
81 loadPrcFileData('', 'window-type none')
82 loadPrcFileData('', 'audio-library-name null')
83
84 def tearDown(self):
85 self.engine.destroy()
86
87 def test_init(self):
88 self.engine = Engine()
89 game_obj = GameObject()
90 fsm = FsmColleague(game_obj)
91 self.assertIsInstance(fsm, FsmColleague)
92
93
94 class GfxTests(TestCase):
95
96 def setUp(self):
97 loadPrcFileData('', 'window-type none')
98 loadPrcFileData('', 'audio-library-name null')
99
100 def tearDown(self):
101 self.engine.destroy()
102
103 def test_init(self):
104 self.engine = Engine()
105 game_obj = GameObject()
106 gfx = GfxColleague(game_obj)
107 self.assertIsInstance(gfx, GfxColleague)
108
109
110 class GuiTests(TestCase):
111
112 def setUp(self):
113 loadPrcFileData('', 'window-type none')
114 loadPrcFileData('', 'audio-library-name null')
115
116 def tearDown(self):
117 self.engine.destroy()
118
119 def test_init(self):
120 self.engine = Engine()
121 game_obj = GameObject()
122 gui = GuiColleague(game_obj)
123 self.assertIsInstance(gui, GuiColleague)
124
125
126 class LogicTests(TestCase):
127
128 def setUp(self):
129 loadPrcFileData('', 'window-type none')
130 loadPrcFileData('', 'audio-library-name null')
131
132 def tearDown(self):
133 self.engine.destroy()
134
135 def test_init(self):
136 self.engine = Engine()
137 game_obj = GameObject()
138 logic = LogicColleague(game_obj)
139 self.assertIsInstance(logic, LogicColleague)
140
141
142 class PhysicsTests(TestCase):
143
144 def setUp(self):
145 loadPrcFileData('', 'window-type none')
146 loadPrcFileData('', 'audio-library-name null')
147
148 def tearDown(self):
149 self.engine.destroy()
150
151 def test_init(self):
152 self.engine = Engine()
153 game_obj = GameObject()
154 phys = PhysColleague(game_obj)
155 self.assertIsInstance(phys, PhysColleague)
156
157
158 class GameObjectInstance(GameObject):
159
160 def __init__(self):
161 GameObject.__init__(self)
162 self.fsm = FsmColleague(self)
163 self.event = EventColleague(self)
164 self.ai = AiColleague(self)
165 self.phys = PhysColleague(self)
166 self.audio = AudioColleague(self)
167 self.logic = LogicColleague(self)
168 self.gui = GuiColleague(self)
169 self.gfx = GfxColleague(self)
170
171 def destroy(self):
172 self.fsm.destroy()
173 self.event.destroy()
174 self.ai.destroy()
175 self.phys.destroy()
176 self.audio.destroy()
177 self.logic.destroy()
178 self.gui.destroy()
179 self.gfx.destroy()
180
181
182 class GameObjectTests(TestCase):
183
184 def setUp(self):
185 loadPrcFileData('', 'window-type none')
186 loadPrcFileData('', 'audio-library-name null')
187
188 def tearDown(self):
189 self.engine.destroy()
190
191 @patch.object(GfxColleague, 'destroy')
192 @patch.object(GuiColleague, 'destroy')
193 @patch.object(LogicColleague, 'destroy')
194 @patch.object(AudioColleague, 'destroy')
195 @patch.object(PhysColleague, 'destroy')
196 @patch.object(AiColleague, 'destroy')
197 @patch.object(EventColleague, 'destroy')
198 @patch.object(FsmColleague, 'destroy')
199 def test_init(
200 self, mock_fsm_destroy, mock_event_destroy, mock_ai_destroy,
201 mock_phys_destroy, mock_audio_destroy, mock_logic_destroy,
202 mock_gui_destroy, mock_gfx_destroy):
203 self.engine = Engine()
204 mock_event_destroy.__name__ = 'destroy'
205 game_obj = GameObjectInstance()
206 self.assertIsInstance(game_obj, GameObject)
207 game_obj.destroy()
208 assert mock_fsm_destroy.called
209 assert mock_event_destroy.called
210 assert mock_ai_destroy.called
211 assert mock_phys_destroy.called
212 assert mock_audio_destroy.called
213 assert mock_logic_destroy.called
214 assert mock_gui_destroy.called
215 assert mock_gfx_destroy.called