U
    O8c                     @   s  d Z ddlZddlZddlmZmZmZ ddlm	Z	 ej
d ej
d  ej
d  ej
d  Zd	dii d
diddiddiddiddiddiddii i dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd  d ZG d!d" d"ZG d#d$ d$Zd%d& Zd'd( Zejd)d*d+d,d-gd.d/ ZG d0d1 d1Zejd)e d2d3 Zd4d5 Z ejd)d6d7e! dd8d9gd:d; Z"ejd)e d<d= Z#ejd)e d>d? Z$ejd@eejd)e dAdB Z%dS )Cz(Tests for the array padding functions.

    N)assert_array_equalassert_allcloseassert_equal)	_as_pairsZuintintfloatcomplexconstant_values
end_valuesstat_lengthreflect_typeZeven)constantedgelinear_rampmaximummeanmedianminimumreflect	symmetricwrapemptyc                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestAsPairsc                 C   sh   t ddggd }ddgdggfD ]}t|d}t|| q$t }tt|dt ||ggd  dS )z Test casting for a single value.   
   Nnparrayr   r   objectselfexpectedxresultobj r%   A/tmp/pip-unpacked-wheel-fd_gsd75/numpy/lib/tests/test_arraypad.pytest_single_value!   s    
zTestAsPairs.test_single_valuec                 C   s   t ddggd }ddgddggfD ]}t|d}t|| q&t }ttd|gdt d|ggd  ttdgdggdt ddgddgg ttdg|ggdt ddg||gg dS )z-Test proper casting for two different values.r      r   a   Nr   r   r%   r%   r&   test_two_values.   s"    
zTestAsPairs.test_two_valuesc                 C   s0   d}t td ddd| t td ddd| d S )N)NNr,   r,   r   FZas_indexT)r   r   r    r!   r%   r%   r&   test_with_noneG   s    zTestAsPairs.test_with_nonec                 C   s$   t dd}tt|d| dS )z?Test if `x` already matching desired output are passed through.   )   r*   r1   N)r   arangereshaper   r   r.   r%   r%   r&   test_pass_throughR   s
    zTestAsPairs.test_pass_throughc              
   C   s   t tddgdddtjddggd tjd t tddgdddtjdd	ggd tjd d
d
gd
ggd
d	gddgd
d	ggd	d
ggddggd ddgg fD ],}tjtdd t|ddd W 5 Q R X qdS )z Test results if `as_index=True`.g@gffffff
@r   Tr-   r   dtypeg(\@r(      r*   	   znegative valuesmatchN)r   r   r   r   Zintppytestraises
ValueError)r    r"   r%   r%   r&   test_as_indexZ   s    (zTestAsPairs.test_as_indexc              	   C   s   t jtdd tdgggd W 5 Q R X t jtdd tddgddggd W 5 Q R X t jtdd ttd	d W 5 Q R X d
S )z"Ensure faulty usage is discovered.zmore dimensions than allowedr<   r   r   zcould not be broadcastr9   r*   r(   r*   r   N)r>   r?   r@   r   r   ones)r    r%   r%   r&   test_exceptionsi   s     zTestAsPairs.test_exceptionsN)	__name__
__module____qualname__r'   r+   r/   r4   rA   rD   r%   r%   r%   r&   r       s   r   c                   @   sb   e Zd Zejde dd Zejdddddgdd	 Z	ejdddddgd
d Z
dS )TestConditionalShortcutsmodec                 C   s>   t dddd}dd |jD }t|t j|||d d S )Nx   r(      r1   c                 S   s   g | ]}d qS )r   r   r%   .0_r%   r%   r&   
<listcomp>w   s     zHTestConditionalShortcuts.test_zero_padding_shortcuts.<locals>.<listcomp>rI   r   r2   r3   shaper   padr    rI   testpad_amtr%   r%   r&   test_zero_padding_shortcutst   s    z4TestConditionalShortcuts.test_zero_padding_shortcutsr   r   r   r   c                 C   sL   t dddd}dd |jD }tt j||ddt j|||d	d
 d S )NrJ   r(   rK   r1   c                 S   s   g | ]}d qS )r9   r9   r%   rM   r%   r%   r&   rP   }   s     zITestConditionalShortcuts.test_shallow_statistic_range.<locals>.<listcomp>r   rQ   r9   rI   r   rR   rU   r%   r%   r&   test_shallow_statistic_rangez   s
    z5TestConditionalShortcuts.test_shallow_statistic_rangec                 C   sJ   t ddd}dd |jD }tt j|||dt j|||dd d S )N   rK   r1   c                 S   s   g | ]}d qS ))r   r   r%   rM   r%   r%   r&   rP      s     zFTestConditionalShortcuts.test_clip_statistic_range.<locals>.<listcomp>rQ   rZ   rR   rU   r%   r%   r&   test_clip_statistic_range   s
    z2TestConditionalShortcuts.test_clip_statistic_rangeN)rE   rF   rG   r>   markparametrize
