import importlib import inspect import unittest class TestLazyBinding(unittest.TestCase): @classmethod def setUpClass(cls): cls.binding = importlib.import_module("dragiyski.vulkan.binding") def assert_callable_macro(self, name: str, params: list[str]): self.assertTrue(hasattr(self.binding, name)) macro = getattr(self.binding, name) self.assertTrue(callable(macro)) sig = inspect.signature(macro) self.assertEqual(list(sig.parameters.keys()), params) for param in sig.parameters.values(): self.assertEqual(param.kind, inspect.Parameter.POSITIONAL_OR_KEYWORD) def test_define_vk_make_version(self): self.assert_callable_macro('VK_MAKE_VERSION', ['major', 'minor', 'patch']) def test_define_vk_version_major(self): self.assert_callable_macro('VK_VERSION_MAJOR', ['version']) def test_define_vk_version_minor(self): self.assert_callable_macro('VK_VERSION_MINOR', ['version']) def test_define_vk_version_patch(self): self.assert_callable_macro('VK_VERSION_PATCH', ['version']) def test_define_vk_make_api_version(self): self.assert_callable_macro('VK_MAKE_API_VERSION', ['variant', 'major', 'minor', 'patch']) def test_define_vk_api_version_variant(self): self.assert_callable_macro('VK_API_VERSION_VARIANT', ['version']) def test_define_vk_api_version_major(self): self.assert_callable_macro('VK_API_VERSION_MAJOR', ['version']) def test_define_vk_api_version_minor(self): self.assert_callable_macro('VK_API_VERSION_MINOR', ['version']) def test_define_vk_api_version_patch(self): self.assert_callable_macro('VK_API_VERSION_PATCH', ['version']) def test_define_vk_header_version(self): self.assertTrue(hasattr(self.binding, 'VK_HEADER_VERSION')) self.assertIsInstance(self.binding.VK_HEADER_VERSION, int)