o 6a@sddlZddlmZddlmZddlmZddlZddl Z Gdddej Z Gdd d Z Gd d d ej Z Gd d d ej ZdS)N)assert_array_equal)util) crackfortranc@seZdZdZddZdS) TestNoSpacea| subroutine subb(k) real(8), intent(inout) :: k(:) k=k+1 endsubroutine subroutine subc(w,k) real(8), intent(in) :: w(:) real(8), intent(out) :: k(size(w)) k=w+1 endsubroutine function t0(value) character value character t0 t0 = value endfunction cCsxtjgdtjd}tjgdtjd}|j|t||d|j||gt||d|jddks:JdS)N)r)dtyper2)nparrayfloat64modulesubbrsubct0)selfkwrD/usr/lib/python3/dist-packages/numpy/f2py/tests/test_crackfortran.py test_modules zTestNoSpace.test_moduleN)__name__ __module__ __qualname__coderrrrrr s rc@seZdZddZddZdS)TestPublicPrivatecCs|d}|d}|tdWdn1swYtt|g}t|dks1J|d}d|ddd vsAJd |ddd vsMJd|dd d vsYJd |dd d vseJd|dd d vsqJd |dd d vs}JdS) Nmod.f90ra> module foo private integer :: a public :: setA integer :: b contains subroutine setA(v) integer, intent(in) :: v a = v end subroutine setA end module foo rrprivatevarsaattrspecpublicbsetaopenwritetextwrapdedentrstrlenrtmp_pathf_pathffmodrrrtest_defaultPrivate)s z%TestPublicPrivate.test_defaultPrivatecCs|d}|d}|tdWdn1swYtt|g}t|dks1J|d}d|ddd vsAJd |ddd vsMJd|dd d vsYJd |dd d vseJdS) Nrra+ module foo public integer, private :: a public :: setA contains subroutine setA(v) integer, intent(in) :: v a = v end subroutine setA end module foo rrrr r!r"r#r%r&r-rrrtest_defaultPublicCs  z$TestPublicPrivate.test_defaultPublicN)rrrr2r3rrrrr(s rc@s eZdZdZddZddZdS) TestExternalaY integer(8) function external_as_statement(fcn) implicit none external fcn integer(8) :: fcn external_as_statement = fcn(0) end integer(8) function external_as_attribute(fcn) implicit none integer(8), external :: fcn external_as_attribute = fcn(0) end cC$dd}|j|}|dksJdS)NcS|dSN{rxrrrincrlz5TestExternal.test_external_as_statement..incrr8)rexternal_as_statementrr;rrrrtest_external_as_statementk z'TestExternal.test_external_as_statementcCr5)NcSr6r7rr9rrrr;rr<z5TestExternal.test_external_as_attribute..incrr8)rexternal_as_attributer>rrrtest_external_as_attributeqrAz'TestExternal.test_external_as_attributeN)rrrrr@rCrrrrr4Zs r4c@s"eZdZdZedZddZdS)TestCrackFortranz.f90a subroutine gh2848( & ! first 2 parameters par1, par2,& ! last 2 parameters par3, par4) integer, intent(in) :: par1, par2 integer, intent(out) :: par3, par4 par3 = par1 par4 = par2 end subroutine gh2848 cCs|jdd}|dks JdS)Nrr)rr)rgh2848)rr?rrr test_gh2848szTestCrackFortran.test_gh2848N)rrrsuffixr)r*rrFrrrrrDws  rD)numpyr numpy.testingrr numpy.f2pyrtempfiler)F2PyTestrrr4rDrrrrs   2