from __future__ import annotations import sys import unittest from pathlib import Path TEST_DIR = Path(__file__).resolve().parent if str(TEST_DIR) not in sys.path: sys.path.insert(0, str(TEST_DIR)) import validate_transcription_acceptance as validator class AcceptanceValidatorTests(unittest.TestCase): def test_segment_contract_matches_txt_srt_and_json(self) -> None: segments = [ {"start": 1.25, "end": 2.5, "text": "第一段"}, {"start": 3.0, "end": 4.0, "text": "第二段"}, ] srt = [ {"index": 1, "start": 1.25, "end": 2.5, "text": "第一段"}, {"index": 2, "start": 3.0, "end": 4.0, "text": "第二段"}, ] evidence = validator._segment_checks( segments, srt, ["第一段", "第二段"], 10.0 ) self.assertTrue(evidence["pass"]) self.assertEqual(evidence["exact_duplicate_segment_indices"], []) def test_all_four_hour_boundaries_are_emitted_for_manual_review(self) -> None: segments = [ {"start": float(boundary - 2), "end": float(boundary + 2), "text": str(boundary)} for boundary in range(1200, 14400, 1200) ] boundaries = validator._boundary_checks( segments, 14400.0, manual_pass=False, reviewer=None ) self.assertEqual( [item["boundary_seconds"] for item in boundaries], list(range(1200, 14400, 1200)), ) self.assertTrue( all(item["automatic_no_exact_duplicates"] for item in boundaries) ) self.assertTrue( all(item["manual_readability_pass"] is False for item in boundaries) ) if __name__ == "__main__": unittest.main()