Files
llm/tests/1c/test_moxel_schema_discovery.py
T

73 lines
3.3 KiB
Python

from __future__ import annotations
import importlib.util
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
SCRIPT = ROOT / "scripts" / "discover_1c_moxel_schema.py"
SPEC = importlib.util.spec_from_file_location("discover_1c_moxel_schema", SCRIPT)
assert SPEC and SPEC.loader
discovery = importlib.util.module_from_spec(SPEC)
SPEC.loader.exec_module(discovery)
def test_analyze_marker_matrix_infers_inline_text_column_from_last_preceding_scalar() -> None:
payload = {
"schema": "codex_1c_template_marker_matrix.v1",
"rows": [
{"text": "10-2", "expected_row": 10, "expected_col": 2, "decoded_row": 10, "decoded_col": 3, "preceding": ["9", "0", "3", "1"]},
{"text": "10-3", "expected_row": 10, "expected_col": 3, "decoded_row": 10, "decoded_col": 4, "preceding": ["2"]},
{"text": "10-4", "expected_row": 10, "expected_col": 4, "decoded_row": 10, "decoded_col": 11, "preceding": ["3"]},
],
}
analysis = discovery.analyze_marker_matrix([payload])
rule = analysis["candidate_rules"][0]
assert analysis["current_decoder"]["row_accuracy"] == {"ok": 3, "total": 3}
assert analysis["current_decoder"]["column_accuracy"] == {"ok": 0, "total": 3}
assert rule["target"] == "moxel.inline_text_cell.column"
assert rule["confidence"] == "high"
assert rule["evidence"] == {"ok": 3, "total": 3}
assert analysis["row_runs"][0]["sequence_ok"] is True
def test_infer_named_range_rules_from_history_matrix_moves() -> None:
history_matrix = {
"transitions": [
{
"named_range_changes": {
"one_based": {
"before": {"row_start": 7, "row_end": 7, "column_start": 3, "column_end": 3},
"after": {"row_start": 8, "row_end": 8, "column_start": 3, "column_end": 3},
},
"raw_scalars": {
"before": ["1", "3", "2", "6", "2", "6", "00000000-0000-0000-0000-000000000000", "0"],
"after": ["1", "3", "2", "7", "2", "7", "00000000-0000-0000-0000-000000000000", "0"],
},
}
},
{
"named_range_changes": {
"one_based": {
"before": {"row_start": 8, "row_end": 8, "column_start": 3, "column_end": 3},
"after": {"row_start": 8, "row_end": 8, "column_start": 4, "column_end": 4},
},
"raw_scalars": {
"before": ["1", "3", "2", "7", "2", "7", "00000000-0000-0000-0000-000000000000", "0"],
"after": ["1", "3", "3", "7", "3", "7", "00000000-0000-0000-0000-000000000000", "0"],
},
}
},
]
}
result = discovery.infer_named_range_rules(history_matrix, {})
rules_by_target = {rule["target"]: rule for rule in result["rules"]}
assert rules_by_target["moxel.named_range.top"]["raw_scalar_indexes"] == [3, 5]
assert rules_by_target["moxel.named_range.bottom"]["raw_scalar_indexes"] == [3, 5]
assert rules_by_target["moxel.named_range.left"]["raw_scalar_indexes"] == [2, 4]
assert rules_by_target["moxel.named_range.right"]["raw_scalar_indexes"] == [2, 4]