import pytest from jarvis.__main__ import Jarvis, TURN_TAKING_BARGE_IN_THRESHOLD from jarvis.presence import Signals @pytest.fixture def jarvis_instance(): args = type("Args", (), {"sim": True, "no_vision": True, "no_tts": True, "debug": False}) jarvis = Jarvis(args) jarvis.presence.signals = Signals() return jarvis def test_turn_taking_threshold_regular(jarvis_instance): now = 100.0 jarvis_instance.presence.signals.face_last_seen = now assert jarvis_instance._compute_turn_taking(conf=0.8, doa_speech=False, assistant_busy=False, now=now) def test_turn_taking_high_confidence_no_doa(jarvis_instance): now = 200.0 jarvis_instance.presence.signals.face_last_seen = now assert jarvis_instance._compute_turn_taking(conf=0.95, doa_speech=False, assistant_busy=False, now=now) def test_turn_taking_threshold_barge_in(jarvis_instance): now = 100.0 jarvis_instance.presence.signals.doa_last_seen = now assert jarvis_instance._compute_turn_taking( conf=TURN_TAKING_BARGE_IN_THRESHOLD, doa_speech=True, assistant_busy=True, now=now, ) def test_confidence_pause(jarvis_instance): assert jarvis_instance._confidence_pause("I think it might work") > 0 def test_confidence_pause_phrase_only(jarvis_instance): assert jarvis_instance._confidence_pause("I believe this is correct") > 0