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
« 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"""
7import numpy as np
8import pytest
10from geometric_kernels.kernels.matern_kernel import default_num
12from ..helper import discrete_spectrum_spaces
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
33 return space, num_levels, eigenvalues, eps
36def test_shape(inputs):
37 _, num_levels, eigenvalues, _ = inputs
39 # Check that the eigenvalues have appropriate shape.
40 assert eigenvalues.shape == (num_levels, 1)
43def test_positive(inputs):
44 _, _, eigenvalues, eps = inputs
46 # Check that the eigenvalues are nonnegative.
47 np.testing.assert_array_less(np.zeros_like(eigenvalues), eigenvalues + eps)
50def test_ordered(inputs):
51 _, _, eigenvalues, eps = inputs
53 # Check that the eigenvalues are sorted in ascending order.
54 np.testing.assert_array_less(eigenvalues[:-1], eigenvalues[1:] + eps)