_all_modeskeysrX   r[   r]   r%   r%   r%   r&   rH   s   s   

rH   c                	   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zejdddddgd d! Zejdddddgejd"d#d$d%d&d'gd(d) Zd*d+ Zejd,ejd-ejdddgd.d/ Zejdddgd0d1 Zd2S )3TestStatisticc                 C   s\  t dd}t j|dddd}t ddddddddddddddddddddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjg}t|| d S )lNd   f)      r   )rB   r         ?              ?       @      @      @      @      @      @       @      "@      $@      &@      (@      *@      ,@      .@      0@      1@      2@      3@      4@      5@      6@      7@      8@      9@      :@      ;@      <@      =@      >@      ?@      @@     @@      A@     A@      B@     B@      C@     C@      D@     D@      E@     E@      F@     F@      G@     G@      H@     H@      I@     I@      J@     J@      K@     K@      L@     L@      M@     M@      N@     N@      O@     O@      P@     @P@     P@     P@      Q@     @Q@     Q@     Q@      R@     @R@     R@     R@      S@     @S@     S@     S@      T@     @T@     T@     T@      U@     @U@     U@     U@      V@     @V@     V@     V@      W@     @W@     W@     W@      X@     @X@     X@     X@r   r2   astyperT   r   r   r    r)   br%   r%   r&   test_check_mean_stat_length   s                                                                                                                            z)TestStatistic.test_check_mean_stat_lengthc                 C   sR  t d}t |dd}t dddddddddddddddddddddddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdddddddddddddddddddddg}t|| d S )hNrc   re   r   c   r   r9   r*   r   r(   rK   r1         r:   r      r0                        rg               rf               r\          !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   r   r2   rT   r   r   r   r%   r%   r&   test_check_maximum_1   s   
                                                                                                                         z"TestStatistic.test_check_maximum_1c                 C   sV  t dd }t |dd}t ddddddddddddddddddddddddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdddddddddddddddddddddg}t|| d S )gNrc   r9   re   r   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   rg   r   r   r   r   rf   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r   r*  r   r%   r%   r&   test_check_maximum_2   s                                                                                                                            z"TestStatistic.test_check_maximum_2c                 C   sZ  t dd }t j|dddd}t ddddddddddddddddddddddddddddd	d
ddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdddddddddddddddddddddg}t|| d S )hNrc   r9   re   r   r   rh   r*   r   r(   rK   r1   r   r   r:   r   r0   r   r   r   r   r   r   r   rg   r   r   r   r   rf   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r   r*  r   r%   r%   r&   test_check_maximum_stat_length   s                                                                                                                            z,TestStatistic.test_check_maximum_stat_lengthc                 C   sR  t d}t |dd}t ddddddddddddddddddddddddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgddddddddddddddddddddg}t|| d S )hNrc   re   r   r   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   rg   r   r   r   r   rf   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r   r*  r   r%   r%   r&   test_check_minimum_1   s   
                                                                                                                         z"TestStatistic.test_check_minimum_1c                 C   sV  t dd }t |dd}t ddddddddddddddddddddddddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddeddfddddddddddddddddddddg}t|| d S )gNrc   r*   re   r   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   rg   r   r   r   r   rf   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r   e   r*  r   r%   r%   r&   test_check_minimum_2  s                                                                                                                            z"TestStatistic.test_check_minimum_2c                 C   sZ  t dd }t j|dddd}t ddddddddddddddddddddddddddddd	d
ddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdd_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_g}t|| d S )hNrc   r9   re   r   r   rh   r*   r   r(   rK   r1   r   r   r:   r   r0   r   r   r   r   r   r   r   rg   r   r   r   r   rf   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r   r*  r   r%   r%   r&   test_check_minimum_stat_length  s                                                                                                                            z,TestStatistic.test_check_minimum_stat_lengthc                 C   sX  t dd}t |dd}t ddddddddddddddddddddddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdiddddddddddddddddddddg}t|| d S )jNrc   rd   re   r        H@rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r%   r&   test_check_median2  s                                                                                                                            zTestStatistic.test_check_medianc                 C   s   t dddgdddgdddgg}t |dd}t dddddgdddddgdddddgdddddgdddddgg}t|| d S 	Nr   r9   r(   rK   r:   r   r*   r   )r   r   rT   r   r   r%   r%   r&   test_check_median_01J  s    "	z"TestStatistic.test_check_median_01c                 C   s   t dddgdddgdddgg}t |jddj}t dddddgdddddgdddddgdddddgdddddgg}t|| d S r4  )r   r   rT   Tr   r   r%   r%   r&   test_check_median_02X  s    "	z"TestStatistic.test_check_median_02c                 C   sl  t dd}d|d< d|d< t j|ddd	d
}t ddddddddddddddddddddddddddddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdddidjddddddddddddddddddddg}t|| d S )kNrc   rd   rl   r9   r   r(  re   r   r   rK   rh   rj   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r%   r&   test_check_median_stat_lengthf  s                                                                                                                             z+TestStatistic.test_check_median_stat_lengthc                 C   s  dddgg}t j|dddd}t dddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgg}t|| d S )Nr(   rK   r1   rK   r   r   r*   rh   r   rT   r   r   r   r%   r%   r&   test_check_mean_shape_one  s&                 z'TestStatistic.test_check_mean_shape_onec                 C   sX  t dd}t |dd}t ddddddddddddddddddddddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdiddddddddddddddddddddg}t|| d S )jNrc   rd   re   r   r2  rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r%   r&   test_check_mean_2  s                                                                                                                            zTestStatistic.test_check_mean_2rI   r   r   r   r   c                 C   sJ   t dddgt jdddgt jd }t |d|}t|d |d  dS )z3 Test that appended and prepended values are equal r*   r   g-q=r5   rY   N)r   r   float64rT   r   )r    rI   r)   r%   r%   r&   test_same_prepend_append  s    
&z&TestStatistic.test_same_prepend_appendr   r;   r;   r   r>  )rK   r*   )r;   r   )r8   r*   c              	   C   sD   t dd}d}tjt|d t j|d||d W 5 Q R X d S )Nr\   r1   rK   #index can't contain negative valuesr<   r*   rh   r   r2   r3   r>   r?   r@   rT   )r    rI   r   arrr=   r%   r%   r&   test_check_negative_stat_length  s    z-TestStatistic.test_check_negative_stat_lengthc                 C   s2  t d}t |d}t j|dddd}t dddddd	d
dd
d
g
dddddd	d
dd
d
g
ddddddddddg
dddddd	d
dd
d
g
ddddddddddg
ddddddddddg
ddddddddddg
d d d d!d d"d#d$d#d#g
ddddddddddg
ddddddddddg
ddddddddddg
g}t|| d S )%Nr\   rF  rB   r   r*   r   r   rZ   r1   rK   r   r   r:   r9   r   r*   r   r(   r   r   r0   r   r   r   r   r   r   r   r   rg   r   r   r   r   rf   r   r   r   r   r2   r3   rT   r   r   r   r%   r%   r&   test_simple_stat_length  s$    
z%TestStatistic.test_simple_stat_lengthz)ignore:Mean of empty slice:RuntimeWarningzCignore:invalid value encountered in( scalar)? divide:RuntimeWarningc                 C   s>   t jddgd|dd}t t jddt jt jg}t|| d S )Nrk   rl   r9   r*   r   rh   )r   rT   r   nanr   )r    rI   rI  r!   r%   r%   r&   test_zero_stat_length_valid  s    z)TestStatistic.test_zero_stat_length_validc              	   C   s   d}t jt|d tjddgd|dd W 5 Q R X t jt|d tjddgd|dd W 5 Q R X t jt|d tjddgd|dd W 5 Q R X t jt|d tjddgd|dd W 5 Q R X d S )	Nz,stat_length of 0 yields no value for paddingr<   rk   rl   r   rh   )r9   r   r9   )r>   r?   r@   r   rT   r    rI   r=   r%   r%   r&   test_zero_stat_length_invalid  s       z+TestStatistic.test_zero_stat_length_invalidN)rE   rF   rG   r   r+  r,  r-  r.  r0  r1  r3  r5  r7  r9  r<  r=  r>   r^   r_   r@  rJ  rO  filterwarningsrR  rT  r%   r%   r%   r&   rb      sF   
 
rb   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TestConstantc                 C   sV  t d}t j|dddd}t dddddddddddddddddddddddddddd	d
ddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdiddddddddddddddddddddg}t|| d S )jNrc   re   r   )r   rg   r	   r   r   r9   r*   r   r(   rK   r1   r   r   r:   r   r0   r   r   r   r   r   r   r   rg   r   r   r   r   rf   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r   r*  r   r%   r%   r&   test_check_constant  s   
                                                                                                                         z TestConstant.test_check_constantc                 C   sR  t d}t |dd}t ddddddddddddddddddddddddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgddddddddddddddddddddg}t|| d S )hNrc   re   r   r   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   rg   r   r   r   r   rf   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r   r*  r   r%   r%   r&   test_check_constant_zeros  s   
                                                                                                                         z&TestConstant.test_check_constant_zerosc                 C   s   t ddd}t j|dddd}t dddddddddg	dd	dd
