"""selector 织入辅助:正解文本提取 + 分流。""" import pytest from app.question_gen.pipeline_v2 import _extract_correct_text def test_extract_correct_text_strips_prefix(): options = ("A. 蒸", "B. 炒", "C. 煮", "D. 炸") assert _extract_correct_text(options, "C") == "煮" def test_extract_correct_text_handles_lowercase_answer(): options = ("A. run", "B. walk", "C. jump", "D. sit") assert _extract_correct_text(options, "b") == "walk" def test_extract_correct_text_out_of_range_raises(): options = ("A. a", "B. b", "C. c", "D. d") with pytest.raises(ValueError): _extract_correct_text(options, "E") def test_replace_candidate_options(): from app.question_gen.generator_v2 import CandidateQuestion from app.question_gen.pipeline_v2 import _replace_candidate_options c = CandidateQuestion( question_id="q", video_id="v", task_type="Action Recognition", skill_target="M1_AR", question="?", options=("A. a", "B. b", "C. c", "D. d"), answer="A", source_nodes=("n1",), difficulty="hard", ) new = _replace_candidate_options(c, ("A. 蒸", "B. 炒", "C. 煮", "D. 炸"), "A") assert new.options == ("A. 蒸", "B. 炒", "C. 煮", "D. 炸") assert new.question == "?" # 其余字段不变 assert new.source_nodes == ("n1",)