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

1import inspect 

2 

3import pytest 

4 

5import geometric_kernels.spaces 

6 

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) 

15 

16 

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() 

39 

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__}`"