dddddg	dddddddddg	dddddddddg	dddddddddg	dddd d!d"d#ddg	dddddddddg	dddddddddg	g}t|| d S )$Nr\   rK   r1   rP  r   皙?rI   r	   r9   r   r*   r   r(   r   r   r:   r   r   r0   r   r   r   r   r   r   r   rg   r   r   r   r   rf   r   r   r   r   r   r2   r3   rT   r   r   r    rI  rV   r!   r%   r%   r&   test_check_constant_float#  s     
z&TestConstant.test_check_constant_floatc                 C   s   t ddd}|t j}t j|dddd}t dddddddddg	ddd	d
dddddg	dddddddddg	dddddddddg	dddddddddg	dd d!d"d#d$d%ddg	dddddddddg	dddddddddg	g}t|| d S )&Nr\   rK   r1   rP  rP  r   rZ  r[  rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r2   r3   r   r?  rT   r   r   )r    rI  Z	arr_floatrV   r!   r%   r%   r&   test_check_constant_float27  s"    
z'TestConstant.test_check_constant_float2c                 C   sZ  t jdtd}t j|dddd}t ddddddddddddddddddddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldldldldldldldldldldldldldldldldldldldlg}t|| d S )mNrc   r5   re   r   )皙333333rW  rb  r   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   rg   r   r   r   r   rf   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r   rc  )r   r2   r   rT   r   r   r   r%   r%   r&   test_check_constant_float3L  s                                                                                                                            z'TestConstant.test_check_constant_float3c                 C   s   t ddd}t j|dddd}t ddddddddddg
dddd	d
dddddg
ddddddddddg
ddddddddddg
ddddddddddg
dddddd d!d"ddg
ddddddddddg
g}t|| d S )#Nr\   rK   r1   )r9   rE  r   r   r[  r   r9   r*   r(   r   r   r:   r   r   r0   r   r   r   r   r   r   r   rg   r   r   r   r   rf   r   r   r   r   r\  r]  r%   r%   r&   "test_check_constant_odd_pad_amountd  s    
z/TestConstant.test_check_constant_odd_pad_amountc                 C   s   t ddd}t jj|dddd}t ddddddgdd	ddddgddddddgddddddgddddddgg}t|| d S )
Nr(   r*   )rP  )r9   r   r   )rP  r   r(   r[  r   r9   r   )r   r2   r3   librT   r   r   r]  r%   r%   r&   test_check_constant_pad_2du  s    z'TestConstant.test_check_constant_pad_2dc                 C   s   d}t jd|t jd}t j|dd| d}t jd|t jd}t|| d}t jd|t jd}t j|dd| d}t jd|t jd}t|| d S )	Nl    rK   r5   r9   r   r[  r   l    )r   fullZuint64rT   minr   Zint64)r    Z
uint64_maxrI  rV   r!   Z	int64_maxr%   r%   r&   test_check_large_integers  s    
z&TestConstant.test_check_large_integersc                 C   sr   t jdtd}t }||d< t }t }t j|dd||fd}t jdtd}||d< ||d< ||d< t|| d S )Nr9   r5   r   r   )	pad_widthrI   r	   rM  r*   )r   r   r   rT   r   )r    rI  Zobj_aZobj_bZobj_cr!   r%   r%   r&   test_check_object_array  s    
z$TestConstant.test_check_object_arrayc                 C   s2   t d}t j|dddgdd}|jdks.td S )Nr   r   r*   r   rE  re  r   rQ   r   r(   r(   r   zerosrT   rS   AssertionErrorr    rI  r#   r%   r%   r&   test_pad_empty_dimension  s    
z%TestConstant.test_pad_empty_dimensionN)rE   rF   rG   rX  rY  r^  ra  rd  rf  ri  rl  rn  rv  r%   r%   r%   r&   rV    s   rV  c                   @   sR   e Zd Zdd Zdd Zejjefddd Z	dd	 Z
ejd
edd ZdS )TestLinearRampc                 C   sb  t dd}t j|dddd}t ddd	d
dddddddddddddddddddddd d!d"d#dd$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddSdddddddddd$g}t||ddd d S )Nrc   rd   re   r   )r(   rK   )r
   rn   gQ@gq=
