Coverage for tests/spaces/test_basics.py: 93%
14 statements
« prev ^ index » next coverage.py v7.11.3, created at 2025-11-16 21:43 +0000
« prev ^ index » next coverage.py v7.11.3, created at 2025-11-16 21:43 +0000
1import inspect
3import pytest
5import geometric_kernels.spaces
7from ..helper import (
8 compact_matrix_lie_groups,
9 discrete_spectrum_spaces,
10 hodge_discrete_spectrum_spaces,
11 noncompact_symmetric_spaces,
12 product_discrete_spectrum_spaces,
13 spaces,
14)
17@pytest.mark.parametrize(
18 "fun, cls",
19 [
20 (
21 hodge_discrete_spectrum_spaces,
22 geometric_kernels.spaces.HodgeDiscreteSpectrumSpace,
23 ),
24 (compact_matrix_lie_groups, geometric_kernels.spaces.CompactMatrixLieGroup),
25 (
26 product_discrete_spectrum_spaces,
27 geometric_kernels.spaces.ProductDiscreteSpectrumSpace,
28 ),
29 (discrete_spectrum_spaces, geometric_kernels.spaces.DiscreteSpectrumSpace),
30 (
31 noncompact_symmetric_spaces,
32 geometric_kernels.spaces.NoncompactSymmetricSpace,
33 ),
34 (spaces, geometric_kernels.spaces.Space),
35 ],
36)
37def test_all_discrete_spectrum_spaces_covered(fun, cls):
38 spaces = fun()
40 # all classes in the geometric_kernels.spaces module
41 classes = [
42 (cls_name, cls_obj)
43 for cls_name, cls_obj in inspect.getmembers(geometric_kernels.spaces)
44 if inspect.isclass(cls_obj)
45 ]
46 for cls_name, cls_obj in classes:
47 if issubclass(cls_obj, cls) and not inspect.isabstract(cls_obj):
48 for space in spaces:
49 if isinstance(space, cls_obj):
50 break
51 else:
52 # complain if discrete_spectrum_spaces() does not contain an
53 # instance of a non-abstract subclass of DiscreteSpectrumSpace
54 # from the geometric_kernels.spaces module.
55 assert (
56 False
57 ), f"An instance of the class `{cls_name}` is missing from the list returned by the function `{fun.__name__}`"