summaryrefslogtreecommitdiff
path: root/tests/test_state.py
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2026-07-24 12:24:07 +0200
committerYuval Adam <_@yuv.al>2026-07-24 12:24:07 +0200
commit7f99c1957f29d57c006a11a02226ecab030a1d4c (patch)
treeb9fc555d6bfd603847eb066ed71acbe5d21c09b3 /tests/test_state.py
parentdf594d42ad1206fcb246bedb1945949527d7e039 (diff)
Add D-Bus daemon and Arch user service packaging
Diffstat (limited to 'tests/test_state.py')
-rw-r--r--tests/test_state.py41
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()