From 25d2202ebd097eabd58e0431f4d6bab813f8ef6e Mon Sep 17 00:00:00 2001 From: Kyler Date: Wed, 12 Nov 2025 13:22:17 -0700 Subject: [PATCH] Enhance BaseTestGenerator with generator registration and test execution methods --- SLS_Tests/generate_tests/__init__.py | 11 +++++++++++ SLS_Tests/generate_tests/__main__.py | 13 ++++++------- SLS_Tests/generate_tests/base_tests.py | 14 +++++++++++++- 3 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 SLS_Tests/generate_tests/__init__.py diff --git a/SLS_Tests/generate_tests/__init__.py b/SLS_Tests/generate_tests/__init__.py new file mode 100644 index 0000000..092fd96 --- /dev/null +++ b/SLS_Tests/generate_tests/__init__.py @@ -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", +] diff --git a/SLS_Tests/generate_tests/__main__.py b/SLS_Tests/generate_tests/__main__.py index 33227c1..0a7e71c 100644 --- a/SLS_Tests/generate_tests/__main__.py +++ b/SLS_Tests/generate_tests/__main__.py @@ -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") diff --git a/SLS_Tests/generate_tests/base_tests.py b/SLS_Tests/generate_tests/base_tests.py index 362023b..3d1433c 100644 --- a/SLS_Tests/generate_tests/base_tests.py +++ b/SLS_Tests/generate_tests/base_tests.py @@ -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 # =========================================================================