σ
ΠEe]c           @` s   d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z	 d  d l
 m Z m Z d d l m Z d e j f d     YZ d S(   i    (   t   divisiont   absolute_importt   print_functionN(   t   assert_t   assert_equali   (   t   utilt   TestF77Callbackc           B` s³   e  Z d  Z e j j e j j d d j d   d     Z e j j d    Z	 d   Z
 e j j e j d k d d	 d
    Z e j j e j d k d d	 d    Z RS(   s  
       subroutine t(fun,a)
       integer a
cf2py  intent(out) a
       external fun
       call fun(a)
       end

       subroutine func(a)
cf2py  intent(in,out) a
       integer a
       a = a + 11
       end

       subroutine func0(a)
cf2py  intent(out) a
       integer a
       a = 11
       end

       subroutine t2(a)
cf2py  intent(callback) fun
       integer a
cf2py  intent(out) a
       external fun
       call fun(a)
       end

       subroutine string_callback(callback, a)
       external callback
       double precision callback
       double precision a
       character*1 r
cf2py  intent(out) a
       r = 'r'
       a = callback(r)
       end

       subroutine string_callback_array(callback, cu, lencu, a)
       external callback
       integer callback
       integer lencu
       character*8 cu(lencu)
       integer a
cf2py  intent(out) a

       a = callback(cu, lencu)
       end
    t   names   t,t2t   ,c         C` s   |  j  |  d  S(   N(   t   check_function(   t   selfR   (    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyt   test_all@   s    c         C` s/   d } t  |  j j j t j |  j    d  S(   NsΔ  
        a = t(fun,[fun_extra_args])

        Wrapper for ``t``.

        Parameters
        ----------
        fun : call-back function

        Other Parameters
        ----------------
        fun_extra_args : input tuple, optional
            Default: ()

        Returns
        -------
        a : int

        Notes
        -----
        Call-back functions::

          def fun(): return a
          Return objects:
            a : int
        (   R   t   modulet   tt   __doc__t   textwrapt   dedentt   lstrip(   R
   t   expected(    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyt   test_docstringE   s    c         C` s&  t  |  j |  } | d    } t | d k t |   | d   d d } t | d k t |   | d   d d } t | d k t |   | d   d d } t | d
 k t |   | d   d t j f } t | d k t |   | t j d t j f } t | d k t |   | |  j j d d } t | d k t |   | |  j j  } t | d k t |   | |  j j j	  } t | d k t |   d t
 f d     Y} |   } | |  } t | d	 k t |   | | j  } t | d k t |   d  S(   Nc           S` s   d S(   Ni   (    (    (    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyt   <lambda>e   t    i   c         S` s   d S(   Ni   (    (   t   a(    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyR   g   R   t   fun_extra_argsi   i   c         S` s   |  S(   N(    (   R   (    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyR   i   R   c         S` s   d |  S(   Ni   (    (   R   (    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyR   k   R   i   i   c         S` s   t  j |   S(   N(   t   matht   degrees(   R   (    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyR   m   R   i΄   i   i   t   Ac           B` s   e  Z d    Z d   Z RS(   c         S` s   d S(   Ni   (    (   R
   (    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyt   __call__{   s    c         S` s   d S(   Ni	   (    (   R
   (    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyt   mth~   s    (   t   __name__t
   __module__R   R   (    (    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyR   y   s   	i	   (   i   (   i   (   i   (   i   (   t   getattrR   R   t   reprR   t   piR   t   funct   func0t	   _cpointert   objectR   (   R
   R   R   t   rR   R   (    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyR	   c   s2    	t   win32t   reasons)   Fails with MinGW64 Gfortran (Issue #9673)c         C` sD   d   } t  |  j d  } | |  } t | d k t |   d  S(   Nc         S` s   |  d k r d Sd Sd  S(   NR&   i    i   (    (   t   code(    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyt   callback   s    t   string_callbacki    (   R   R   R   R    (   R
   R*   t   fR&   (    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyt   test_string_callback   s    	c         C` sb   t  j d d  } d   } t |  j d  } | | | t |   } t | d k t |   d  S(   Ni   i   t   S1c         S` sI   |  j  | d f k r d S|  j d k r, d St j |  d k  sE d Sd S(   Ni   i   R.   i   R   i   i    (   t   shapet   dtypet   npt   all(   t   cut   lencu(    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyR*      s    t   string_callback_arrayi    (   i   i   (   R1   t   zerosR   R   t   lenR   R    (   R
   R3   R*   R,   t   res(    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyt   test_string_callback_array   s
    		(   R   R   R)   t   pytestt   markt   slowt   parametrizet   splitR   R   R	   t   skipift   syst   platformR-   R9   (    (    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyR      s   1	*	#(   t
   __future__R    R   R   R   R   R@   R:   t   numpyR1   t   numpy.testingR   R   R   R   t   F2PyTestR   (    (    (    s=   lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyt   <module>   s   