66 lines
1.5 KiB
Python
66 lines
1.5 KiB
Python
from __future__ import division, absolute_import, print_function
|
|
|
|
import platform
|
|
import pytest
|
|
|
|
from . import util
|
|
from numpy.testing import assert_equal
|
|
|
|
@pytest.mark.skipif(
|
|
platform.system() == 'Darwin',
|
|
reason="Prone to error when run with numpy/f2py/tests on mac os, "
|
|
"but not when run in isolation")
|
|
class TestMultiline(util.F2PyTest):
|
|
suffix = ".pyf"
|
|
module_name = "multiline"
|
|
code = """
|
|
python module {module}
|
|
usercode '''
|
|
void foo(int* x) {{
|
|
char dummy = ';';
|
|
*x = 42;
|
|
}}
|
|
'''
|
|
interface
|
|
subroutine foo(x)
|
|
intent(c) foo
|
|
integer intent(out) :: x
|
|
end subroutine foo
|
|
end interface
|
|
end python module {module}
|
|
""".format(module=module_name)
|
|
|
|
def test_multiline(self):
|
|
assert_equal(self.module.foo(), 42)
|
|
|
|
|
|
@pytest.mark.skipif(
|
|
platform.system() == 'Darwin',
|
|
reason="Prone to error when run with numpy/f2py/tests on mac os, "
|
|
"but not when run in isolation")
|
|
class TestCallstatement(util.F2PyTest):
|
|
suffix = ".pyf"
|
|
module_name = "callstatement"
|
|
code = """
|
|
python module {module}
|
|
usercode '''
|
|
void foo(int* x) {{
|
|
}}
|
|
'''
|
|
interface
|
|
subroutine foo(x)
|
|
intent(c) foo
|
|
integer intent(out) :: x
|
|
callprotoargument int*
|
|
callstatement {{ &
|
|
; &
|
|
x = 42; &
|
|
}}
|
|
end subroutine foo
|
|
end interface
|
|
end python module {module}
|
|
""".format(module=module_name)
|
|
|
|
def test_callstatement(self):
|
|
assert_equal(self.module.foo(), 42)
|