ó
˜íYc           @   sl   d  Z  d d l Z d d l Z d d l m Z d d l Z d d l m	 Z	 d „  Z
 e d „ Z d „  Z d S(	   s   Test functions.iÿÿÿÿN(   t   assert_equali   (   t   DTYPESc   
      c   s{  i  } i d d 6d g d 6| d <i d d 6d g d 6| d <i d d 6d g d 6| d <t  j j d d d g ƒ } x| D]ú } | | d } | | d } xÕ |  D]Í } t  j | d | ƒ} t | j j t  j ƒ rJ| j | j	 Œ  d	 k  } t  j
 | | <| j | j	 Œ  d	 k  } t  j | | <| j | j	 Œ  d	 k  } | | c d
 9<n  x" | D] }	 | j |	 ƒ } | VqQWq¢ Wqy Wd S(   s3   Iterator that yield arrays to use for unit testing.i   t   sizet   shapesi   i   i   i   t   dtypegš™™™™™É?iÿÿÿÿN(   i   (   i   i   (   i   i   i   (   t   npt   randomt   RandomStatet   aranget
   issubclassR   t   typet   inexactt   randt   shapet   inft   nant   reshape(
   t   dtypest   sst   rst   ndimR   R   R   t   at   idxR   (    (    sF   lib/python2.7/site-packages/bottleneck/tests/input_modifcation_test.pyt   arrays   s(    c         C   s]  d } | d 7} xFt  t t ƒ ƒ D]2\ } } x#t t | j | j ƒ ƒ d	 g D]þ } t j d d ƒ ä | j	 ƒ  } | j	 ƒ  } d |  j
 k s¢ d |  j
 k rê | d	 k r´ wS n  t j ƒ  % t j d ƒ |  | d d | ƒWd	 QXnA y4 t j ƒ  " t j d ƒ |  | d | ƒWd	 QXWn
 wS n Xt | | | |  j
 | | f ƒ Wd	 QXqS Wq# Wd	 S(
   s1   Test that bn.xxx gives the same output as np.xxx.s   
Input array modifed by %s.

s!   input array before:
%s
after:
%s
t   invalidt   ignoret   move_t   sorti   t   axisN(   t	   enumerateR   R   t   listt   rangeR   t   NoneR   t   errstatet   copyt   __name__t   warningst   catch_warningst   simplefilterR    (   t   funct   nanst   msgt   iR   R   t   a1t   a2(    (    sF   lib/python2.7/site-packages/bottleneck/tests/input_modifcation_test.pyt
   unit_maker#   s(    
*c          c   s)   x" t  j d ƒ D] }  t |  f Vq Wd S(   s4   Test for illegal inplace modification of input arrayt   allN(   t   bnt   get_functionsR-   (   R'   (    (    sF   lib/python2.7/site-packages/bottleneck/tests/input_modifcation_test.pyt   test_modification<   s    (   t   __doc__R$   t   numpyR   t   numpy.testingR    t
   bottleneckR/   t   utilR   R   t   TrueR-   R1   (    (    (    sF   lib/python2.7/site-packages/bottleneck/tests/input_modifcation_test.pyt   <module>   s   	