o
    &iF                     @   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)g d*d+d, ZG d-d. d.Zejd)e d/d0 Zd1d2 Z ejd)d3d4e! dd5d6gd7d8 Z"ejd)e d9d: Z#ejd)e d;d< Z$ejd=eejd)e d>d? Z%dS )@z(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                   @   <   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&   HC:\wamp64\www\opt\env\Lib\site-packages\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+   r2   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 d   n1 sjw   Y  qOd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 d   n1 sw   Y  t jtdd tddgdd	ggd W d   n1 s<w   Y  t jtdd ttd
d W d   dS 1 s\w   Y  dS )z"Ensure faulty usage is discovered.zmore dimensions than allowedr=   r   r   Nzcould not be broadcastr:   r+   r)   r+   r   )r?   r@   rA   r   r   ones)r!   r&   r&   r'   test_exceptionsi   s   "zTestAsPairs.test_exceptionsN)	__name__
__module____qualname__r(   r,   r0   r5   rB   rE   r&   r&   r&   r'   r       s    r   c                   @   sZ   e Zd Zejde dd Zejdg ddd Z	ejdg d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)      r2   c                 S      g | ]}d qS )r   r   r&   .0_r&   r&   r'   
<listcomp>w       zHTestConditionalShortcuts.test_zero_padding_shortcuts.<locals>.<listcomp>rJ   r   r3   r4   shaper   padr!   rJ   testpad_amtr&   r&   r'   test_zero_padding_shortcutst   s   z4TestConditionalShortcuts.test_zero_padding_shortcuts)r   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 )NrK   r)   rL   r2   c                 S   rM   )r:   r:   r&   rO   r&   r&   r'   rR   }   rS   zITestConditionalShortcuts.test_shallow_statistic_range.<locals>.<listcomp>r   rT   r:   rJ   r   rU   rX   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   rL   r2   c                 S   rM   ))r   r   r&   rO   r&   r&   r'   rR      rS   zFTestConditionalShortcuts.test_clip_statistic_range.<locals>.<listcomp>rT   r]   rU   rX   r&   r&   r'   test_clip_statistic_range   s
   z2TestConditionalShortcuts.test_clip_statistic_rangeN)rF   rG   rH   r?   markparametrize
