Coverage for tests/spaces/test_eigenvalues.py: 100%

20 statements  

« prev     ^ index     » next       coverage.py v7.11.3, created at 2025-11-16 21:43 +0000

1""" 

2Note: We don't use `check_function_with_backend` throughout this module because 

3eigenvalues are always represented by numpy arrays, regardless of the backend 

4used for other routines. 

5""" 

6 

7import numpy as np 

8import pytest 

9 

10from geometric_kernels.kernels.matern_kernel import default_num 

11 

12from ..helper import discrete_spectrum_spaces 

13 

14 

15@pytest.fixture( 

16 params=discrete_spectrum_spaces(), 

17 ids=str, 

18) 

19def inputs(request): 

20 """ 

21 Returns a tuple (space, num_levels, eigenvalues) where: 

22 - space = request.param, 

23 - num_levels is the default number of levels for the `space`, if it does not 

24 exceed 100, and 100 otherwise, 

25 - eigenvalues = space.get_eigenvalues(num_levels), 

26 - eps, a small number, a technicality for using `assert_array_less`. 

27 """ 

28 space = request.param 

29 num_levels = min(default_num(space), 100) 

30 eigenvalues = space.get_eigenvalues(num_levels) 

31 eps = 1e-5 

32 

33 return space, num_levels, eigenvalues, eps 

34 

35 

36def test_shape(inputs): 

37 _, num_levels, eigenvalues, _ = inputs 

38 

39 # Check that the eigenvalues have appropriate shape. 

40 assert eigenvalues.shape == (num_levels, 1) 

41 

42 

43def test_positive(inputs): 

44 _, _, eigenvalues, eps = inputs 

45 

46 # Check that the eigenvalues are nonnegative. 

47 np.testing.assert_array_less(np.zeros_like(eigenvalues), eigenvalues + eps) 

48 

49 

50def test_ordered(inputs): 

51 _, _, eigenvalues, eps = inputs 

52 

53 # Check that the eigenvalues are sorted in ascending order. 

54 np.testing.assert_array_less(eigenvalues[:-1], eigenvalues[1:] + eps)