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.
19 lines
1.2 KiB
19 lines
1.2 KiB
import csv
|
|
from pathlib import Path
|
|
|
|
from src.config_loader import PersonStateLoggingSettings
|
|
from src.models import PersonStateEvent, PersonStateSnapshot, PersonStateSummary
|
|
from src.person_state_logger import PersonStateLogger
|
|
|
|
|
|
def test_person_state_csvs_bom_json_and_dedup(tmp_path: Path) -> None:
|
|
logger = PersonStateLogger(PersonStateLoggingSettings(True, True, True, True, 1, str(tmp_path)), "exp", "stamp")
|
|
logger.open()
|
|
logger.write_snapshots([PersonStateSnapshot(1, 1, "t", 1., "tracked", metadata={"日本語": "状態"})])
|
|
logger.write_events([PersonStateEvent("status_changed", 1, 1, "t", 1., "new", "tracked", metadata={"理由": "追跡"})])
|
|
summary = PersonStateSummary("exp", 1, final_status="completed", completed=True)
|
|
logger.write_summary(summary); logger.write_summary(summary); logger.close(); logger.close()
|
|
assert all(path.read_bytes().startswith(b"\xef\xbb\xbf") for path in tmp_path.glob("*.csv"))
|
|
assert "日本語" in (tmp_path / "stamp_exp_person_state_frames.csv").read_text(encoding="utf-8-sig")
|
|
with (tmp_path / "stamp_exp_person_state_summary.csv").open(encoding="utf-8-sig", newline="") as stream:
|
|
assert len(list(csv.DictReader(stream))) == 1
|
|
|