_all_modeskeysr[   r^   r`   r&   r&   r&   r'   rI   s   s    

rI   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g ddd Zejdg dejdg d 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d-d. Zd/S )0TestStatisticc                 C   s>   t dd}t j|dddd}t g d}t|| d S )Nd   f)      r   )rC   r   )      ?rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl   rl                 ?       @      @      @      @      @      @       @      "@      $@      &@      (@      *@      ,@      .@      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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r3   astyperW   r   r   r!   r*   br&   r&   r'   test_check_mean_stat_length   s   z)TestStatistic.test_check_mean_stat_lengthc                 C   4   t d}t |dd}t g d}t|| d S )Nrf   rh   r   )c   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r:   r+   r   r)   rL   r2         r;   r      r1                        rj               ri               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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r3   rW   r   r   r   r&   r&   r'   test_check_maximum_1      
z"TestStatistic.test_check_maximum_1c                 C   8   t dd }t |dd}t g d}t|| d S )Nrf   r:   rh   r   )rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   r:   r+   r   r)   rL   r2   r   r   r;   r   r   r1   r   r   r   r   r   r   r   rj   r   r   r   r   ri   r   r   r   r   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   r.  r   r&   r&   r'   test_check_maximum_2      z"TestStatistic.test_check_maximum_2c                 C   <   t dd }t j|dddd}t g d}t|| d S )Nrf   r:   rh   r   r   rk   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r:   r+   r   r)   rL   r2   r   r   r;   r   r   r1   r   r   r   r   r   r   r   rj   r   r   r   r   ri   r   r   r   r   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   rf   r.  r   r&   r&   r'   test_check_maximum_stat_length      z,TestStatistic.test_check_maximum_stat_lengthc                 C   r   )Nrf   rh   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r:   r+   r   r)   rL   r2   r   r   r;   r   r   r1   r   r   r   r   r   r   r   rj   r   r   r   r   ri   r   r   r   r   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r   r   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   r0  z"TestStatistic.test_check_minimum_1c                 C   r1  )Nrf   r+   rh   r   )r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r   r)   rL   r2   r   r   r;   r   r   r1   r   r   r   r   r   r   r   rj   r   r   r   r   ri   r   r   r   r   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r   rf   e   r+   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_2  r3  z"TestStatistic.test_check_minimum_2c                 C   r4  )Nrf   r:   rh   r   r   rk   )r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r:   r+   r   r)   rL   r2   r   r   r;   r   r   r1   r   r   r   r   r   r   r   rj   r   r   r   r   ri   r   r   r   r   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  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'   test_check_minimum_stat_length  r6  z,TestStatistic.test_check_minimum_stat_lengthc                 C   :   t dd}t |dd}t g d}t|| d S )Nrf   rg   rh   r        H@r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  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>  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     zTestStatistic.test_check_medianc                 C   s`   t g dg dg dg}t |dd}t g dg dg dg d	g dg}t|| d S )
Nr   r:   r)   r)   rL   r;   r;   r   r+   r:   r   )r)   r)   rL   r)   r)   r   r   r:   r)   r   rL   r)   rL   r;   rL   r   r;   r   r+   r   )r   r   rW   r   r   r&   r&   r'   test_check_median_01J  s   	z"TestStatistic.test_check_median_01c                 C   sd   t g dg dg dg}t |jddj}t g dg dg dg d	g dg}t|| d S )
NrA  rB  rC  r:   r   )rL   r)   rL   r)   rL   rD  rE  rF  )r   r   rW   Tr   r   r&   r&   r'   test_check_median_02X  s   	z"TestStatistic.test_check_median_02c                 C   sN   t dd}d|d< d|d< t j|ddd	d
}t g d}t|| d S )Nrf   rg   ro   r:   r   r,  rh   r   r   rL   rk   )ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   ro   rm   ro   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   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   g dg}t j|dddd}t g dg dg dg dg dg dg dg dg dg dg dg dg dg}t|| d S )Nr)   rL   r2   rL   r   r   r+   rk   )r)   r)   r)   r)   r)   r)   rL   r2   r2   r2   r2   r2   r2   r2   r2   r   rW   r   r   r   r&   r&   r'   test_check_mean_shape_one  s&   
z'TestStatistic.test_check_mean_shape_onec                 C   r<  )Nrf   rg   rh   r   r=  r   r   r&   r&   r'   test_check_mean_2  r@  zTestStatistic.test_check_mean_2rJ   )r   r   r   r   c                 C   sF   t g dt jg dt jd }t |d|}t|d |d  dS )z3 Test that appended and prepended values are equal )r+   rQ  )r   g-q=r   r6   r\   r   rQ  N)r   r   float64rW   r   )r!   rJ   r*   r&   r&   r'   test_same_prepend_append  s   "
z&TestStatistic.test_same_prepend_appendr   r<   )r<   )r   rQ  ))rL   r+   )r<   r   ))r9   r+   c                 C   sZ   t dd}d}tjt|d t j|d||d W d    d S 1 s&w   Y  d S )Nr_   r2   rL   #index can't contain negative valuesr=   r+   rk   r   r3   r4   r?   r@   rA   rW   )r!   rJ   r   arrr>   r&   r&   r'   test_check_negative_stat_length  s
   "z-TestStatistic.test_check_negative_stat_lengthc                 C   s   t d}t |d}t j|dddd}t g dg dg dg dg d	g d
