[tests] more test coverage

This commit is contained in:
Jan Petykiewicz 2026-04-17 23:25:38 -07:00
commit 267d161769
8 changed files with 410 additions and 4 deletions

View file

@ -0,0 +1,74 @@
import numpy
import pytest
from ..fdfd import farfield
NEAR_SHAPE = (2, 3)
E_NEAR = [numpy.zeros(NEAR_SHAPE, dtype=complex), numpy.zeros(NEAR_SHAPE, dtype=complex)]
H_NEAR = [numpy.zeros(NEAR_SHAPE, dtype=complex), numpy.zeros(NEAR_SHAPE, dtype=complex)]
def test_near_to_farfield_rejects_wrong_length_inputs() -> None:
with pytest.raises(Exception, match='E_near must be a length-2 list'):
farfield.near_to_farfield(E_NEAR[:1], H_NEAR, dx=0.2, dy=0.3)
with pytest.raises(Exception, match='H_near must be a length-2 list'):
farfield.near_to_farfield(E_NEAR, H_NEAR[:1], dx=0.2, dy=0.3)
def test_near_to_farfield_rejects_mismatched_shapes() -> None:
bad_h_near = [H_NEAR[0], numpy.zeros((2, 4), dtype=complex)]
with pytest.raises(Exception, match='All fields must be the same shape'):
farfield.near_to_farfield(E_NEAR, bad_h_near, dx=0.2, dy=0.3)
def test_near_to_farfield_uses_default_and_scalar_padding_shapes() -> None:
default_result = farfield.near_to_farfield(E_NEAR, H_NEAR, dx=0.2, dy=0.3)
scalar_result = farfield.near_to_farfield(E_NEAR, H_NEAR, dx=0.2, dy=0.3, padded_size=8)
assert default_result['E'][0].shape == (2, 4)
assert default_result['H'][0].shape == (2, 4)
assert scalar_result['E'][0].shape == (8, 8)
assert scalar_result['H'][0].shape == (8, 8)
def test_far_to_nearfield_rejects_wrong_length_inputs() -> None:
ff = farfield.near_to_farfield(E_NEAR, H_NEAR, dx=0.2, dy=0.3, padded_size=8)
with pytest.raises(Exception, match='E_far must be a length-2 list'):
farfield.far_to_nearfield(ff['E'][:1], ff['H'], ff['dkx'], ff['dky'])
with pytest.raises(Exception, match='H_far must be a length-2 list'):
farfield.far_to_nearfield(ff['E'], ff['H'][:1], ff['dkx'], ff['dky'])
def test_far_to_nearfield_rejects_mismatched_shapes() -> None:
ff = farfield.near_to_farfield(E_NEAR, H_NEAR, dx=0.2, dy=0.3, padded_size=8)
bad_h_far = [ff['H'][0], numpy.zeros((8, 4), dtype=complex)]
with pytest.raises(Exception, match='All fields must be the same shape'):
farfield.far_to_nearfield(ff['E'], bad_h_far, ff['dkx'], ff['dky'])
def test_far_to_nearfield_uses_default_and_scalar_padding_shapes() -> None:
ff = farfield.near_to_farfield(E_NEAR, H_NEAR, dx=0.2, dy=0.3, padded_size=8)
default_result = farfield.far_to_nearfield(
[field.copy() for field in ff['E']],
[field.copy() for field in ff['H']],
ff['dkx'],
ff['dky'],
)
scalar_result = farfield.far_to_nearfield(
[field.copy() for field in ff['E']],
[field.copy() for field in ff['H']],
ff['dkx'],
ff['dky'],
padded_size=4,
)
assert default_result['E'][0].shape == (8, 8)
assert default_result['H'][0].shape == (8, 8)
assert scalar_result['E'][0].shape == (4, 4)
assert scalar_result['H'][0].shape == (4, 4)