ףp@g)\(@gzG
@g	@gRQ@g
ףp=
@g(\@g{Gz@g333333@gQ@gp=
ף @gQ?g)\(?g?g
ףp=
?g{Gz?gQ?gQ?g?g{Gz?gQ?g{Gz?g{Gz?rj   rk   rl   rm   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   g33333W@gffffffV@g9U@gT@g     R@g33333Q@gfffffP@g33333N@gYL@gfffffG@gLE@g33333B@g@@g     <@g7@g3@g,@gffffff#@gh㈵>)ZrtolZatol)r   r2   r   rT   r   r   r   r%   r%   r&   test_check_simple  s                                                                                                                            z TestLinearRamp.test_check_simplec                 C   s   t dddt j}t j|dddd}t dddddddddg	dddd	d
ddd
dg	dddd
dddddg	dddddddddg	dddddddddg	ddddddd d!dg	dd"ddd#dd!d$dg	dddddddddg	g}t|| d S )%Nrg   r(   rK   )r*   r*   r   rL   rI   r
   rj   ri   rk   g      ?rl   rm   rn   g      @ro   rp   rq   rr   rs   g      @rt   ru   rv   rw   rx   g      @ry   rz   r{   r|   r}   g      #@g      @g      !@g      @r`  r]  r%   r%   r&   test_check_2d  s    	zTestLinearRamp.test_check_2d)
exceptionsc                 C   s   ddl m} t|dd|ddg}tj|dddd}t|dd	|d
d	|dd	|dd	|dd	|dd	|dd	g}t|| d S )Nr   )Fractionr9   r*   r>  rB   r   ry  r0   r   r1   r8   r;   )Z	fractionsr|  r   r   rT   r   )r    r|  rI  actualr!   r%   r%   r&   test_object_array  s    	z TestLinearRamp.test_object_arrayc                 C   sz   t jt dddddd}t|dddf d	 t|ddd
f d	 t|dddf d	 t|d
ddf d	 dS )z!Ensure that end values are exact.r   r*   rK   )   {   r   rQ   Nr   rj   r>  )r   rT   rC   r3   r   )r    r)   r%   r%   r&   test_end_values  s
    zTestLinearRamp.test_end_valuesr6   c                 C   s   t jdg|d}t j|dddd}t jdddddddg|d}t|| t jdg|d}t j|dddd}t jdddddddg|d}t|| dS )	a<  
        Check correct behavior of unsigned dtypes if there is a negative
        difference between the edge to pad and `end_values`. Check both cases
        to be independent of implementation. Test behavior for all other dtypes
        in case dtype casting interferes with complex dtypes. See gh-14191.
        r   r5   r   r   ry  r9   r*   N)r   r   rT   r   )r    r6   r"   r#   r!   r%   r%   r&   test_negative_difference  s    
z'TestLinearRamp.test_negative_differenceN)rE   rF   rG   rx  rz  r>   r^   Zxfailrt  r  r  r_   _numeric_dtypesr  r%   r%   r%   r&   rw    s   
rw  c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestReflectc                 C   sR  t d}t |dd}t dddddd	d
dddddddddddddddddddddddddddddddddddddd
d	dddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdfdedddcdbdad`d_d^d]d\d[dZdYdXdWdVdUdTdSg}t|| d S )hNrc   re   r   rf   r   r   r   r   rg   r   r   r   r   r   r   r   r0   r   r   r:   r   r   r1   rK   r(   r   r*   r9   r   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r   r*  r   r%   r%   r&   rx    s   
                                                                                                                         zTestReflect.test_check_simplec                 C   sV  t d}t j|dddd}t dddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddg}t|| d S )Nrc   re   r   oddr   ir}  r8   r7   r;   r>  r   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   rg   r   r   r   r   rf   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r   r/  f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   r*  r   r%   r%   r&   test_check_odd_method  s   
                                                                                                                         z!TestReflect.test_check_odd_methodc                 C   s  dddgdddgg}t |dd}t dddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgg}t|| d S )Nr(   rK   r1   r   r   r:  r   r;  r   r%   r%   r&   test_check_large_pad+  s(                  z TestReflect.test_check_large_padc                 C   s  dddgg}t |dd}t dddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgg}t|| d S )Nr(   rK   r1   r:  r   r;  r   r%   r%   r&   test_check_shapeB  s&                 zTestReflect.test_check_shapec              	   C   s:   t dddgdd}t dddddddg}t|| d S Nr9   r*   r   r   r;  r   r%   r%   r&   test_check_01X  s    zTestReflect.test_check_01c                 C   s>   t dddgdd}t dddddddddg	}t|| d S r  r;  r   r%   r%   r&   test_check_02]  s    zTestReflect.test_check_02c                 C   sB   t dddgdd}t dddddddddddg}t|| d S )Nr9   r*   r   r(   r   r;  r   r%   r%   r&   test_check_03b  s     zTestReflect.test_check_03N)
rE   rF   rG   rx  r  r  r  r  r  r  r%   r%   r%   r&   r    s   r  c                   @   sP   e Zd ZdZejdee	 ddh dd Z
ejde	 dd Zd	S )
TestEmptyArrayz<Check how padding behaves on arrays with an empty dimension.rI   r   r   c              	   C   s   d}t jt|d tjg d|d W 5 Q R X t jt|d tjtdd|d W 5 Q R X t jt|d tjtdd|d W 5 Q R X d S )NzFcan't extend empty axis 0 using modes other than 'constant' or 'empty'r<   r(   rQ   r   )r   r   )re  rp  )r>   r?   r@   r   rT   Zndarrayrs  rS  r%   r%   r&   rv  k  s     z'TestEmptyArray.test_pad_empty_dimensionc                 C   s(   t jt dd|d}|jdks$td S )N)r*   r   r*   )rM  rp  re  rQ   )r   r   r(   )r   rT   rC   rS   rt  )r    rI   r#   r%   r%   r&   test_pad_non_empty_dimensionz  s    z+TestEmptyArray.test_pad_non_empty_dimensionN)rE   rF   rG   __doc__r>   r^   r_   sortedr`   ra   rv  r  r%   r%   r%   r&   r  h  s    

