diff options
Diffstat (limited to 'tests/test_state.py')
| -rw-r--r-- | tests/test_state.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/test_state.py b/tests/test_state.py new file mode 100644 index 0000000..9fd223c --- /dev/null +++ b/tests/test_state.py @@ -0,0 +1,41 @@ +import unittest + +from parley.state import InvalidStateError, State, StateMachine + + +class StateMachineTests(unittest.TestCase): + def test_record_transcribe_complete(self) -> None: + machine = StateMachine() + self.assertEqual(machine.start_recording(), State.RECORDING) + self.assertEqual(machine.begin_transcription(), State.TRANSCRIBING) + self.assertEqual(machine.complete(), State.IDLE) + + def test_insertion_flow(self) -> None: + machine = StateMachine() + machine.start_recording() + machine.begin_transcription() + self.assertEqual(machine.begin_insertion(), State.INSERTING) + self.assertEqual(machine.complete(), State.IDLE) + + def test_rejects_second_recording(self) -> None: + machine = StateMachine() + machine.start_recording() + with self.assertRaisesRegex(InvalidStateError, "current state is recording"): + machine.start_recording() + + def test_cancel_recording_and_transcription(self) -> None: + machine = StateMachine() + machine.start_recording() + self.assertEqual(machine.cancel(), State.IDLE) + machine.start_recording() + machine.begin_transcription() + self.assertEqual(machine.cancel(), State.IDLE) + + def test_error_is_recoverable(self) -> None: + machine = StateMachine() + machine.fail() + self.assertEqual(machine.start_recording(), State.RECORDING) + + +if __name__ == "__main__": + unittest.main() |
