48 lines
1.9 KiB
Python
48 lines
1.9 KiB
Python
"""CPU-only traceback capture checks; no CUDA or GPU test import."""
|
|
import importlib.util
|
|
from pathlib import Path
|
|
from types import SimpleNamespace
|
|
import numpy as np
|
|
|
|
PATH = Path(__file__).resolve().parents[1] / 'validation/multigrid/channel_parity_diagnostic/discover.py'
|
|
spec = importlib.util.spec_from_file_location('channel_discovery', PATH)
|
|
discovery = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(discovery)
|
|
|
|
|
|
def test_captures_exact_original_frame_and_arrays():
|
|
def test_uniform_matched_root():
|
|
cfg = SimpleNamespace(velocity=.025)
|
|
shifted, profile, clamp, damping, block = True, 'parabolic', False, .8, (4, 1)
|
|
expected = np.array([.001], np.float32)
|
|
actual = np.nextafter(expected, np.float32(1))
|
|
np.testing.assert_array_equal(actual, expected)
|
|
try:
|
|
test_uniform_matched_root()
|
|
except AssertionError as exc:
|
|
config, expected, actual = discovery.capture_case(exc)
|
|
assert config['shifted'] == 1 and config['profile'] == 'parabolic'
|
|
assert config['clamp'] == 0 and config['damping'] == .8
|
|
assert config['block'] == [4, 1] and config['steps'] == 8
|
|
np.testing.assert_array_equal(actual, np.nextafter(expected, np.float32(1)))
|
|
assert expected.flags.owndata and actual.flags.owndata
|
|
|
|
|
|
def test_other_assertion_does_not_guess_case():
|
|
def test_uniform_matched_root():
|
|
cfg = SimpleNamespace(velocity=.025)
|
|
shifted, profile, clamp, damping, block = False, 'uniform', True, .5, (20, 24)
|
|
expected = actual = np.array([np.nan], np.float32)
|
|
assert np.isfinite(expected).all()
|
|
try:
|
|
test_uniform_matched_root()
|
|
except AssertionError as exc:
|
|
assert discovery.capture_case(exc) is None
|
|
|
|
|
|
def test_unrelated_array_assertion_does_not_guess_case():
|
|
try:
|
|
np.testing.assert_array_equal([1], [2])
|
|
except AssertionError as exc:
|
|
assert discovery.capture_case(exc) is None
|