Core modules: TUI app (textual), mumble protocol client, audio pipeline (sounddevice + opus), push-to-talk with kitty protocol / evdev / toggle backends. Config via TOML.
38 lines
857 B
Python
38 lines
857 B
Python
"""Tests for push-to-talk backends."""
|
|
|
|
from tuimble.ptt import KittyPtt, PttState, TogglePtt
|
|
|
|
|
|
def test_kitty_ptt_press_release():
|
|
states = []
|
|
ptt = KittyPtt(lambda tx: states.append(tx))
|
|
assert ptt.state is PttState.IDLE
|
|
|
|
ptt.key_down()
|
|
assert ptt.state is PttState.TRANSMITTING
|
|
assert states == [True]
|
|
|
|
ptt.key_up()
|
|
assert ptt.state is PttState.IDLE
|
|
assert states == [True, False]
|
|
|
|
|
|
def test_kitty_ptt_no_duplicate_events():
|
|
states = []
|
|
ptt = KittyPtt(lambda tx: states.append(tx))
|
|
|
|
ptt.key_down()
|
|
ptt.key_down() # repeat, no state change
|
|
assert states == [True]
|
|
|
|
|
|
def test_toggle_ptt():
|
|
states = []
|
|
ptt = TogglePtt(lambda tx: states.append(tx))
|
|
|
|
ptt.toggle()
|
|
assert ptt.transmitting is True
|
|
ptt.toggle()
|
|
assert ptt.transmitting is False
|
|
assert states == [True, False]
|