r  c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestSymmetricc                 C   sR  t d}t |dd}t dddddd	d
ddddddddddddddddddddddddddddddddddddd
d	ddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdgdfdedddcdbdad`d_d^d]d\d[dZdYdXdWdVdUdTg}t|| d S )hNrc   re   r   r   r   r   r   rg   r   r   r   r   r   r   r   r0   r   r   r:   r   r   r1   rK   r(   r   r*   r9   r   rf   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r   r*  r   r%   r%   r&   rx    s   
                                                                                                                         zTestSymmetric.test_check_simplec                 C   sV  t d}t j|dddd}t dddd	d
ddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddddddg}t|| d S )Nrc   re   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r}  r  r8   r7   r;   r>  r   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   rg   r   r   r   r   rf   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r   r/  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r*  r   r%   r%   r&   r    s   
                                                                                                                         z#TestSymmetric.test_check_odd_methodc                 C   s  dddgdddgg}t |dd}t dddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgg}t|| d S )Nr(   rK   r1   r   r   r:  r   r;  r   r%   r%   r&   r    s(                  z"TestSymmetric.test_check_large_padc                 C   s  dddgdddgg}t j|dddd	}t d
ddddddddddddddgd
ddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgg}t|| d S )Nr(   rK   r1   r   r   r:  r   r  r  r7   r;   r>  r   r9   r*   r   r:   r   r   r0   r   r   r   r   r   r   r;  r   r%   r%   r&   test_check_large_pad_odd  s(                  z&TestSymmetric.test_check_large_pad_oddc                 C   s  dddgg}t |dd}t dddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgg}t|| d S )Nr(   rK   r1   r:  r   r;  r   r%   r%   r&   r    s&                 zTestSymmetric.test_check_shapec              	   C   s:   t dddgdd}t dddddddg}t|| d S Nr9   r*   r   r   r;  r   r%   r%   r&   r    s    zTestSymmetric.test_check_01c                 C   s>   t dddgdd}t dddddddddg	}t|| d S r  r;  r   r%   r%   r&   r    s    zTestSymmetric.test_check_02c                 C   sJ   t dddgdd}t dddddddddddddddg}t|| d S )Nr9   r*   r   r1   r   r;  r   r%   r%   r&   r     s    (zTestSymmetric.test_check_03N)rE   rF   rG   rx  r  r  r  r  r  r  r  r%   r%   r%   r&   r    s   r  c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestWrapc                 C   sR  t d}t |dd}t dddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0g}t|| d S )hNrc   re   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r   r   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   rg   r   r   r   r   rf   r   r   r   r   r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r*  r   r%   r%   r&   rx    s   
                                                                                                                         zTestWrap.test_check_simplec              4   C   s  t d}t |d}t |dd}t ddddddddddddddddddddddddddgd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
gddddddddddddddddddddddddddgddddddddddddddddddddddddddgd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
gddddddddddddddddddddddddddgddddddddddddddddddddddddddgd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
gddddddddddddddddddddddddddgddddddddddddddddddddddddddgd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
gddddddddddddddddddddddddddgddddddddddddddddddddddddddgd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
gddddddddddddddddddddddddddgddddddddddddddddddddddddddgd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
gddddddddddddddddddddddddddgddddddddddddddddddddddddddgd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
gddddddddddddddddddddddddddgddddddddddddddddddddddddddgd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
ddd	d
gddddddddddddddddddddddddddgddddddddddddddddddddddddddgg}t|| d S )Nr0   rg  )r   r0   r   r   r   r   r:   r*   r   r   r9   r1   r   r(   rK   rN  r   r%   r%   r&   r    s4   
"        "        "        "        "        "        "        "        "        "        "        "        "        "        "        "        "        "        "        "        "        "        "        "        "        6zTestWrap.test_check_large_padc                 C   s>   t dddgdd}t dddddddddg	}t|| d S )Nr9   r*   r   r   r;  r   r%   r%   r&   r  [  s    zTestWrap.test_check_01c                 C   sB   t dddgdd}t dddddddddddg}t|| d S )Nr9   r*   r   r(   r   r;  r   r%   r%   r&   r  `  s     zTestWrap.test_check_02c                 C   s8   t d}t j|ddd}t||d dd df  d S )Nr8  )r   rK   r   rQ   r  )r   rC   rT   r   r   r%   r%   r&   test_pad_with_zeroe  s    
zTestWrap.test_pad_with_zeroc                 C   sx   t d}t j|ddd}tt j||||f dd | t d}t j|ddd}tt j||||f dd | dS )	zy
        Check wrapping on each side individually if the wrapped area is longer
        than the original array.
        rK   )r0   r   r   rQ   r   N)r   r0   r7   )r   r2   rT   r   Zr_r   r%   r%   r&   test_repeated_wrappingj  s    
 
