You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

24 lines
1.1 KiB

import pytest
from src.models import TurnEvent, TurnFrameResult, TurnLevel, TurnTrackState
def test_turn_frame_success_failure_and_levels() -> None:
result = TurnFrameResult(1, 2, "now", .2, True, True, True, 0, 25, 25, 25,
"positive", True, False, TurnLevel.WEAK.value, .1)
assert result.yaw_delta_toward_signage == 25
failure = TurnFrameResult(1, 3, "later", .3, False, False, False, None, None, None, None,
"positive", False, False, "not_evaluable", 0, "no_face")
assert failure.turn_level == "not_evaluable"
with pytest.raises(ValueError):
TurnFrameResult(1, 1, "x", 0, True, True, False, None, 0, None, None,
"bad", False, False, "none", 0)
def test_turn_state_rates_and_event() -> None:
state = TurnTrackState(1, total_frames=4, pose_frames=2, face_detected_frames=3)
assert state.face_detection_rate == .75
assert state.pose_estimation_rate == .5
assert state.turn_level == "not_evaluable"
event = TurnEvent("turn_confirmed", 1, 2, "now", .2, 20, 20, "weak", {"注記": "確認"})
assert event.metadata["注記"] == "確認"