ó
ØÆ÷Xc           @` s¥   d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l m Z d  d l m	 Z	 m
 Z
 m Z m Z d  d l Z d e j f d „  ƒ  YZ e d k r¡ e	 ƒ  n  d S(   i    (   t   divisiont   absolute_importt   print_functionN(   t   array(   t   run_module_suitet   assert_t   assert_equalt   dect   TestF77Callbackc           B` sD   e  Z d  Z e j d „  ƒ Z e j d „  ƒ Z d „  Z 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

    c         C` s+   x$ d j  d ƒ D] } |  j | ƒ q Wd  S(   Ns   t,t2t   ,(   t   splitt   check_function(   t   selft   name(    (    s=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyt   test_all4   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=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyt   test_docstring9   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=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyt   <lambda>Y   s    i   c         S` s   d S(   Ni   (    (   t   a(    (    s=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyR   [   s    t   fun_extra_argsi   i   c         S` s   |  S(   N(    (   R   (    (    s=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyR   ]   s    c         S` s   d |  S(   Ni   (    (   R   (    (    s=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyR   _   s    i   i   c         S` s   t  j |  ƒ S(   N(   t   matht   degrees(   R   (    (    s=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyR   a   s    i´   i   i   t   Ac           B` s   e  Z d  „  Z d „  Z RS(   c         S` s   d S(   Ni   (    (   R   (    (    s=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyt   __call__o   s    c         S` s   d S(   Ni	   (    (   R   (    (    s=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyt   mthr   s    (   t   __name__t
   __module__R   R   (    (    (    s=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyR   m   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=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyR   W   s2    	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=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyt   callback|   s    t   string_callbacki    (   R!   R   R   R"   (   R   R*   t   fR(   (    (    s=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyt   test_string_callbackz   s    	(	   R   R    R)   R   t   slowR   R   R   R-   (    (    (    s=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyR      s
   '	#t   __main__(   t
   __future__R    R   R   R   R   t   numpyR   t   numpy.testingR   R   R   R   t   utilt   F2PyTestR   R   (    (    (    s=   /tmp/pip-build-X4mzal/numpy/numpy/f2py/tests/test_callback.pyt   <module>   s   "|