Files

40 lines
1.6 KiB
Python

import json
from data.field_tree import FieldTree
from data.test_case import TestCase, TestSuite, SparkConfig
from agents.llm import LLMClient
PROMPT_AGENT2 = """You are a COBOL test data designer. Given a FieldTree JSON, generate test data covering boundary values.
Output: {"test_cases": [{"id": "TC-001", "fields": {"FIELD_NAME": value, ...}, "coverage_targets": ["DP-001-TRUE"]}]}
For each field, generate 1-3 test cases covering: zero, boundary (MAX), typical value. Return valid JSON only."""
class Agent2Data:
def __init__(self, llm: LLMClient):
self.llm = llm
def design(self, tree: FieldTree, coverage_target: str = "boundary",
spark_mode: bool = False) -> TestSuite:
tree_json = {"fields": [{
"name": f.name, "level": f.level, "pic": f.pic,
"usage": f.usage, "length": f.length, "decimal": f.decimal,
"signed": f.signed, "redefines": f.redefines, "occurs": f.occurs
} for f in tree.flatten().values()]}
messages = [
{"role": "system", "content": PROMPT_AGENT2},
{"role": "user", "content": json.dumps(tree_json)}
]
raw = self.llm.call(messages)
test_cases = self._parse(raw)
suite = TestSuite(test_cases=test_cases)
if spark_mode:
suite.spark_config = SparkConfig(num_records=1000)
return suite
def _parse(self, raw: str) -> list[TestCase]:
try:
data = json.loads(raw)
return [TestCase(**tc) for tc in data.get("test_cases", [])]
except (json.JSONDecodeError, KeyError):
return [TestCase(id="TC-FALLBACK", fields={"BR-AMT": 0})]