zTestWrap.test_repeated_wrappingN)	rE   rF   rG   rx  r  r  r  r  r  r%   r%   r%   r&   r    s   <r  c                   @   s   e Zd Zdd Zdd ZdS )TestEdgec                 C   s   t d}t |d}t |dd}t ddddddddgddddddddgddddddddgddddd	d
d
d
gddddddddgddddddddgddddddddgddddddddgddddddddgg	}t|| d S Nr0   r(   r   rK  r   r   r9   r*   r   r(   rK   r1   r   r   r:   r   r   rN  r   r%   r%   r&   rx  y  s     
zTestEdge.test_check_simplec                 C   s   t dddg}t |dd}t ddddddg}t|| t dddgdddgg}t |dd}t |d	d}t|| t d
ddd}t |dd}t |dd}t|| d S )Nr9   r*   r   )rP  r   r(   rK   r1   r_  r   )rP  rP  rP  )r   r   rT   r   r2   r3   )r    r)   Zpaddedr!   r%   r%   r&   test_check_width_shape_1_2  s    

z#TestEdge.test_check_width_shape_1_2N)rE   rF   rG   rx  r  r%   r%   r%   r&   r  x  s   r  c                   @   s   e Zd Zdd Zdd ZdS )	TestEmptyc                 C   sR   t ddd}t j|ddgdd}|jdks4tt||d	d
ddf  d S )Nr   r(   r1   rB   )r   r9   r   rQ   )r:   r   r*   r7   r   r>  r   r2   r3   rT   rS   rt  r   ru  r%   r%   r&   test_simple  s    zTestEmpty.test_simplec                 C   s2   t d}t j|dddgdd}|jdks.td S )Nro  rp  rE  re  r   rQ   rq  rr  ru  r%   r%   r&   rv    s    
z"TestEmpty.test_pad_empty_dimensionN)rE   rF   rG   r  rv  r%   r%   r%   r&   r    s   r  c                  C   s   dd } t ddd}t |d| }t dddddddgdddddddgdddddddgdddd	d
ddgdddddddgdddddddgg}t|| d S )Nc                 S   s&   d| d |d < d| |d  d < d S )Nr   r   r9   r%   )Zvectorrm  Ziaxiskwargsr%   r%   r&   _padwithtens  s    z6test_legacy_vector_functionality.<locals>._padwithtensr1   r*   r   r   r   r9   r(   rK   rN  )r  r)   r   r%   r%   r&    test_legacy_vector_functionality  s    
r  c                  C   s4   t jdgddd} t dddddg}t| | d S )Nr9   r*   r   rQ   r   r;  )r)   r   r%   r%   r&   test_unicode_mode  s    r  rI   r   r   r   r   c                 C   s:   t jdd d}d}t jdd d}tt j||| d| d S )Nr  )Z
fill_valuerK  )r:   r   rQ   )r   rj  r   rT   )rI   r)   rW   r   r%   r%   r&   test_object_input  s    r  c                   @   s
  e Zd Zejdddddgejde dd Zejde d	d
 Z	ejddddddgejde dd Z
