Files
SignageSystem/tests/test_unified_event_builder.py
T
2026-08-09 21:41:44 +09:00

23 lines
1.3 KiB
Python

from src.config_loader import UnifiedLogSettings
from src.models import FrameInfo, PersonStateEvent, TrackEvent, TurnEvent, VoicePromptEvent
from src.unified_event_builder import UnifiedEventBuilder
def cfg(important:bool=False)->UnifiedLogSettings:
return UnifiedLogSettings(True,"x",True,True,True,True,30,True,True,True,True,False,important,"",True)
def test_converts_sources_and_sorts() -> None:
b=UnifiedEventBuilder(cfg(),"exp","session"); f=FrameInfo(2,"t",2.,10,10,1.)
items=[]
items+=b.from_track_events([TrackEvent("trigger_crossed",1,2,"t",2.,1,1)],f)
items+=b.from_turn_events([TurnEvent("turn_confirmed",1,2,"t",2.,1.,20.,"weak")],f)
items+=b.from_voice_events([VoicePromptEvent("prompt_played",1,2,"t",2.,"prompt",True)],f)
items+=b.from_person_state_events([PersonStateEvent("responded",1,2,"t",2.,"observing","responded")],f)
assert {x.source for x in items}=={"tracking","turn","voice","person_state"}
assert len({x.event_id for x in items})==4
assert b.stable_sort(items)==sorted(items,key=lambda x:(x.elapsed_time_sec,x.frame_number,x.source,x.event_id))
def test_important_only_filters() -> None:
b=UnifiedEventBuilder(cfg(True),"e","s");f=FrameInfo(1,"t",1.,1,1,1.)
assert not b.from_track_events([TrackEvent("track_created",1,1,"t",1.,1,1)],f)