def test_gaussian_mean_shape_1d(mean, cov):
    """Test that different types of one-dimensional means and covariances yield one-
    dimensional Gaussian measures when no dimension is given."""
    measure = quad.GaussianMeasure(mean, cov)
    assert measure.dim == 1
    assert measure.mean.size == 1
    assert measure.cov.size == 1
def test_gaussian_non_diagonal_covariance(input_dim_non_diagonal):
    """Check that non-diagonal covariance matrices are recognised as non-diagonal."""
    mean = np.full((input_dim_non_diagonal, ), 0.0)
    cov = np.eye(input_dim_non_diagonal)
    cov[0, 1] = 1.5
    measure = quad.GaussianMeasure(mean, cov)
    assert measure.diagonal_covariance is False
def test_gaussian_param_assignment(input_dim: int):
    """Check that diagonal mean and covariance for higher dimensions are extended
    correctly."""
    measure = quad.GaussianMeasure(0, 1, input_dim)
    if input_dim == 1:
        assert measure.mean == 0.0
        assert measure.cov == 1.0
        assert isinstance(measure.mean, np.ndarray)
        assert isinstance(measure.cov, np.ndarray)
    else:
        assert np.array_equal(measure.mean, np.zeros(input_dim))
        assert np.array_equal(measure.cov, np.eye(input_dim))
def test_gaussian_diagonal_covariance(input_dim: int):
    """Check that diagonal covariance matrices are recognised as diagonal."""
    mean = np.full((input_dim, ), 0.0)
    cov = np.eye(input_dim)
    measure = quad.GaussianMeasure(mean, cov)
    assert measure.diagonal_covariance is True
def test_gaussian_scalar():
    """Check that the 1d Gaussian case works."""
    measure = quad.GaussianMeasure(0.5, 1.5)
    assert measure.mean == 0.5
    assert measure.cov == 1.5
def test_gaussian_vector_cov(cov_vector):
    """Check that Gaussian with diagonal covariance inputted as a vector works."""
    dim = cov_vector.size
    mean = np.zeros(dim)
    measure = quad.GaussianMeasure(mean, cov_vector)
    assert measure.cov.shape == (dim, dim)
def test_gaussian_negative_dimension(neg_dim):
    """Make sure that a negative dimension raises ValueError."""
    with pytest.raises(ValueError):
        quad.GaussianMeasure(0, 1, neg_dim)