Source: tests/test_rgbd_fresh_v2_data.py · Plain text

tests/test_rgbd_fresh_v2_data.py

"""FRESH-V2 metadata rule: never observed, unused, volume-fenced, asset-unique, hash order."""

import importlib.util
from collections import Counter
from pathlib import Path


def script():
    path = Path(__file__).parents[1] / "scripts" / "prepare_rgbd_fresh_v2_data.py"
    spec = importlib.util.spec_from_file_location("prepare_rgbd_fresh_v2_data", path)
    module = importlib.util.module_from_spec(spec)
    spec.loader.exec_module(module)
    return module


def row(scene, split="train", observed="False"):
    return {
        "scene_name": scene,
        "official_split": split,
        "protocol_partition": split,
        "previously_observed": observed,
    }


def test_selection_applies_every_metadata_rule_in_hash_order():
    m = script()
    rows = [
        row("ai_001_002"),  # volume fenced by the TRAIN/DEV scene ai_001_001
        row("ai_002_001"),
        row("ai_002_002"),
        row("ai_002_003", observed="True"),
        row("ai_002_004", split="val"),
        row("ai_002_005"),  # protected
        row("ai_002_006"),  # already used
        row("ai_002_007"),  # shares its source asset with ai_002_001
        row("ai_002_008"),  # fewer than 16 frames
        row("ai_002_009"),  # BAD trajectory
        row("ai_003_001"),
    ]
    names = [r["scene_name"] for r in rows]
    assets = {s: {"archive_file": f"A_{s}.rar", "asset_file": "0"} for s in names}
    assets["ai_002_007"] = dict(assets["ai_002_001"])
    allowed = {s: list(range(16)) for s in names}
    allowed["ai_002_008"] = list(range(15))
    trajectories = {f"{s}_cam_00": {"Scene type": "OK"} for s in names}
    trajectories["ai_002_009_cam_00"] = {"Scene type": "BAD"}
    selected = m.select_fresh_v2(
        rows,
        assets,
        allowed,
        trajectories,
        protected={"ai_002_005"},
        excluded=set(),
        used={"ai_002_006", "ai_001_001"},
        fence={"ai_001_001"},
    )
    duplicate = min(("ai_002_001", "ai_002_007"), key=m.selection_key)
    expected = sorted(["ai_002_002", "ai_003_001", duplicate], key=m.selection_key)
    assert selected == expected


def test_a_full_volume_is_never_read_again():
    m = script()
    counts = Counter({"002": m.PER_VOLUME})
    assert m.volume_full(counts, "ai_002_010")
    assert not m.volume_full(counts, "ai_003_001")