g dg dg dg dg dg}t|| d S )Nr_   rV  rC   r   r+   r   r   r]   )
r2   r2   r2   rL   r2   r   r   r;   r   r   )
r:   r:   r:   r   r:   r+   r   r)   r   r   )
r   r   r   r   r   r1   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   rj   r   r   r   r   r   r   )
r   r   r   ri   r   r   r   r   r   r   r   r3   r4   rW   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:RuntimeWarningr   r   c                 C   s>   t jddgd|dd}t t jddt jt jg}t|| d S )Nrn   ro   r:   r+   r   rk   )r   rW   r   nanr   )r!   rJ   rY  r"   r&   r&   r'   test_zero_stat_length_valid  s   z)TestStatistic.test_zero_stat_length_validr   r   c                 C   s  d}t jt|d tjddgd|dd W d    n1 sw   Y  t jt|d tjddgd|dd W d    n1 sAw   Y  t jt|d tjddgd|dd W d    n1 scw   Y  t jt|d tjddgd|dd W d    d S 1 sw   Y  d S )	Nz,stat_length of 0 yields no value for paddingr=   rn   ro   r   rk   )r:   r   r:   )r?   r@   rA   r   rW   r!   rJ   r>   r&   r&   r'   test_zero_stat_length_invalid  s   "z+TestStatistic.test_zero_stat_length_invalidN)rF   rG   rH   r   r/  r2  r5  r8  r:  r;  r?  rG  rI  rK  rO  rP  r?   ra   rb   rS  rZ  r_  filterwarningsrb  rd  r&   r&   r&   r'   re      s<    

