Spaces:
Running on Zero
Running on Zero
| # ===================================================== | |
| # Apckeyl Framework | |
| # Version 1.0 | |
| # test_compute_provider_selector.py | |
| # ===================================================== | |
| """ | |
| Tests for Compute Provider Selector. | |
| Version 1.0 | |
| """ | |
| from compute_provider_selector import ( | |
| ComputeProviderSelector, | |
| ) | |
| from compute_provider_registry import ( | |
| ComputeProviderRegistry, | |
| ) | |
| from example_compute_provider import ( | |
| ExampleComputeProvider, | |
| ) | |
| # ===================================================== | |
| # Test Selector Creation | |
| # ===================================================== | |
| def test_selector_creation(): | |
| registry = ComputeProviderRegistry() | |
| selector = ComputeProviderSelector( | |
| registry | |
| ) | |
| assert selector is not None | |
| assert selector.registry is registry | |
| # ===================================================== | |
| # Test Missing Registry | |
| # ===================================================== | |
| def test_selector_requires_registry(): | |
| try: | |
| ComputeProviderSelector( | |
| None | |
| ) | |
| assert False | |
| except ValueError as error: | |
| assert str(error) == ( | |
| "Registry is required" | |
| ) | |
| # ===================================================== | |
| # Test Provider Selection | |
| # ===================================================== | |
| def test_select_provider(): | |
| registry = ComputeProviderRegistry() | |
| provider = ExampleComputeProvider() | |
| registry.register( | |
| provider | |
| ) | |
| selector = ComputeProviderSelector( | |
| registry | |
| ) | |
| result = selector.select( | |
| "example_task" | |
| ) | |
| assert result is provider | |
| # ===================================================== | |
| # Test Unknown Task | |
| # ===================================================== | |
| def test_select_unknown_task(): | |
| registry = ComputeProviderRegistry() | |
| provider = ExampleComputeProvider() | |
| registry.register( | |
| provider | |
| ) | |
| selector = ComputeProviderSelector( | |
| registry | |
| ) | |
| result = selector.select( | |
| "unknown_task" | |
| ) | |
| assert result is None | |
| # ===================================================== | |
| # Test Empty Task | |
| # ===================================================== | |
| def test_select_empty_task(): | |
| registry = ComputeProviderRegistry() | |
| provider = ExampleComputeProvider() | |
| registry.register( | |
| provider | |
| ) | |
| selector = ComputeProviderSelector( | |
| registry | |
| ) | |
| assert selector.select( | |
| "" | |
| ) is None | |
| assert selector.select( | |
| None | |
| ) is None | |
| # ===================================================== | |
| # Test Availability | |
| # ===================================================== | |
| def test_is_available(): | |
| registry = ComputeProviderRegistry() | |
| provider = ExampleComputeProvider() | |
| registry.register( | |
| provider | |
| ) | |
| selector = ComputeProviderSelector( | |
| registry | |
| ) | |
| assert selector.is_available( | |
| "example_task" | |
| ) is True | |
| # ===================================================== | |
| # Test Unavailable Task | |
| # ===================================================== | |
| def test_is_not_available(): | |
| registry = ComputeProviderRegistry() | |
| provider = ExampleComputeProvider() | |
| registry.register( | |
| provider | |
| ) | |
| selector = ComputeProviderSelector( | |
| registry | |
| ) | |
| assert selector.is_available( | |
| "unknown_task" | |
| ) is False | |
| # ===================================================== | |
| # End of File | |
| # ===================================================== |