From aff4b143724350e4ab7c40393662faabb965ab38 Mon Sep 17 00:00:00 2001
From: Wolfgang Kastaun <wolfgang.kastaun@aei.mpg.de>
Date: Mon, 27 Jan 2025 17:31:17 +0100
Subject: [PATCH] Draft unit test for shift inversion. Needs to be double
 checked.

---
 tests/test_shift_inversion_numpy.py | 32 +++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)
 create mode 100644 tests/test_shift_inversion_numpy.py

diff --git a/tests/test_shift_inversion_numpy.py b/tests/test_shift_inversion_numpy.py
new file mode 100644
index 0000000..25a6859
--- /dev/null
+++ b/tests/test_shift_inversion_numpy.py
@@ -0,0 +1,32 @@
+"""Unit tests for module shift_inversion_numpy"""
+
+import numpy as np
+import pytest
+
+from lisainstrument.shift_inversion_numpy import make_shift_inverse_lagrange_numpy
+
+
+def test_shift_inversion_numpy():
+    """Test basic functioning of shift_inversion_numpy on analytic coordinate transform"""
+    order = 31
+    nsamp = 200
+    k_mod = 8 * np.pi
+    a_mod = 1e-3
+    max_it = 5
+    tol = 1e-10
+
+    def dx_from_x(x):
+        return np.sin(x * k_mod) * a_mod
+
+    xi, dt = np.linspace(0, 1, nsamp, retstep=True)
+    fsample = 1 / dt
+    dxi = dx_from_x(xi)
+
+    op_np = make_shift_inverse_lagrange_numpy(order, a_mod * 1.01, max_it, tol / dt)
+
+    ai_np = op_np(dxi, fsample)
+
+    ai_ex = dx_from_x(xi - ai_np)
+
+    valid_range = slice(op_np.margin_left, -op_np.margin_right)
+    assert ai_np[valid_range] == pytest.approx(ai_ex[valid_range], abs=tol, rel=0)
-- 
GitLab