from buddy_fusion import compendium from buddy_fusion.compendium_data import COMPENDIUM from buddy_fusion.boxes import repair_boxes def test_compendium_non_empty(): assert len(COMPENDIUM) >= 10 def test_unique_ids(): ids = [e["id"] for e in COMPENDIUM] assert len(ids) == len(set(ids)), "compendium ids must be unique" def test_entries_are_repair_clean(): # Every authored entry must survive repair_boxes unchanged in length (sizes # already 1-8, all keys present) so the renderer never drops geometry. for e in COMPENDIUM: assert e["name"] and e["theme"] cleaned = repair_boxes(e["boxes"]) assert len(cleaned) == len(e["boxes"]), f"{e['id']} has boxes repair would drop" for b in e["boxes"]: assert {"x", "y", "z", "w", "h", "d", "color"} <= set(b) assert 1 <= b["w"] <= 8 and 1 <= b["h"] <= 8 and 1 <= b["d"] <= 8 def test_as_genome_is_freeform(): g = compendium.as_genome(COMPENDIUM[0]) assert g.boxes and len(g.boxes) == len(COMPENDIUM[0]["boxes"]) assert g.name == COMPENDIUM[0]["name"] def test_random_sample_distinct(): s = compendium.random_sample(2) assert len(s) == 2 and s[0]["id"] != s[1]["id"] def test_get_by_id(): first = COMPENDIUM[0] assert compendium.get(first["id"]) is first assert compendium.get("nonexistent-id") is None