ejdddde dfddefedddfdgejde dd Zdd Zejdd d!d"gejde d#d$ ZdS )%TestPadWidthrm  )r(   rK   r1   r   )re  rE  rM  )rP  rg  )rK   r1   ))r   r(   rK   )r   r9   r*   rI   c              	   C   s@   t dd}d}tjt|d t ||| W 5 Q R X d S )Nr\   rF  z(operands could not be broadcast togetherr<   rH  r    rm  rI   rI  r=   r%   r%   r&   test_misshaped_pad_width  s    z%TestPadWidth.test_misshaped_pad_widthc              	   C   s@   t dd}d}tjt|d t |d| W 5 Q R X d S )Nr\   rF  zDinput operand has more dimensions than allowed by the axis remappingr<   ))rM  )r(   )rK   )rp  re  rE  rH  )r    rI   rI  r=   r%   r%   r&   test_misshaped_pad_width_2  s    z'TestPadWidth.test_misshaped_pad_width_2r;   rA  rB  rC  rD  c              	   C   s@   t dd}d}tjt|d t ||| W 5 Q R X d S )Nr\   rF  rG  r<   rH  r  r%   r%   r&   test_negative_pad_width  s    z$TestPadWidth.test_negative_pad_widthzpad_width, dtype)3N)wordNr,   N)g333333@N))r*   r   r(   rL  r9   r>  )))g r   rL  Nc              	   C   s   t dd}d}|d k	rPtjt|d t |t j||d| W 5 Q R X nVtjt|d t ||| W 5 Q R X tjt|d t |t || W 5 Q R X d S )Nr\   rF  z%`pad_width` must be of integral type.r<   r5   )r   r2   r3   r>   r?   	TypeErrorrT   r   )r    rm  r6   rI   rI  r=   r%   r%   r&   test_bad_type  s    $zTestPadWidth.test_bad_typec                 C   s   t d}t |d}t |t dd}t ddddddddgddddddddgddddddddgddddd	d
d
d
gddddddddgddddddddgddddddddgddddddddgddddddddgg	}t|| d S r  rN  r   r%   r%   r&   test_pad_width_as_ndarray  s     
z&TestPadWidth.test_pad_width_as_ndarrayr   rL   )rL   rL   c                 C   s,   t ddd}t|t j|||d d S )Nr\   r1   rK   rQ   )r   r2   r3   r   rT   )r    rm  rI   rI  r%   r%   r&   test_zero_pad_width  s    z TestPadWidth.test_zero_pad_width)rE   rF   rG   r>   r^   r_   r`   ra   r  r  r  r   r   r  r  r  r%   r%   r%   r&   r    s@   
 
r  c              
   C   s   t |  }i }t  D ]}||kr|| qtjdddgd| f| | D ]H\}}d| }tjt	|d" tjdddgd| f||i W 5 Q R X qLdS )z1Test behavior of pad's kwargs for the given mode.r9   r*   r   z+unsupported keyword arguments for mode '{}'r<   N)
r`   valuesupdater   rT   itemsformatr>   r?   r@   )rI   allowednot_allowedr  keyvaluer=   r%   r%   r&   test_kwargs   s    
r  c                  C   s0   t ddg} tt | dddddddg d S )Nr9   r*   r   )r   r   r   rT   )rI  r%   r%   r&   test_constant_zero_default1  s    r  r9   constTFc              	   C   s>   d | }tjt|d tjdddgd| d W 5 Q R X d S )Nzmode '{}' is not supportedr<   r9   r*   r   r(   rQ   )r  r>   r?   r@   r   rT   )rI   r=   r%   r%   r&   test_unsupported_mode6  s    
r  c                 C   s`   t dddd d dd d df }t |d| }|jdksBtt|ddddf | d S )Nr   r(   r1   r*   rB   )r   r   r7   r  )rI   rI  r#   r%   r%   r&   test_non_contiguous_array=  s    &r  c                 C   sP   t jddd}t |d| jd s&tt jddd}t |d| jd sLtdS )	z5Test if C and F order is preserved for all pad modes.)rK   r   C)orderrK   ZC_CONTIGUOUSFZF_CONTIGUOUSN)r   rC   rT   flagsrt  )rI   r"   r%   r%   r&   test_memory_layout_persistenceE  s    r  r6   c                 C   s0   t jd| d}t j|d|d}|j| ks,td S )N)r   r*   r9   r5   r9   rQ   )r   rs  rT   r6   rt  )r6   rI   rI  r#   r%   r%   r&   test_dtype_persistenceN  s    r  )&r  r>   Znumpyr   Znumpy.testingr   r   r   Znumpy.lib.arraypadr   Zsctypesr  r`   r   rH   rb   rV  rw  r  r  r  r  r  r  r  r  r^   r_   r  r  ra   r  r  r   r  r  r  r  r%   r%   r%   r&   <module>   sp   S  k 4Un r'
Q



