Enhance BaseTestGenerator with generator registration and test execution methods

This commit is contained in:
Kyler Olsen 2025-11-12 13:22:17 -07:00
parent 375c3f2422
commit 25d2202ebd
3 changed files with 30 additions and 8 deletions

View File

@ -0,0 +1,11 @@
from .base_tests import BaseTestGenerator
from .general_tests import GeneralTestGenerator
from .integer_tests import IntegerTestGenerator
from .float_tests import FloatTestGenerator
__all__ = [
"BaseTestGenerator",
"GeneralTestGenerator",
"IntegerTestGenerator",
"FloatTestGenerator",
]

View File

@ -3,18 +3,17 @@ Test case generator for integer literals in the Stack Language.
Generates comprehensive test cases for all integer types and bases.
"""
from .general_tests import GeneralTestGenerator
from .integer_tests import IntegerTestGenerator
from .float_tests import FloatTestGenerator
from .base_tests import BaseTestGenerator
if __name__ == "__main__":
import yaml
# Generate tests
tests = []
tests += GeneralTestGenerator.generate_tests()
tests += IntegerTestGenerator.generate_tests()
tests += FloatTestGenerator.generate_tests()
tests = BaseTestGenerator.run_all_generators()
# tests = []
# tests += GeneralTestGenerator.generate_tests()
# tests += IntegerTestGenerator.generate_tests()
# tests += FloatTestGenerator.generate_tests()
# Print summary
print(f"Generated {len(tests)} test cases")

View File

@ -1,4 +1,4 @@
from typing import List, Dict, Any, Optional
from typing import ClassVar, List, Dict, Any, Optional, Set, Type
from abc import ABC, abstractmethod
from dataclasses import dataclass, asdict
@ -52,6 +52,11 @@ class BaseTestGenerator(ABC):
test creation, operation building, and error handling.
"""
__generators: "ClassVar[Set[Type[BaseTestGenerator]]]" = set()
def __init_subclass__(cls):
BaseTestGenerator.__generators.add(cls)
def __init__(self):
"""Initialize the test generator with an empty test list."""
self.tests: List[Dict[str, Any]] = []
@ -259,6 +264,13 @@ class BaseTestGenerator(ABC):
gen.print_statistics()
return tests
@classmethod
def run_all_generators(cls) -> List[Dict[str, Any]]:
tests = []
for sub_cls in cls.__generators:
tests += sub_cls.generate_tests()
return tests
# =========================================================================
# Test Organization Helpers
# =========================================================================