Skip to content

Commit 1b15a2b

Browse files
committed
test: bound sovereign Type 13 parity sampling
1 parent 0992ba3 commit 1b15a2b

1 file changed

Lines changed: 23 additions & 9 deletions

File tree

tests/unit/test_type13_window_adversarial.py

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from pathlib import Path
1313

1414
import moira.moira_native as mn
15-
from moira._spk_body_kernel import _hermite_eval_3d, _hermite_eval_3d_with_derivative, SmallBodyKernel, small_body_readers_from_manifest
15+
from moira._spk_body_kernel import _hermite_eval_3d, _hermite_eval_3d_with_derivative, small_body_readers_from_manifest
1616
from moira._kernel_paths import find_sovereign_small_body_manifest
1717

1818
T0 = 2451545.0
@@ -239,7 +239,7 @@ def test_exact_node_queries(self):
239239
# ------------------------------------------------------------------
240240

241241
try:
242-
from moira._spk_body_kernel import SmallBodyKernel, small_body_readers_from_manifest
242+
from moira._spk_body_kernel import small_body_readers_from_manifest
243243
from moira._kernel_paths import find_sovereign_small_body_manifest
244244
_HAS_REAL_KERNEL_SUPPORT = True
245245
except Exception:
@@ -248,15 +248,25 @@ def test_exact_node_queries(self):
248248

249249
def _load_type13_data_from_segment(seg):
250250
"""Force load and return (epochs_jd, states, window_size) from a _Type13Segment."""
251-
# Access the lazy _data property to populate it
252-
data = seg._data
253-
epochs_jd, states, window_size = data # Note: our _data stores (states, epochs, ws) wait — check order
254-
# From the code: self.__data = (states, epochs_jd, int(payload["window_size"]))
255-
# So actually: states, epochs_jd, ws
256-
states_list, epochs_list, ws = data
251+
states_list, epochs_list, ws = seg._data
257252
return epochs_list, states_list, ws
258253

259254

255+
def _representative_kernel_sample(kernels):
256+
"""Return a catalog-size-independent first/middle/last kernel sample."""
257+
if len(kernels) <= 3:
258+
return list(kernels)
259+
indices = (0, (len(kernels) - 1) // 2, len(kernels) - 1)
260+
return [kernels[index] for index in indices]
261+
262+
263+
def test_representative_kernel_sample_is_catalog_size_bounded():
264+
kernels = list(range(399))
265+
266+
assert _representative_kernel_sample(kernels) == [0, 199, 398]
267+
assert _representative_kernel_sample(kernels[:2]) == [0, 1]
268+
269+
260270
@pytest.mark.skipif(not _HAS_REAL_KERNEL_SUPPORT, reason="SmallBodyKernel not importable")
261271
class TestType13RealKernelBoundaryAdversarial:
262272
"""Adversarial tests on real sovereign Type 13 shards."""
@@ -278,6 +288,7 @@ def real_kernels(self):
278288
if manifest is None or not manifest.exists():
279289
pytest.skip("No sovereign Type 13 manifest found for real kernel testing")
280290

291+
kernels = []
281292
try:
282293
kernels = small_body_readers_from_manifest(manifest)
283294
type13_kernels = []
@@ -290,9 +301,12 @@ def real_kernels(self):
290301
type13_kernels.append(k)
291302
if not type13_kernels:
292303
pytest.skip("No Type 13 segments found in available sovereign kernels")
293-
return type13_kernels
304+
yield _representative_kernel_sample(type13_kernels)
294305
except Exception as e:
295306
pytest.skip(f"Could not load sovereign Type 13 kernels: {e}")
307+
finally:
308+
for kernel in kernels:
309+
kernel.close()
296310

297311
def test_real_data_near_segment_right_edge(self, real_kernels):
298312
"""Attack the right boundary of real Type 13 segments with tiny offsets."""

0 commit comments

Comments
 (0)