re   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   8   t d}t j|dddd}t g d}t|| d S )Nrf   rh   r   )r   rj   r	   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r:   r+   r   r)   rL   r2   r   r   r;   r   r   r1   r   r   r   r   r   r   r   rj   r   r   r   r   ri   r   r   r   r   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   r.  r   r&   r&   r'   test_check_constant     
z TestConstant.test_check_constantc                 C   r   )Nrf   rh   r   r7  r.  r   r&   r&   r'   test_check_constant_zeros  r0  z&TestConstant.test_check_constant_zerosc                 C   sl   t ddd}t j|dddd}t g dg d	g d
g dg dg dg dg dg}t|| d S )Nr_   rL   r2   r`  r   皙?rJ   r	   )	r:   r:   r:   r:   r:   r:   r:   r:   r:   )	r:   r   r:   r+   r   r)   rL   r:   r:   )	r:   r2   r   r   r;   r   r   r:   r:   )	r:   r1   r   r   r   r   r   r:   r:   )	r:   r   r   rj   r   r   r   r:   r:   )	r:   r   ri   r   r   r   r   r:   r:   r   r3   r4   rW   r   r   r!   rY  rY   r"   r&   r&   r'   test_check_constant_float#  s    
z&TestConstant.test_check_constant_floatc                 C   sx   t ddd}|t j}t j|dddd}t g dg d	g d
g dg dg dg dg dg}t|| d S )Nr_   rL   r2   r`  r`  r   rl  rm  )	rl  rl  rl  rl  rl  rl  rl  rl  rl  )	rl  rm   rn   ro   rp   rq   rr   rl  rl  )	rl  rs   rt   ru   rv   rw   rx   rl  rl  )	rl  ry   rz   r{   r|   r}   r~   rl  rl  )	rl  r   r   r   r   r   r   rl  rl  )	rl  r   r   r   r   r   r   rl  rl  r   r3   r4   r   rR  rW   r   r   )r!   rY  Z	arr_floatrY   r"   r&   r&   r'   test_check_constant_float27  s"   
z'TestConstant.test_check_constant_float2c                 C   s<   t jdtd}t j|dddd}t g d}t|| d S )Nrf   r6   rh   r   )皙333333rh  )rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  r   r:   r+   r   r)   rL   r2   r   r   r;   r   r   r1   r   r   r   r   r   r   r   rj   r   r   r   r   ri   r   r   r   r   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r   ru  ru  ru  ru  ru  ru  ru  ru  ru  ru  ru  ru  ru  ru  ru  ru  ru  ru  ru  ru  )r   r3   r   rW   r   r   r   r&   r&   r'   test_check_constant_float3L  r6  z'TestConstant.test_check_constant_float3c              
   C   sf   t ddd}t j|dddd}t g dg d	g d
g dg dg dg dg}t|| d S )Nr_   rL   r2   )r:   rU  r   r   rm  )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r:   r+   r   r)   rL   r   r   )
r   r   r2   r   r   r;   r   r   r   r   )
r   r   r1   r   r   r   r   r   r   r   )
r   r   r   r   rj   r   r   r   r   r   )
r   r   r   ri   r   r   r   r   r   r   rn  ro  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 g dg dg d	g d
g d
g}t|| d S )Nr)   r+   )r`  )r:   r   r   )r`  r   r)   rm  )r   r:   r:   r)   r)   r)   )r   r   r:   r)   r)   r)   )r   r+   r   r)   r)   r)   )r   r+   r+   r)   r)   r)   )r   r3   r4   librW   r   r   ro  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    rL   r6   r:   r   rm  r   l    )r   fullZuint64rW   minr   Zint64)r!   Z
uint64_maxrY  rY   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 )Nr:   r6   r   r   )	pad_widthrJ   r	   r]  r+   )r   r   r   rW   r   )r!   rY  Zobj_aZobj_bZobj_cr"   r&   r&   r'   test_check_object_array  s   
z$TestConstant.test_check_object_arrayc                 C   0   t d}t j|g ddd}|jdksJ d S )Nr   r   r+   r   rU  rw  r   rT   r   r)   r)   r   zerosrW   rV   r!   rY  r$   r&   r&   r'   test_pad_empty_dimension     
z%TestConstant.test_pad_empty_dimensionN)rF   rG   rH   ri  rk  rp  rs  rv  rx  r{  r~  r  r  r&   r&   r&   r'   rf    s    rf  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   sD   t dd}t j|dddd}t g d}t||ddd	 d S )
Nrf   rg   rh   r   )r)   rL   )r
   )rq   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?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   g33333W@gffffffV@g9U@gT@g     R@g33333Q@gfffffP@g33333N@gYL@r   gfffffG@gLE@g33333B@g@@g     <@g7@g3@g,@gffffff#@rr   gh㈵>)ZrtolZatol)r   r3   r   rW   r   r   r   r&   r&   r'   test_check_simple  s   z TestLinearRamp.test_check_simplec                 C   st   t dddt j}t j|dddd}t g dg d	g d
g dg dg dg dg dg}t|| d S )Nrj   r)   rL   )r+   r+   r   rN   rJ   r
   )	rm   rm   rm   rm   rm   rm   rm   rm   rm   )	rm   rm   rm   rl   rn   g      ?ro   rn   rm   )	rm   rm   rm   rn   ro   rp   rq   ro   rm   )	rm   g      @rr   rs   rt   ru   rv   g      @rm   )	rm   rr   rw   rx   ry   rz   r{   rt   rm   )	rm         @r|   r}   r~   r   r         #@rm   )	rm   g      @r  ru   g      !@rv   r  g      @rm   rr  ro  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   )Fractionr:   r+   rQ  rC   r   r  r1   r   r2   r9   r<   )	fractionsr  r   r   rW   r   )r!   r  rY  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+   rL   )   {   r   rT   Nr   rm   rQ  )r   rW   rD   r4   r   )r!   r*   r&   r&   r'   test_end_values  s
   zTestLinearRamp.test_end_valuesr7   c                 C   s   t jdg|d}t j|dddd}t jg d|d}t|| t jdg|d}t j|dddd}t jg d|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   r6   r   r   r  )r   r:   r+   r   r+   r:   r   )r   r+   r:   r   r:   r+   r   N)r   r   rW   r   )r!   r7   r#   r$   r"   r&   r&   r'   test_negative_difference  s   
z'TestLinearRamp.test_negative_differenceN)rF   rG   rH   r  r  r?   ra   ZxfailAssertionErrorr  r  rb   _numeric_dtypesr  r&   r&   r&   r'   r    s    
r  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   r   )Nrf   rh   r   )ri   r   r   r   r   rj   r   r   r   r   r   r   r   r1   r   r   r;   r   r   r2   rL   r)   r   r+   r:   r   r:   r+   r   r)   rL   r2   r   r   r;   r   r   r1   r   r   r   r   r   r   r   rj   r   r   r   r   ri   r   r   r   r   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r   r-  r,  r+  r*  r)  r(  r'  r&  r%  r$  r#  r"  r!  r   r  r  r  r  r  r  r.  r   r&   r&   r'   r    r0  zTestReflect.test_check_simplec                 C   rg  )Nrf   rh   r   oddr   )ir  r9   r8   r<   rQ  r   r:   r+   r   r)   rL   r2   r   r   r;   r   r   r1   r   r   r   r   r   r   r   rj   r   r   r   r   ri   r   r   r   r   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r   rf   r9  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  rj  z!TestReflect.test_check_odd_methodc                 C   s   g dg dg}t |dd}t g dg dg dg dg dg dg dg dg dg dg dg dg dg dg}t|| d S )NrL  r2   r   r   rM  r   )r   r2   r   r   r   r2   r   r   r   r2   r   r   r   r2   r   rL   r)   rL   r2   rL   r)   rL   r2   rL   r)   rL   r2   rL   r)   rL   rN  r   r&   r&   r'   test_check_large_pad+  s(   z TestReflect.test_check_large_padc                 C   ~   g dg}t |dd}t g dg dg dg dg dg dg dg dg dg dg dg dg dg}t|| d S )NrL  rM  r   r  rN  r   r&   r&   r'   test_check_shapeB  s&   
zTestReflect.test_check_shapec                 C   .   t g ddd}t g d}t|| d S )Nr:   r+   r   r+   r   )r   r+   r:   r+   r   r+   r:   rN  r   r&   r&   r'   test_check_01X     zTestReflect.test_check_01c                 C   r  )Nr  r   r   )	r+   r   r+   r:   r+   r   r+   r:   r+   rN  r   r&   r&   r'   test_check_02]  r  zTestReflect.test_check_02c                 C   r  )Nr  r)   r   )r:   r+   r   r+   r:   r+   r   r+   r:   r+   r   rN  r   r&   r&   r'   test_check_03b  r  zTestReflect.test_check_03N)
rF   rG   rH   r  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.rJ   r   r   c                 C   s   d}t jt|d tjg d|d W d    n1 sw   Y  t jt|d tjtdd|d W d    n1 s>w   Y  t jt|d tjtdd|d W d    d S 1 saw   Y  d S )NzFcan't extend empty axis 0 using modes other than 'constant' or 'empty'r=   r)   rT   r   )r   r   )rw  r  )r?   r@   rA   r   rW   Zndarrayr  rc  r&   r&   r'   r  k  s   "z'TestEmptyArray.test_pad_empty_dimensionc                 C   s(   t jt dd|d}|jdksJ d S )N)r+   r   r+   )r]  r  rw  rT   )r   r   r)   )r   rW   rD   rV   )r!   rJ   r$   r&   r&   r'   test_pad_non_empty_dimensionz  s   z+TestEmptyArray.test_pad_non_empty_dimensionN)rF   rG   rH   __doc__r?   ra   rb   sortedrc   rd   r  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   r   )Nrf   rh   r   )r   r   r   r   rj   r   r   r   r   r   r   r   r1   r   r   r;   r   r   r2   rL   r)   r   r+   r:   r   r   r:   r+   r   r)   rL   r2   r   r   r;   r   r   r1   r   r   r   r   r   r   r   rj   r   r   r   r   ri   r   r   r   r   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r   r   r-  r,  r+  r*  r)  r(  r'  r&  r%  r$  r#  r"  r!  r   r  r  r  r  r  r.  r   r&   r&   r'   r    r0  zTestSymmetric.test_check_simplec                 C   rg  )Nrf   rh   r   r  r  )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r9   r8   r<   rQ  r   r   r:   r+   r   r)   rL   r2   r   r   r;   r   r   r1   r   r   r   r   r   r   r   rj   r   r   r   r   ri   r   r   r   r   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r   r   rf   r9  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r.  r   r&   r&   r'   r    rj  z#TestSymmetric.test_check_odd_methodc                 C   s   g dg dg}t |dd}t g dg dg dg dg dg dg dg dg dg dg dg dg dg dg}t|| d S )NrL  r  rM  r   rL   r2   r2   rL   r)   r)   rL   r2   r2   rL   r)   r)   rL   r2   r2   )r   r   r   r   r2   r2   r   r   r   r   r2   r2   r   r   r   rN  r   r&   r&   r'   r    s(   z"TestSymmetric.test_check_large_padc                 C   s   g dg dg}t j|dddd}t g dg dg dg dg d	g d	g d
g d
g dg dg dg dg dg dg}t|| d S )NrL  r  rM  r   r  r  )r8   r<   r<   rQ  r   r   r:   r+   r+   r   r)   r)   rL   r2   r2   )rQ  r   r   r:   r+   r+   r   r)   r)   rL   r2   r2   r   r   r   )r:   r+   r+   r   r)   r)   rL   r2   r2   r   r   r   r;   r   r   )r   r)   r)   rL   r2   r2   r   r   r   r;   r   r   r   r1   r1   )rL   r2   r2   r   r   r   r;   r   r   r   r1   r1   r   r   r   )r   r   r   r;   r   r   r   r1   r1   r   r   r   r   r   r   )r;   r   r   r   r1   r1   r   r   r   r   r   r   r   r   r   rN  r   r&   r&   r'   test_check_large_pad_odd  s(   z&TestSymmetric.test_check_large_pad_oddc                 C   r  )NrL  rM  r   r  rN  r   r&   r&   r'   r    s&   
zTestSymmetric.test_check_shapec                 C   r  )Nr  r+   r   )r+   r:   r:   r+   r   r   r+   rN  r   r&   r&   r'   r    r  zTestSymmetric.test_check_01c                 C   r  )Nr  r   r   )	r   r+   r:   r:   r+   r   r   r+   r:   rN  r   r&   r&   r'   r    r  zTestSymmetric.test_check_02c                 C   r  )Nr  r2   r   )r:   r+   r   r   r+   r:   r:   r+   r   r   r+   r:   r:   r+   r   rN  r   r&   r&   r'   r     r  zTestSymmetric.test_check_03N)rF   rG   rH   r  r  r  r  r  r  r  r  r&   r&   r&   r'   r    s    r  c                   @   r   )TestWrapc                 C   r   )Nrf   rh   r   )r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r   r   r:   r+   r   r)   rL   r2   r   r   r;   r   r   r1   r   r   r   r   r   r   r   rj   r   r   r   r   ri   r   r   r   r   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r   r   r:   r+   r   r)   rL   r2   r   r   r;   r   r   r1   r   r   r   r   r   r   r   r.  r   r&   r&   r'   r    r0  zTestWrap.test_check_simplec                 C   s   t d}t |d}t |dd}t g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg}t|| d S )Nr1   ry  )r   r1   r   )r   r   r   r;   r   r   r   r;   r   r   r   r;   r   r   r   r;   r   r   r   r;   r   r   r   r;   r   r   )r+   r   r   r:   r+   r   r   r:   r+   r   r   r:   r+   r   r   r:   r+   r   r   r:   r+   r   r   r:   r+   r   )r2   r   r)   rL   r2   r   r)   rL   r2   r   r)   rL   r2   r   r)   rL   r2   r   r)   rL   r2   r   r)   rL   r2   r   r^  r   r&   r&   r'   r    s@   
6zTestWrap.test_check_large_padc                 C   r  )Nr  r   r   )	r:   r+   r   r:   r+   r   r:   r+   r   rN  r   r&   r&   r'   r  [  r  zTestWrap.test_check_01c                 C   r  )Nr  r)   r   )r   r:   r+   r   r:   r+   r   r:   r+   r   r:   rN  r   r&   r&   r'   r  `  r  zTestWrap.test_check_02c                 C   s8   t d}t j|ddd}t||d dd df  d S )NrJ  )r   rL   r   rT   r  )r   rD   rW   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.
        rL   )r1   r   r   rT   r   N)r   r1   r8   )r   r3   rW   r   Zr_r   r&   r&   r'   test_repeated_wrappingj  s   
 
