import unittest from test_room import server class PowerTests(unittest.TestCase): def setUp(self): self.room=server.Room(':memory:',lambda:100) self.room.poll(dict(cabinet='cabinet_01',protocol=2,boot='a',features=['pacman_power_v1'],reports=[])) self.room.state.update(game='pacman',game_config={'power_on_device':'button'},mappings={}) def tearDown(self): self.room.db.close() def prepare(self): self.room.operator('prepare') command=self.room.state['commands'][-1] self.room.ack(dict(id=command['id'],ok=True)) def test_operator_power_and_duplicate_events(self): self.prepare() self.assertEqual(self.room.state['phase'],'powered_off') with self.assertRaises(ValueError): self.room.operator('start') self.room.operator('power_on') command=self.room.state['commands'][-1] self.room.ack(dict(id=command['id'],ok=True)) self.assertEqual(self.room.state['phase'],'booting') with self.assertRaises(ValueError): self.room.operator('start') self.room.event(dict(id='booted',event='power_ready')) self.assertEqual(self.room.state['phase'],'ready') with self.assertRaises(ValueError): self.room.operator('power_on') self.room.event(dict(id='booted',event='power_ready')) self.assertEqual(self.room.state['phase'],'ready') def test_dependency_autostart_waits_for_boot(self): self.room.state.update(game_config={},auto_start=True) self.prepare() self.assertEqual(self.room.state['phase'],'booting') self.assertFalse(any(c['type']=='start' for c in self.room.state['commands'])) self.room.event(dict(id='booted',event='power_ready')) self.assertEqual(self.room.state['phase'],'starting') self.assertEqual(sum(c['type']=='start' for c in self.room.state['commands']),1)