# Import custom test case classes from the orionis.test.cases module
from orionis.test.cases.test_case import TestCase
from orionis.test.cases.test_sync import SyncTestCase
from orionis.test.cases.test_async import AsyncTestCase

# Import the custom TestHistory class for logging test results
from orionis.test.logs.history import TestHistory

# Import the custom TestResult entity
from orionis.test.entities.test_result import TestResult

# Import enums for execution mode and test status
from orionis.test.enums.test_mode import ExecutionMode
from orionis.test.enums.test_status import TestStatus

# Import custom exception for test failures
from orionis.test.exceptions.test_failure_exception import OrionisTestFailureException
from orionis.test.exceptions.test_config_exception import OrionisTestConfigException
from orionis.test.exceptions.test_persistence_error import OrionisTestPersistenceError
from orionis.test.exceptions.test_runtime_error import OrionisTestRuntimeError
from orionis.test.exceptions.test_value_error import OrionisTestValueError

# Import configuration and suite classes for organizing tests
from orionis.test.test_suite import Configuration, TestSuite
from orionis.test.suite.test_unit import UnitTest

# Import standard unittest components for compatibility
from unittest import (
    TestLoader,
    TestSuite as StandardTestSuite,
    TestResult as StandardTestResult
)

# Import mock classes for creating test doubles
from unittest.mock import (
    Mock,
    MagicMock,
    patch
)

# Define the public API of this module
__all__ = [
    "TestCase",
    "SyncTestCase",
    "AsyncTestCase",
    "TestResult",
    "ExecutionMode",
    "TestStatus",
    "OrionisTestFailureException",
    "OrionisTestConfigException",
    "OrionisTestPersistenceError",
    "OrionisTestRuntimeError",
    "OrionisTestValueError",
    "Configuration",
    "TestSuite",
    "UnitTest",
    "TestLoader",
    "StandardTestSuite",
    "StandardTestResult",
    "Mock",
    "MagicMock",
    "TestHistory",
    "patch",
]