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. Generates comprehensive test cases for all integer types and bases.
""" """
from .general_tests import GeneralTestGenerator from .base_tests import BaseTestGenerator
from .integer_tests import IntegerTestGenerator
from .float_tests import FloatTestGenerator
if __name__ == "__main__": if __name__ == "__main__":
import yaml import yaml
# Generate tests # Generate tests
tests = [] tests = BaseTestGenerator.run_all_generators()
tests += GeneralTestGenerator.generate_tests() # tests = []
tests += IntegerTestGenerator.generate_tests() # tests += GeneralTestGenerator.generate_tests()
tests += FloatTestGenerator.generate_tests() # tests += IntegerTestGenerator.generate_tests()
# tests += FloatTestGenerator.generate_tests()
# Print summary # Print summary
print(f"Generated {len(tests)} test cases") 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 abc import ABC, abstractmethod
from dataclasses import dataclass, asdict from dataclasses import dataclass, asdict
@ -52,6 +52,11 @@ class BaseTestGenerator(ABC):
test creation, operation building, and error handling. test creation, operation building, and error handling.
""" """
__generators: "ClassVar[Set[Type[BaseTestGenerator]]]" = set()
def __init_subclass__(cls):
BaseTestGenerator.__generators.add(cls)
def __init__(self): def __init__(self):
"""Initialize the test generator with an empty test list.""" """Initialize the test generator with an empty test list."""
self.tests: List[Dict[str, Any]] = [] self.tests: List[Dict[str, Any]] = []
@ -259,6 +264,13 @@ class BaseTestGenerator(ABC):
gen.print_statistics() gen.print_statistics()
return tests 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 # Test Organization Helpers
# ========================================================================= # =========================================================================