"""OU-01~02: cobol_testgen output 模块 — JSON / 输入文件输出""" import sys, os, json, tempfile from pathlib import Path sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", ".."))) from cobol_testgen.output import output_json, output_input_files def test_output_json_basic(): """OU-01: 3条记录 → 有效 JSON""" records = [{"WS-A": "1", "WS-B": "2"}, {"WS-A": "3", "WS-B": "4"}] with tempfile.TemporaryDirectory() as tmp: outpath = Path(tmp) / "output.json" output_json(records, outpath) assert outpath.exists() data = json.loads(outpath.read_text(encoding="utf-8")) assert len(data) == 2 assert data[0]["WS-A"] == "1" def test_output_json_with_roles(): """带角色分组的 JSON 输出""" records = [{"WS-A": "1", "WS-B": "2"}] roles = {"WS-A": "input", "WS-B": "output"} fd_fields = {"FILE1": {"WS-A"}} field_to_fd = {"WS-A": "FILE1"} open_dir = {"FILE1": "INPUT"} with tempfile.TemporaryDirectory() as tmp: outpath = Path(tmp) / "output.json" output_json(records, outpath, roles, fd_fields, field_to_fd, open_dir) assert outpath.exists() def test_output_json_empty(): """空记录 → 空数组""" with tempfile.TemporaryDirectory() as tmp: outpath = Path(tmp) / "empty.json" output_json([], outpath) assert json.loads(outpath.read_text(encoding="utf-8")) == [] def test_output_input_files_basic(): """OU-02: 输入文件输出""" records = [{"WS-A": "1"}] roles = {"WS-A": "input"} with tempfile.TemporaryDirectory() as tmp: output_input_files(records, tmp, "TESTPGM", roles, {}, {}, {}) assert os.path.isdir(tmp)