Files
Jyotisha/tests/test_reader_appendix_language.py
T
jesse-uxandGrok (agent loop) 19379fbb41 合并 origin/staging,并补上两处测试替身。
研究章仍在六章之后、口径替换之前。独立年度方法参考仍在口径替换之后,来源说明不会被删掉。两条打回测试的替身补上额外参数,不改报告计算,不改原有断言。指纹记录改称 BUG-1430,因为 BUG-1429 已被研究章占用。

跑过两条打回测试、六章与指纹相关测试,以及 200 张英文扫描,退出码都是 0。

Co-Authored-By: Grok (agent loop)
2026-10-24 11:13:26 +08:00

71 lines
3.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Copy-only tests: these strings are vocabulary cases, not engine fixtures."""
import pytest
from scripts.reader_appendix_language import clean_reader_appendix_markdown
@pytest.mark.parametrize("raw,label", [
("parameter_sensitive", "参数敏感"),
("pyjhora_behavior_only", "仅单一外部参照,未做多引擎核对"),
("not_multiengine_parity", "仅单一外部参照,未做多引擎核对"),
("unresolved_external_tuple_boundary", "外部边界未对齐"),
("partial_verified", "部分核验"),
("raw_appendix_only", "仅原始附录可见"),
("missing_in_local", "本地暂无"),
])
def test_status_copy_preserves_rows(raw, label):
source = f"| sign_cn | degree_in_sign | nakshatra_lord |\n| 白羊座 | 12.5 | {raw} |\n"
result = clean_reader_appendix_markdown(source)
assert result == source.replace(raw, label)
assert result.count("\n") == source.count("\n")
@pytest.mark.parametrize("raw", ["PyJHora", "JHora", "pyjhora"])
def test_external_engine_names(raw):
assert clean_reader_appendix_markdown(raw) == "外部参照引擎"
@pytest.mark.parametrize("raw", ["PL9", "PL9 第 83-88 页", "PL9 第 40 / 48 页", "PL9 page 99-100", "PL9.pdf", "PL9 第 43–44 页"])
def test_external_product_pages(raw):
assert clean_reader_appendix_markdown(raw) == "外部参照资料"
@pytest.mark.parametrize("raw", ["cmd_full_reading", "jyotish_engine.cmd_full_reading", "render_pl9_markdown", "build_professional_report_reference_packet"])
def test_internal_functions(raw):
assert clean_reader_appendix_markdown(raw) == "本地计算"
@pytest.mark.parametrize("raw,label", [("blocked", "暂不可用"), ("executed", "已执行"), ("available", "可用"), ("computed", "已计算")])
def test_ambiguous_words_only_in_whole_cells(raw, label):
prose = f"The {raw} result is not a claim.\n| {raw} result | `{raw}` | {raw} |\n"
assert clean_reader_appendix_markdown(prose) == f"The {raw} result is not a claim.\n| {raw} result | `{label}` | {label} |\n"
assert clean_reader_appendix_markdown(raw) == raw
def test_chart_fence_unchanged_and_copy_idempotent():
fence = '```jyotish-chart\n{"title":"parameter_sensitive","id":"D1"}\n```\n'
source = "参数敏感\n" + fence + "| parameter_sensitive |\n"
result = clean_reader_appendix_markdown(source)
assert fence in result
assert clean_reader_appendix_markdown(result) == result
def test_public_boundary_only_leaves_internal_renderer_and_json_unchanged():
from scripts.professional_report_reference import build_professional_report_reference
from types import SimpleNamespace
packet = {"status": "parameter_sensitive"}
engine = SimpleNamespace(
build_professional_report_reference_packet=lambda *args, **_kwargs: packet,
render_pl9_markdown=lambda value: "| parameter_sensitive | cmd_full_reading |",
)
handler = SimpleNamespace(
_high_rigor_birth_payload=lambda body: {"year": 2000, "hour": 0, "minute": 0, "today": "2026-01-01"},
_compute_full_reading_for_thematic=lambda birth: {},
)
assert build_professional_report_reference(handler, {"format": "json"}, engine=engine)["report"] is packet
assert build_professional_report_reference(handler, {"format": "markdown"}, engine=engine)["markdown"] == "| parameter_sensitive | cmd_full_reading |"
assert engine.render_pl9_markdown(packet) == "| parameter_sensitive | cmd_full_reading |"
assert packet == {"status": "parameter_sensitive"}