$zTestWrap.test_repeated_wrappingN)	rF   rG   rH   r  r  r  r  r  r  r&   r&   r&   r'   r    s    <r  c                   @      e Zd Zdd Zdd ZdS )TestEdgec                 C   sr   t d}t |d}t |dd}t g dg dg dg dg dg dg dg dg dg	}t|| d S 	Nr1   r)   r   r[  r   )r   r   r   r   r:   r+   r+   r+   )r   r   r   r   r)   rL   rL   rL   )r2   r2   r2   r2   r   r   r   r   )r;   r;   r;   r;   r   r   r   r   r^  r   r&   r&   r'   r  y  s    
zTestEdge.test_check_simplec                 C   s   t g d}t |dd}t g d}t|| t g dg dg}t |dd}t |dd}t|| t ddd	d
}t |dd}t |dd}t|| d S )Nr  )r`  r   )r:   r:   r+   r   r   r   rL  rq  r   r+   r   r)   )r`  r`  r`  )r   r   rW   r   r3   r4   )r!   r*   paddedr"   r&   r&   r'   test_check_width_shape_1_2  s   

z#TestEdge.test_check_width_shape_1_2N)rF   rG   rH   r  r  r&   r&   r&   r'   r  x  s    r  c                   @   r  )	TestEmptyc                 C   sR   t ddd}t j|ddgdd}|jdksJ t||d	d
ddf  d S )Nr   r)   r2   rC   )r   r:   r   rT   )r;   r   r+   r8   r   rQ  r   r3   r4   rW   rV   r   r  r&   r&   r'   test_simple  s   zTestEmpty.test_simplec                 C   r  )Nr  r  r   rT   r  r  r  r&   r&   r'   r    r  z"TestEmpty.test_pad_empty_dimensionN)rF   rG   rH   r  r  r&   r&   r&   r'   r    s    r  c               	   C   sd   dd } t ddd}t |d| }t g dg dg dg dg dg dg}t|| d S )	Nc                 S   s&   d| d |d < d| |d  d < d S )Nr   r   r:   r&   )Zvectorr  Ziaxiskwargsr&   r&   r'   _padwithtens  s   z6test_legacy_vector_functionality.<locals>._padwithtensr2   r+   r   )r   r   r   r   r   r   r   )r   r   r   r:   r+   r   r   )r   r   r   r)   rL   r   r   r^  )r  r*   r   r&   r&   r'    test_legacy_vector_functionality  s   
r  c                  C   s.   t jdgddd} t g d}t| | d S )Nr:   r+   r   rT   )r   r   r:   r   r   rN  )r*   r   r&   r&   r'   test_unicode_mode  r  r  rJ   )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_valuer[  )r;   r   rT   )r   r|  r   rW   )rJ   r*   rZ   r   r&   r&   r'   test_object_input  s   r  c                   @   s   e Zd Zejdg dejde dd Zejde dd Z	ejdg d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g dejde dd ZdS )TestPadWidthr  ))r)   rL   r2   r   )rw  rU  r]  )r`  ry  )rL   r2   ))r   r)   rL   )r   r:   r+   rJ   c                 C   V   t dd}d}tjt|d t ||| W d    d S 1 s$w   Y  d S )Nr_   rV  z(operands could not be broadcast togetherr=   rX  r!   r  rJ   rY  r>   r&   r&   r'   test_misshaped_pad_width  s
   "z%TestPadWidth.test_misshaped_pad_widthc                 C   sV   t dd}d}tjt|d t |d| W d    d S 1 s$w   Y  d S )Nr_   rV  zDinput operand has more dimensions than allowed by the axis remappingr=   ))r]  )r)   )rL   )r  rw  rU  rX  )r!   rJ   rY  r>   r&   r&   r'   test_misshaped_pad_width_2  s
   "z'TestPadWidth.test_misshaped_pad_width_2rT  c                 C   r  )Nr_   rV  rW  r=   rX  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)   r\  r:   rQ  )))g r   r\  Nc                 C   s   t dd}d}|d ur4tjt|d t |t j||d| W d    d S 1 s-w   Y  d S tjt|d t ||| W d    n1 sMw   Y  tjt|d t |t || W d    d S 1 sow   Y  d S )Nr_   rV  z%`pad_width` must be of integral type.r=   r6   )r   r3   r4   r?   r@   	TypeErrorrW   r   )r!   r  r7   rJ   rY  r>   r&   r&   r'   test_bad_type  s   ""zTestPadWidth.test_bad_typec                 C   sx   t d}t |d}t |t dd}t g dg dg dg dg dg dg dg dg dg	}t|| d S r  r^  r   r&   r&   r'   test_pad_width_as_ndarray  s    
z&TestPadWidth.test_pad_width_as_ndarray)r   rN   )rN   rN   c                 C   s,   t ddd}t|t j|||d d S )Nr_   r2   rL   rT   )r   r3   r4   r   rW   )r!   r  rJ   rY  r&   r&   r'   test_zero_pad_width  s   z TestPadWidth.test_zero_pad_width)rF   rG   rH   r?   ra   rb   rc   rd   r  r  r  r   r   r  r  r  r&   r&   r&   r'   r    s6    

r  c              	   C   s   t |  }i }t  D ]}||kr|| q
tjg dd| fi | | D ]/\}}d| }tjt	|d tjg dd| fi ||i W d   n1 sQw   Y  q'dS )z1Test behavior of pad's kwargs for the given mode.r  r:   z+unsupported keyword arguments for mode '{}'r=   N)
rc   valuesupdater   rW   itemsformatr?   r@   rA   )rJ   allowednot_allowedr  keyvaluer>   r&   r&   r'   test_kwargs   s   

 r  c                  C   s(   t ddg} tt | dg d d S )Nr:   r+   )r   r   r:   r:   r   r   )r   r   r   rW   )rY  r&   r&   r'   test_constant_zero_default1  s   r  r:   constTFc                 C   sR   d | }tjt|d tjg dd| d W d    d S 1 s"w   Y  d S )Nzmode '{}' is not supportedr=   r  r)   rT   )r  r?   r@   rA   r   rW   )rJ   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s!J t|ddddf | d S )Nr   r)   r2   r+   rC   )r   r   r8   r  )rJ   rY  r$   r&   r&   r'   test_non_contiguous_array=  s   &r  c                 C   sP   t jddd}t |d| jd sJ t jddd}t |d| jd s&J dS )	z5Test if C and F order is preserved for all pad modes.)rL   r   C)orderrL   ZC_CONTIGUOUSFZF_CONTIGUOUSN)r   rD   rW   flags)rJ   r#   r&   r&   r'   test_memory_layout_persistenceE  s   r  r7   c                 C   s0   t jd| d}t j|d|d}|j| ksJ d S )N)r   r+   r:   r6   r:   rT   )r   r  rW   r7   )r7   rJ   rY  r$   r&   r&   r'   test_dtype_persistenceN  s   r  )&r  r?   numpyr   Znumpy.testingr   r   r   Znumpy.lib.arraypadr   Zsctypesr  rc   r   rI   re   rf  r  r  r  r  r  r  r  r  r  ra   rb   r  r  rd   r  r  r   r   r  r  r  r&   r&   r&   r'   <module>   sr    S  k 4Un r'
Q



