|
import pytest |
|
import numpy as np |
|
from numpy.testing import assert_array_equal, assert_equal |
|
from . import util |
|
from pathlib import Path |
|
|
|
def get_docdir(): |
|
parents = Path(__file__).resolve().parents |
|
try: |
|
|
|
nproot = parents[8] |
|
except IndexError: |
|
docdir = None |
|
else: |
|
docdir = nproot / "doc" / "source" / "f2py" / "code" |
|
if docdir and docdir.is_dir(): |
|
return docdir |
|
|
|
return parents[3] / "doc" / "source" / "f2py" / "code" |
|
|
|
pytestmark = pytest.mark.skipif( |
|
not get_docdir().is_dir(), |
|
reason=f"Could not find f2py documentation sources" |
|
f"({get_docdir()} does not exist)", |
|
) |
|
|
|
def _path(*args): |
|
return get_docdir().joinpath(*args) |
|
|
|
@pytest.mark.slow |
|
class TestDocAdvanced(util.F2PyTest): |
|
|
|
sources = [_path('asterisk1.f90'), _path('asterisk2.f90'), |
|
_path('ftype.f')] |
|
|
|
def test_asterisk1(self): |
|
foo = self.module.foo1 |
|
assert_equal(foo(), b'123456789A12') |
|
|
|
def test_asterisk2(self): |
|
foo = self.module.foo2 |
|
assert_equal(foo(2), b'12') |
|
assert_equal(foo(12), b'123456789A12') |
|
assert_equal(foo(20), b'123456789A123456789B') |
|
|
|
def test_ftype(self): |
|
ftype = self.module |
|
ftype.foo() |
|
assert_equal(ftype.data.a, 0) |
|
ftype.data.a = 3 |
|
ftype.data.x = [1, 2, 3] |
|
assert_equal(ftype.data.a, 3) |
|
assert_array_equal(ftype.data.x, |
|
np.array([1, 2, 3], dtype=np.float32)) |
|
ftype.data.x[1] = 45 |
|
assert_array_equal(ftype.data.x, |
|
np.array([1, 45, 3], dtype=np.float32)) |
|
|
|
|
|
|