ó
˜íYc           @   sè   d  Z  d d l Z d d l Z d d l m Z d d l Z d d l m Z m	 Z	 m
 Z
 d d l Z d d l m Z m Z m Z d „  Z d d	 „ Z d
 „  Z d d „ Z d „  Z d „  Z e d „ Z e d „ Z d „  Z d „  Z d S(   s   Test reduce functions.iÿÿÿÿN(   t   ok_(   t   assert_equalt   assert_raisest   assert_array_almost_equali   (   t   arrayst   array_ordert   DTYPESc          c   s)   x" t  j d ƒ D] }  t |  f Vq Wd S(   s   test reduce functionst   reduceN(   t   bnt   get_functionst
   unit_maker(   t   func(    (    s;   lib/python2.7/site-packages/bottleneck/tests/reduce_test.pyt   test_reduce   s    i   c      
   C   s9  d } | d 7} |  j  } t d | ƒ } x	t t | ƒ ƒ D]õ\ } } | j d k rc d	 g } n t t d | j ƒ ƒ d	 g } x¬| D]¤} d }	 d }
 t } y |  | d | ƒ}	 Wn t	 } n Xt } y6 t
 j ƒ  $ t
 j d ƒ | | d | ƒ}
 Wd	 QXWn t	 } n X| r"| r"q‰ | d
 t | ƒ t | j ƒ t | j ƒ t | ƒ t | ƒ | f } | | } | | k rÃ| rŠd } n d } | | | t j ƒ  f } | | 7} t t | ƒ n  t |	 |
 | | ƒ | d 7} t |	 d ƒ r‰ t |
 d ƒ r‰ |	 j } |
 j } t | | | | | f ƒ q‰ q‰ Wq< Wd	 S(   s6   Test that bn.xxx gives the same output as bn.slow.xxx.s9   
func %s | input %s (%s) | shape %s | axis %s | order %s
s   
Input array:
%s
s
   bn.slow.%si    iÿÿÿÿt   Crashedt   axist   ignoreNt   as    
bn.%s raised
bn.slow.%s ran

%ss    
bn.%s ran
bn.slow.%s raised

%ss   
 dtype mismatch %s %st   dtype(   t   __name__t   evalt	   enumerateR   t   ndimt   Nonet   listt   ranget   Falset   Truet   warningst   catch_warningst   simplefiltert   strR   t   shapeR   t	   tracebackt
   format_excR    R   t   hasattrR   (   R   t   decimalt   fmtt   namet   func0t   iR   t   axesR   t   actualt   desiredt   actualraisedt   desiredraisedt   tupt   err_msgt   fmt2t   msgt   dat   dd(    (    s;   lib/python2.7/site-packages/bottleneck/tests/reduce_test.pyR
      sR    
	

(
	

		c          c   s)   x" t  j d ƒ D] }  t |  f Vq Wd S(   s   test argument parsingR   N(   R   R	   t   unit_maker_argparse(   R   (    (    s;   lib/python2.7/site-packages/bottleneck/tests/reduce_test.pyt   test_arg_parsingJ   s    c         C   sÞ  |  j  } t d | ƒ } t j d d d g ƒ } d |  } | d 7} | d | 7} |  | ƒ } | | ƒ } | d } t | | | | ƒ |  | d	 ƒ } | | d	 ƒ } | d
 } t | | | | ƒ |  | d ƒ } | | d ƒ } | d } t | | | | ƒ |  | d d	 ƒ} | | d d	 ƒ} | d } t | | | | ƒ |  | d d ƒ} | | d d ƒ} | d } t | | | | ƒ |  d | ƒ } | d | ƒ } | d } t | | | | ƒ | d	 f }	 i  }
 |  |	 |
 Ž  d S(   s   test argument parsing.s
   bn.slow.%sg      ð?i   i   s   
%ss   %s
s   
Input array:
%s
s   (a)i    s   (a, 0)s	   (a, None)R   s   (a, axis=0)s   (a, axis=None)R   N(   R   R   t   npt   arrayR   R   (   R   R#   R%   R&   R   R$   R)   R*   R.   t   argst   kwargs(    (    s;   lib/python2.7/site-packages/bottleneck/tests/reduce_test.pyR3   P   sB    	







c          c   s)   x" t  j d ƒ D] }  t |  f Vq Wd S(   s&   test argument parsing raises in reduceR   N(   R   R	   t   unit_maker_argparse_raises(   R   (    (    s;   lib/python2.7/site-packages/bottleneck/tests/reduce_test.pyt   test_arg_parse_raises€   s    c      	   C   sä   t  j d d d g ƒ } t t |  ƒ t t |  d | ƒt t |  | d d d d ƒt t |  | d d d | ƒt t |  | d d d d d ƒ t t |  | d d ƒ|  j d k rÍ t t |  | d d ƒn  t t |  | | ƒ d S(   s&   test argument parsing raises in reduceg      ð?i   i   R   i    t   extraR   t   0t   nanstdt   nanvart   ddofN(   R=   R>   (   R5   R6   R   t	   TypeErrorR   (   R   R   (    (    s;   lib/python2.7/site-packages/bottleneck/tests/reduce_test.pyR9   †   s    c         C   ss   d d d g } x] | D]U } xL |  D]D } t  j | d | ƒ} t t t j | ƒ t t t j j | ƒ q# Wq Wd S(	   s'   Test nanmax for size zero input arrays.i    i   i   R   N(   i    (   i   i    (   i   i   i    (   R5   t   zerosR   t
   ValueErrorR   t   nanmaxt   slow(   t   dtypest   shapesR   R   R   (    (    s;   lib/python2.7/site-packages/bottleneck/tests/reduce_test.pyt   test_nanmax_size_zero˜   s    c         C   ss   d d d g } x] | D]U } xL |  D]D } t  j | d | ƒ} t t t j | ƒ t t t j j | ƒ q# Wq Wd S(	   s'   Test nanmin for size zero input arrays.i    i   i   R   N(   i    (   i   i    (   i   i   i    (   R5   RA   R   RB   R   t   nanminRD   (   RE   RF   R   R   R   (    (    s;   lib/python2.7/site-packages/bottleneck/tests/reduce_test.pyt   test_nanmin_size_zero¢   s    c          C   sÂ  t  j d g d d ƒ}  t j d d ƒ   t  j j d g d d ƒ} Wd QXt |  | d d ƒt  j d g d d ƒ}  t j d d ƒ   t  j j d g d d ƒ} Wd QXt |  | d d	 ƒt  j d t j g d d ƒ}  t j d d ƒ & t  j j d t j g d d ƒ} Wd QXt |  | d d
 ƒt  j d t j g t j d g g d d d d ƒ}  t j d d ƒ ; t  j j d t j g t j d g g d d d d ƒ} Wd QXt |  | d d ƒd S(   s"   nanstd regression test (issue #60)g      ð?R?   i   t   invalidR   NR.   s   bn.nanstd([1.0], ddof=1) wrongs   bn.nanstd([1], ddof=1) wrongs!   bn.nanstd([1, nan], ddof=1) wrongR   i    s   issue #60 regression(   R   R=   R5   t   errstateRD   R   t   nan(   t   ft   s(    (    s;   lib/python2.7/site-packages/bottleneck/tests/reduce_test.pyt   test_nanstd_issue60¯   s     !!'3<c          C   sÂ  t  j d g d d ƒ}  t j d d ƒ   t  j j d g d d ƒ} Wd QXt |  | d d ƒt  j d g d d ƒ}  t j d d ƒ   t  j j d g d d ƒ} Wd QXt |  | d d	 ƒt  j d t j g d d ƒ}  t j d d ƒ & t  j j d t j g d d ƒ} Wd QXt |  | d d
 ƒt  j d t j g t j d g g d d d d ƒ}  t j d d ƒ ; t  j j d t j g t j d g g d d d d ƒ} Wd QXt |  | d d ƒd S(   s"   nanvar regression test (issue #60)g      ð?R?   i   RJ   R   NR.   s   bn.nanvar([1.0], ddof=1) wrongs   bn.nanvar([1], ddof=1) wrongs!   bn.nanvar([1, nan], ddof=1) wrongR   i    s   issue #60 regression(   R   R>   R5   RK   RD   R   RL   (   RM   RN   (    (    s;   lib/python2.7/site-packages/bottleneck/tests/reduce_test.pyt   test_nanvar_issue60Ç   s     !!'3<(   t   __doc__R   R    t
   nose.toolsR    t   numpyR5   t   numpy.testingR   R   R   t
   bottleneckR   t   utilR   R   R   R   R
   R4   R3   R:   R9   RG   RI   RO   RP   (    (    (    s;   lib/python2.7/site-packages/bottleneck/tests/reduce_test.pyt   <module>   s"   	4	0		
	