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()
|