"""QL-01~04: Quality — L1OffsetValidator / L2RoundtripValidator""" import sys, os sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) from quality.l1_offset_validate import L1OffsetValidator from quality.l2_value_roundtrip import L2RoundtripValidator from data.field_tree import FieldTree, Field def test_l1_validate(): """QL-01: L1 validate runs (可能无 cobc)""" v = L1OffsetValidator() tree = FieldTree(fields=[Field(name="WS-A", level=5, pic="9(4)")]) result = v.validate(tree, "/tmp/test.cbl") assert "score" in result or "mismatches" in result def test_l2_no_comp3(): """QL-03: 无 COMP-3 → pass=True""" v = L2RoundtripValidator() tree = FieldTree(fields=[Field(name="WS-A", level=5, pic="9(4)")]) result = v.validate(tree) assert result["pass"] is True def test_l2_with_comp3(): """QL-04: 有 COMP-3 → 字段值正确""" v = L2RoundtripValidator() tree = FieldTree(fields=[Field(name="WS-AMT", level=5, pic="S9(7)V99", usage="COMP-3", length=5)]) result = v.validate(tree) assert result["pass"] is True assert len(result["results"]) >= 1