From 69734ef9828854aa668b104d47e08526b7a2bed0 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Thu, 23 Feb 2023 20:00:05 +0100 Subject: doublenull: add unit tests --- test/__init__.py | 0 test/test_doublenull.npz | Bin 0 -> 103064 bytes test/test_doublenull.py | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 test/__init__.py create mode 100644 test/test_doublenull.npz create mode 100644 test/test_doublenull.py (limited to 'test') diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/test_doublenull.npz b/test/test_doublenull.npz new file mode 100644 index 0000000..4745593 Binary files /dev/null and b/test/test_doublenull.npz differ diff --git a/test/test_doublenull.py b/test/test_doublenull.py new file mode 100644 index 0000000..e50003e --- /dev/null +++ b/test/test_doublenull.py @@ -0,0 +1,36 @@ +import os +from unittest import TestCase + +import numpy as np +from numpy.testing import assert_allclose + +from math_utils import array_utils +from nr_analysis_axi import doublenull, invars + +class TestDoubleNull(TestCase): + + def setUp(self): + datafile = os.path.splitext(__file__)[0] + '.npz' + + self.data = np.load(datafile) + + def test_null_curves(self): + rays = doublenull.calc_null_curves(self.data['t'], self.data['x'], + self.data['gxx'], np.zeros_like(self.data['gxx']), + -(self.data['alpha'] ** 2)) + + assert_allclose(rays[0], self.data['ray_times'], 1e-12) + assert_allclose(rays[1], self.data['rays_pos'], 1e-12) + assert_allclose(rays[2], self.data['rays_neg'], 1e-12) + + def test_null_coordinates(self): + x = self.data['x'] + idx = x.shape[0] // 2 + gxx = self.data['gxx'] + uv = 0.5 * array_utils.array_reflect(invars.dist_proper(x[idx:], gxx[0, idx:]), -1) + + coords = doublenull.calc_null_coordinates(self.data['t'], x, uv, uv, + gxx, np.zeros_like(gxx), + -(self.data['alpha'] ** 2)) + assert_allclose(coords[0], self.data['uxt'], 1e-12) + assert_allclose(coords[1], self.data['vxt'], 1e-12) -- cgit v1.2.3