66 lines
2.3 KiB
Python
66 lines
2.3 KiB
Python
import pytest
|
|
|
|
from numpy import array
|
|
from . import util
|
|
|
|
|
|
class TestReturnComplex(util.F2PyTest):
|
|
def check_function(self, t, tname):
|
|
if tname in ["t0", "t8", "s0", "s8"]:
|
|
err = 1e-5
|
|
else:
|
|
err = 0.0
|
|
assert abs(t(234j) - 234.0j) <= err
|
|
assert abs(t(234.6) - 234.6) <= err
|
|
assert abs(t(234) - 234.0) <= err
|
|
assert abs(t(234.6 + 3j) - (234.6 + 3j)) <= err
|
|
# assert abs(t('234')-234.)<=err
|
|
# assert abs(t('234.6')-234.6)<=err
|
|
assert abs(t(-234) + 234.0) <= err
|
|
assert abs(t([234]) - 234.0) <= err
|
|
assert abs(t((234, )) - 234.0) <= err
|
|
assert abs(t(array(234)) - 234.0) <= err
|
|
assert abs(t(array(23 + 4j, "F")) - (23 + 4j)) <= err
|
|
assert abs(t(array([234])) - 234.0) <= err
|
|
assert abs(t(array([[234]])) - 234.0) <= err
|
|
assert abs(t(array([234], "b")) + 22.0) <= err
|
|
assert abs(t(array([234], "h")) - 234.0) <= err
|
|
assert abs(t(array([234], "i")) - 234.0) <= err
|
|
assert abs(t(array([234], "l")) - 234.0) <= err
|
|
assert abs(t(array([234], "q")) - 234.0) <= err
|
|
assert abs(t(array([234], "f")) - 234.0) <= err
|
|
assert abs(t(array([234], "d")) - 234.0) <= err
|
|
assert abs(t(array([234 + 3j], "F")) - (234 + 3j)) <= err
|
|
assert abs(t(array([234], "D")) - 234.0) <= err
|
|
|
|
# pytest.raises(TypeError, t, array([234], 'a1'))
|
|
pytest.raises(TypeError, t, "abc")
|
|
|
|
pytest.raises(IndexError, t, [])
|
|
pytest.raises(IndexError, t, ())
|
|
|
|
pytest.raises(TypeError, t, t)
|
|
pytest.raises(TypeError, t, {})
|
|
|
|
try:
|
|
r = t(10**400)
|
|
assert repr(r) in ["(inf+0j)", "(Infinity+0j)"]
|
|
except OverflowError:
|
|
pass
|
|
|
|
|
|
class TestFReturnComplex(TestReturnComplex):
|
|
sources = [
|
|
util.getpath("tests", "src", "return_complex", "foo77.f"),
|
|
util.getpath("tests", "src", "return_complex", "foo90.f90"),
|
|
]
|
|
|
|
@pytest.mark.parametrize("name", "t0,t8,t16,td,s0,s8,s16,sd".split(","))
|
|
def test_all_f77(self, name):
|
|
self.check_function(getattr(self.module, name), name)
|
|
|
|
@pytest.mark.parametrize("name", "t0,t8,t16,td,s0,s8,s16,sd".split(","))
|
|
def test_all_f90(self, name):
|
|
self.check_function(getattr(self.module.f90_return_complex, name),
|
|
name)
|