"""Tests for src/pygui/backend/rbf_heatmap.py."""
import numpy as np

from pygui.backend.visualization.rbf_heatmap import BACKEND, interpolate_field


def test_field_shape_and_interpolates_at_sites():
    xs = np.array([0.0, 10.0, -10.0, 0.0])
    ys = np.array([10.0, -10.0, -10.0, 0.0])
    vs = np.array([149.0, 150.0, 148.0, 149.5])
    field = interpolate_field(xs, ys, vs, width=64, height=64,
                              extent=(-15, 15, -15, 15))
    assert field.shape == (64, 64)
    assert np.isfinite(field).all()
    assert field.min() <= 150.0 and field.max() >= 148.0


def test_round_clip_produces_nans_outside_circle():
    xs = np.array([0.0, 5.0, -5.0])
    ys = np.array([5.0, -5.0, 0.0])
    vs = np.array([149.0, 150.0, 148.0])
    field = interpolate_field(xs, ys, vs, width=64, height=64,
                              extent=(-15, 15, -15, 15), round_clip=True)
    assert np.isnan(field).any()
    # center pixel must be finite
    assert np.isfinite(field[32, 32])


def test_backend_reported():
    assert BACKEND in ("cupy", "numpy")
