| from pathlib import Path |
|
|
| import pytest |
|
|
| import numpy as np |
| from numpy.testing import assert_array_equal, assert_equal |
|
|
| from . import util |
|
|
|
|
| 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)) |
| |
| ftype.data.a = 0 |
|
|
| |
|
|