from __future__ import annotations import sys import unittest from pathlib import Path ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(ROOT)) from readiness import TRACK_REQUIREMENTS, assess_readiness, render_assessment, requirement_choices # noqa: E402 from research_library import COLLECTIONS, collection_choices, render_collection # noqa: E402 class ReadinessTests(unittest.TestCase): def test_each_track_has_six_unique_requirements(self) -> None: for requirements in TRACK_REQUIREMENTS.values(): self.assertEqual(len(requirements), 6) self.assertEqual(len(set(requirements)), 6) def test_empty_checklist_is_incomplete(self) -> None: result = assess_readiness("Dataset release", []) self.assertFalse(result["ready"]) self.assertEqual(result["score"], 0) self.assertEqual(len(result["missing"]), 6) def test_complete_checklist_requires_review(self) -> None: track = "Agent system experiment" result = assess_readiness(track, requirement_choices(track)) self.assertTrue(result["ready"]) self.assertEqual(result["score"], 100) self.assertIn("Independent review is still required", render_assessment(track, requirement_choices(track))) def test_unknown_values_are_rejected(self) -> None: with self.assertRaises(ValueError): assess_readiness("Language model experiment", ["Invented gate"]) class CollectionTests(unittest.TestCase): def test_all_four_public_collections_are_modelled(self) -> None: self.assertEqual(len(COLLECTIONS), 4) self.assertEqual(collection_choices()[0], "Transformer Foundations") def test_collection_rendering_escapes_and_links(self) -> None: rendered = render_collection("Agent Systems") self.assertIn("VERIFIED PUBLIC COLLECTION", rendered) self.assertIn(COLLECTIONS["Agent Systems"].url, rendered) if __name__ == "__main__": unittest.main()