Broke up test case generation
This commit is contained in:
parent
a62008a3e0
commit
2c550c4662
|
|
@ -1 +1,2 @@
|
|||
.vscode/
|
||||
__pycache__/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
"""
|
||||
Test case generator for integer literals in the Stack Language.
|
||||
Generates comprehensive test cases for all integer types and bases.
|
||||
"""
|
||||
|
||||
from .integer_tests import generate_integer_literal_tests
|
||||
|
||||
if __name__ == "__main__":
|
||||
# import json
|
||||
import yaml
|
||||
|
||||
# Generate tests
|
||||
tests = []
|
||||
tests.append(generate_integer_literal_tests())
|
||||
|
||||
# Print summary
|
||||
print(f"Generated {len(tests)} test cases")
|
||||
|
||||
# # Save as JSON
|
||||
# with open("integer_literal_tests.json", "w") as f:
|
||||
# json.dump(tests, f, indent=2)
|
||||
# print("Saved to integer_literal_tests.json")
|
||||
|
||||
# # Save as YAML
|
||||
# with open("integer_literal_tests.yaml", "w") as f:
|
||||
# yaml.dump(tests, f, default_flow_style=False, sort_keys=False)
|
||||
# print("Saved to integer_literal_tests.yaml")
|
||||
|
||||
# Save as YAML
|
||||
with open("cases.yaml", "w") as f:
|
||||
yaml.dump(tests, f, default_flow_style=False, sort_keys=False)
|
||||
|
||||
# Print first few tests as example
|
||||
# print("\nFirst 3 test cases:")
|
||||
# print(yaml.dump(tests[:3], default_flow_style=False, sort_keys=False))
|
||||
|
|
@ -1,53 +1,5 @@
|
|||
"""
|
||||
Test case generator for integer literals in the Stack Language.
|
||||
Generates comprehensive test cases for all integer types and bases.
|
||||
"""
|
||||
|
||||
from typing import List, Dict, Any, Optional
|
||||
from dataclasses import dataclass, asdict
|
||||
|
||||
|
||||
@dataclass
|
||||
class Token:
|
||||
type: str
|
||||
value: Any
|
||||
|
||||
|
||||
@dataclass
|
||||
class Operation:
|
||||
function: str
|
||||
type: str
|
||||
value: Any
|
||||
|
||||
|
||||
@dataclass
|
||||
class StackItem:
|
||||
type: str
|
||||
value: Any
|
||||
|
||||
|
||||
@dataclass
|
||||
class RuntimeError:
|
||||
message: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class TestCase:
|
||||
name: str
|
||||
code: str
|
||||
tokens: List[Dict[str, Any]]
|
||||
operations: Optional[List[Dict[str, Any]]] = None
|
||||
stack_final: Optional[List[Dict[str, Any]]] = None
|
||||
runtime_error: Optional[Dict[str, str]] = None
|
||||
|
||||
|
||||
def to_dict(obj):
|
||||
"""Convert dataclass to dict, removing None values."""
|
||||
if obj is None:
|
||||
return None
|
||||
d = asdict(obj) if hasattr(obj, '__dataclass_fields__') else obj
|
||||
return {k: v for k, v in d.items() if v is not None}
|
||||
|
||||
from .utils import Token, Operation, StackItem, RuntimeError, TestCase, to_dict
|
||||
|
||||
class IntegerTestGenerator:
|
||||
"""Generate test cases for integer literals."""
|
||||
|
|
@ -324,32 +276,3 @@ def generate_integer_literal_tests() -> List[Dict[str, Any]]:
|
|||
"""
|
||||
generator = IntegerTestGenerator()
|
||||
return generator.generate_all_tests()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# import json
|
||||
import yaml
|
||||
|
||||
# Generate tests
|
||||
tests = generate_integer_literal_tests()
|
||||
|
||||
# Print summary
|
||||
print(f"Generated {len(tests)} test cases")
|
||||
|
||||
# # Save as JSON
|
||||
# with open("integer_literal_tests.json", "w") as f:
|
||||
# json.dump(tests, f, indent=2)
|
||||
# print("Saved to integer_literal_tests.json")
|
||||
|
||||
# # Save as YAML
|
||||
# with open("integer_literal_tests.yaml", "w") as f:
|
||||
# yaml.dump(tests, f, default_flow_style=False, sort_keys=False)
|
||||
# print("Saved to integer_literal_tests.yaml")
|
||||
|
||||
# Save as YAML
|
||||
with open("cases.yaml", "w") as f:
|
||||
yaml.dump(tests, f, default_flow_style=False, sort_keys=False)
|
||||
|
||||
# Print first few tests as example
|
||||
print("\nFirst 3 test cases:")
|
||||
print(yaml.dump(tests[:3], default_flow_style=False, sort_keys=False))
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
|
||||
from typing import List, Dict, Any, Optional
|
||||
from dataclasses import dataclass, asdict
|
||||
|
||||
|
||||
@dataclass
|
||||
class Token:
|
||||
type: str
|
||||
value: Any
|
||||
|
||||
|
||||
@dataclass
|
||||
class Operation:
|
||||
function: str
|
||||
type: str
|
||||
value: Any
|
||||
|
||||
|
||||
@dataclass
|
||||
class StackItem:
|
||||
type: str
|
||||
value: Any
|
||||
|
||||
|
||||
@dataclass
|
||||
class RuntimeError:
|
||||
message: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class TestCase:
|
||||
name: str
|
||||
code: str
|
||||
tokens: List[Dict[str, Any]]
|
||||
operations: Optional[List[Dict[str, Any]]] = None
|
||||
stack_final: Optional[List[Dict[str, Any]]] = None
|
||||
runtime_error: Optional[Dict[str, str]] = None
|
||||
|
||||
|
||||
def to_dict(obj):
|
||||
"""Convert dataclass to dict, removing None values."""
|
||||
if obj is None:
|
||||
return None
|
||||
d = asdict(obj) if hasattr(obj, '__dataclass_fields__') else obj
|
||||
return {k: v for k, v in d.items() if v is not None}
|
||||
Loading…
Reference in New Issue