48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
from pathlib import Path
|
|
|
|
from hef.catalog import Record, save_catalog, load_catalog
|
|
from hef.selection import Coordinate, select
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parent.parent
|
|
|
|
|
|
def _rec(id, mode, left, right, dark, light):
|
|
return Record(
|
|
id=id,
|
|
title=id,
|
|
source_url=f"https://example.org/{id}",
|
|
source_archive="internet_archive",
|
|
license="public_domain",
|
|
mode=mode,
|
|
left=left,
|
|
right=right,
|
|
dark=dark,
|
|
light=light,
|
|
duration_s=600,
|
|
file_path=f"/media/{id}.mp4",
|
|
)
|
|
|
|
|
|
def test_catalog_round_trip_then_select(tmp_path):
|
|
library = [
|
|
_rec("lecture", "av", left=4, right=0, dark=1, light=2),
|
|
_rec("nebula", "video", left=0, right=4, dark=2, light=3),
|
|
_rec("storm", "av", left=0, right=3, dark=4, light=0),
|
|
_rec("sunrise", "av", left=1, right=3, dark=0, light=4),
|
|
]
|
|
path = tmp_path / "library.jsonl"
|
|
save_catalog(library, path)
|
|
loaded = load_catalog(path)
|
|
|
|
# A right-brain, very-light tuning should land on "sunrise".
|
|
chosen = select(loaded, Coordinate(left=1, right=3, dark=0, light=4), "av")
|
|
assert chosen.id == "sunrise"
|
|
|
|
# The void state returns nothing regardless of library.
|
|
assert select(loaded, Coordinate(0, 0, 0, 0), "none") is None
|
|
|
|
|
|
def test_committed_empty_catalog_loads():
|
|
path = REPO_ROOT / "catalog" / "library.jsonl"
|
|
assert load_catalog(path) == []
|