o
    0Zc                     @   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_pairsuintintfloatcomplexconstant_values
end_valuesstat_lengthreflect_type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(   S/var/www/chikooza/env/lib/python3.10/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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-   r5   N)r   arangereshaper   r   r2   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   Tr0   r   dtypeg(\@r+      r-   	   znegative valuesmatchN)r   r   r   r    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   )rC   rD   rE   r   r   ones)r#   r(   r(   r)   test_exceptionsi   s   "zTestAsPairs.test_exceptionsN)	__name__
__module____qualname__r*   r.   r3   r8   rF   rI   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+      r5   c                 S      g | ]}d qS )r   r   r(   .0_r(   r(   r)   
<listcomp>w       zHTestConditionalShortcuts.test_zero_padding_shortcuts.<locals>.<listcomp>rN   r   r6   r7   shaper   padr#   rN   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 )NrO   r+   rP   r5   c                 S   rQ   )r=   r=   r(   rS   r(   r(   r)   rV   }   rW   zITestConditionalShortcuts.test_shallow_statistic_range.<locals>.<listcomp>r   rX   r=   rN   r   rY   r\   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   rP   r5   c                 S   rQ   ))r   r   r(   rS   r(   r(   r)   rV      rW   zFTestConditionalShortcuts.test_clip_statistic_range.<locals>.<listcomp>rX   ra   rY   r\   r(   r(   r)   test_clip_statistic_range   s
   z2TestConditionalShortcuts.test_clip_statistic_rangeN)rJ   rK   rL   rC   markparametrize
_all_modeskeysr_   rb   rd   r(   r(   r(   r)   rM   s   s    

rM   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   )rG   r   )      ?rp   rp   rp   rp   rp   rp   rp   rp   rp   rp   rp   rp   rp   rp   rp   rp   rp   rp   rp   rp   rp   rp   rp   rp                 ?       @      @      @      @      @      @       @      "@      $@      &@      (@      *@      ,@      .@      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   r6   astyper[   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 )Nrj   rl   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+   rP   r5         r>   r      r4                        rn               rm               rc          !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   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   r6   r[   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 )Nrj   r=   rl   r   )rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   r=   r-   r   r+   rP   r5   r   r   r>   r   r   r4   r   r   r   r   r   r   r   rn   r   r   r   r   rm   r   r   r   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r1  r   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   r2  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 )Nrj   r=   rl   r   r   ro   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r=   r-   r   r+   rP   r5   r   r   r>   r   r   r4   r   r   r   r   r   r   r   rn   r   r   r   r   rm   r   r   r   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r1  r   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   rj   r2  r   r(   r(   r)   test_check_maximum_stat_length      z,TestStatistic.test_check_maximum_stat_lengthc                 C   r   )Nrj   rl   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r=   r-   r   r+   rP   r5   r   r   r>   r   r   r4   r   r   r   r   r   r   r   rn   r   r   r   r   rm   r   r   r   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r1  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2  r   r(   r(   r)   test_check_minimum_1   r4  z"TestStatistic.test_check_minimum_1c                 C   r5  )Nrj   r-   rl   r   )r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r   r+   rP   r5   r   r   r>   r   r   r4   r   r   r   r   r   r   r   rn   r   r   r   r   rm   r   r   r   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r1  r   rj   e   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r2  r   r(   r(   r)   test_check_minimum_2  r7  z"TestStatistic.test_check_minimum_2c                 C   r8  )Nrj   r=   rl   r   r   ro   )r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r=   r-   r   r+   rP   r5   r   r   r>   r   r   r4   r   r   r   r   r   r   r   rn   r   r   r   r   rm   r   r   r   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r1  r   rj   r*  r*  r*  r*  r*  r*  r*  r*  r*  r*  r*  r*  r*  r*  r*  r*  r*  r*  r*  r*  r2  r   r(   r(   r)   test_check_minimum_stat_length  r:  z,TestStatistic.test_check_minimum_stat_lengthc                 C   :   t dd}t |dd}t g d}t|| d S )Nrj   rk   rl   r        H@rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  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   rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  rB  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+   rP   r>   r>   r   r-   r=   r   )r+   r+   rP   r+   r+   r   r   r=   r+   r   rP   r+   rP   r>   rP   r   r>   r   r-   r   )r   r    r[   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 )
NrE  rF  rG  r=   r   )rP   r+   rP   r+   rP   rH  rI  rJ  )r   r    r[   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 )Nrj   rk   rs   r=   r   r0  rl   r   r   rP   ro   )rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rs   rq   rs   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   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+   rP   r5   rP   r   r   r-   ro   )r+   r+   r+   r+   r+   r+   rP   r5   r5   r5   r5   r5   r5   r5   r5   r   r[   r    r   r   r(   r(   r)   test_check_mean_shape_one  s&   
z'TestStatistic.test_check_mean_shape_onec                 C   r@  )Nrj   rk   rl   r   rA  r   r   r(   r(   r)   test_check_mean_2  rD  zTestStatistic.test_check_mean_2rN   )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-   rU  )r   g-q=r   r9   r`   r   rU  N)r   r    float64r[   r   )r#   rN   r,   r(   r(   r)   test_same_prepend_append  s   "
z&TestStatistic.test_same_prepend_appendr   r?   )r?   )r   rU  ))rP   r-   )r?   r   ))r<   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 )Nrc   r5   rP   #index can't contain negative valuesr@   r-   ro   r   r6   r7   rC   rD   rE   r[   )r#   rN   r   arrrA   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 )Nrc   rZ  rG   r   r-   r   r   ra   )
r5   r5   r5   rP   r5   r   r   r>   r   r   )
r=   r=   r=   r   r=   r-   r   r+   r   r   )
r   r   r   r   r   r4   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   rn   r   r   r   r   r   r   )
r   r   r   rm   r   r   r   r   r   r   r   r6   r7   r[   r    r   r   r(   r(   r)   test_simple_stat_length  s$   
z%TestStatistic.test_simple_stat_lengthz)ignore:Mean of empty slice:RuntimeWarningzJignore:invalid value encountered in (divide|double_scalars):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 )Nrr   rs   r=   r-   r   ro   )r   r[   r    nanr   )r#   rN   r]  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@   rr   rs   r   ro   )r=   r   r=   )rC   rD   rE   r   r[   r#   rN   rA   r(   r(   r)   test_zero_stat_length_invalid  s   "z+TestStatistic.test_zero_stat_length_invalidN)rJ   rK   rL   r   r3  r6  r9  r<  r>  r?  rC  rK  rM  rO  rS  rT  rC   re   rf   rW  r^  rc  filterwarningsrf  rh  r(   r(   r(   r)   ri      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S )TestConstantc                 C   8   t d}t j|dddd}t g d}t|| d S )Nrj   rl   r   )r   rn   r
   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r=   r-   r   r+   rP   r5   r   r   r>   r   r   r4   r   r   r   r   r   r   r   rn   r   r   r   r   rm   r   r   r   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r1  r   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   r2  r   r(   r(   r)   test_check_constant     
z TestConstant.test_check_constantc                 C   r   )Nrj   rl   r   r;  r2  r   r(   r(   r)   test_check_constant_zeros  r4  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 )Nrc   rP   r5   rd  r   皙?rN   r
   )	r=   r=   r=   r=   r=   r=   r=   r=   r=   )	r=   r   r=   r-   r   r+   rP   r=   r=   )	r=   r5   r   r   r>   r   r   r=   r=   )	r=   r4   r   r   r   r   r   r=   r=   )	r=   r   r   rn   r   r   r   r=   r=   )	r=   r   rm   r   r   r   r   r=   r=   r   r6   r7   r[   r    r   r#   r]  r]   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 )Nrc   rP   r5   rd  rd  r   rp  rq  )	rp  rp  rp  rp  rp  rp  rp  rp  rp  )	rp  rq   rr   rs   rt   ru   rv   rp  rp  )	rp  rw   rx   ry   rz   r{   r|   rp  rp  )	rp  r}   r~   r   r   r   r   rp  rp  )	rp  r   r   r   r   r   r   rp  rp  )	rp  r   r   r   r   r   r   rp  rp  r   r6   r7   r   rV  r[   r    r   )r#   r]  	arr_floatr]   r$   r(   r(   r)   test_check_constant_float28  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 )Nrj   r9   rl   r   )皙333333rl  )ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  ry  r   r=   r-   r   r+   rP   r5   r   r   r>   r   r   r4   r   r   r   r   r   r   r   rn   r   r   r   r   rm   r   r   r   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r1  r   rz  rz  rz  rz  rz  rz  rz  rz  rz  rz  rz  rz  rz  rz  rz  rz  rz  rz  rz  rz  )r   r6   r   r[   r    r   r   r(   r(   r)   test_check_constant_float3M  r:  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 )Nrc   rP   r5   )r=   rY  r   r   rq  )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r=   r-   r   r+   rP   r   r   )
r   r   r5   r   r   r>   r   r   r   r   )
r   r   r4   r   r   r   r   r   r   r   )
r   r   r   r   rn   r   r   r   r   r   )
r   r   r   rm   r   r   r   r   r   r   rr  rs  r(   r(   r)   "test_check_constant_odd_pad_amounte  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-   )rd  )r=   r   r   )rd  r   r+   rq  )r   r=   r=   r+   r+   r+   )r   r   r=   r+   r+   r+   )r   r-   r   r+   r+   r+   )r   r-   r-   r+   r+   r+   )r   r6   r7   libr[   r    r   rs  r(   r(   r)   test_check_constant_pad_2dv  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    rP   r9   r=   r   rq  r   l    )r   fulluint64r[   minr   int64)r#   
uint64_maxr]  r]   r$   	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=   r9   r   r   )	pad_widthrN   r
   ra  r-   )r   r   r!   r[   r   )r#   r]  obj_aobj_b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   rY  r|  r   rX   r   r+   r+   r   zerosr[   rZ   r#   r]  r&   r(   r(   r)   test_pad_empty_dimension     
z%TestConstant.test_pad_empty_dimensionN)rJ   rK   rL   rm  ro  rt  rx  r{  r}  r  r  r  r  r(   r(   r(   r)   rj    s    rj  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 )
Nrj   rk   rl   r   )r+   rP   )r   )ru   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?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   g33333W@gffffffV@g9U@gT@g     R@g33333Q@gfffffP@g33333N@gYL@r   gfffffG@gLE@g33333B@g@@g     <@g7@g3@g,@gffffff#@rv   gh㈵>)rtolatol)r   r6   r   r[   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 )Nrn   r+   rP   )r-   r-   r   rR   rN   r   )	rq   rq   rq   rq   rq   rq   rq   rq   rq   )	rq   rq   rq   rp   rr   g      ?rs   rr   rq   )	rq   rq   rq   rr   rs   rt   ru   rs   rq   )	rq   g      @rv   rw   rx   ry   rz   g      @rq   )	rq   rv   r{   r|   r}   r~   r   rx   rq   )	rq         @r   r   r   r   r         #@rq   )	rq   g      @r  ry   g      !@rz   r  g      @rq   rv  rs  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-   rU  rG   r   r  r4   r   r5   r<   r?   )	fractionsr  r   r    r[   r   )r#   r  r]  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-   rP   )   {   r   rX   Nr   rq   rU  )r   r[   rH   r7   r   )r#   r,   r(   r(   r)   test_end_values  s
   zTestLinearRamp.test_end_valuesr:   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   r9   r   r   r  )r   r=   r-   r   r-   r=   r   )r   r-   r=   r   r=   r-   r   N)r   r    r[   r   )r#   r:   r%   r&   r$   r(   r(   r)   test_negative_difference  s   
z'TestLinearRamp.test_negative_differenceN)rJ   rK   rL   r  r  rC   re   xfailAssertionErrorr  r  rf   _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   )Nrj   rl   r   )rm   r   r   r   r   rn   r   r   r   r   r   r   r   r4   r   r   r>   r   r   r5   rP   r+   r   r-   r=   r   r=   r-   r   r+   rP   r5   r   r   r>   r   r   r4   r   r   r   r   r   r   r   rn   r   r   r   r   rm   r   r   r   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r1  r   r1  r0  r/  r.  r-  r,  r+  r*  r)  r(  r'  r&  r%  r$  r#  r"  r!  r   r  r  r2  r   r(   r(   r)   r    r4  zTestReflect.test_check_simplec                 C   rk  )Nrj   rl   r   oddr   )ir  r<   r;   r?   rU  r   r=   r-   r   r+   rP   r5   r   r   r>   r   r   r4   r   r   r   r   r   r   r   rn   r   r   r   r   rm   r   r   r   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r1  r   rj   r=  f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   r2  r   r(   r(   r)   test_check_odd_method  rn  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 )NrP  r5   r   r   rQ  r   )r   r5   r   r   r   r5   r   r   r   r5   r   r   r   r5   r   rP   r+   rP   r5   rP   r+   rP   r5   rP   r+   rP   r5   rP   r+   rP   rR  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 )NrP  rQ  r   r  rR  r   r(   r(   r)   test_check_shapeC  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=   rR  r   r(   r(   r)   test_check_01Y     zTestReflect.test_check_01c                 C   r  )Nr  r   r   )	r-   r   r-   r=   r-   r   r-   r=   r-   rR  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   rR  r   r(   r(   r)   test_check_03c  r  zTestReflect.test_check_03N)
rJ   rK   rL   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.rN   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+   rX   r   )r   r   )r|  r  )rC   rD   rE   r   r[   ndarrayr  rg  r(   r(   r)   r  l  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-   )ra  r  r|  rX   )r   r   r+   )r   r[   rH   rZ   )r#   rN   r&   r(   r(   r)   test_pad_non_empty_dimension{  s   z+TestEmptyArray.test_pad_non_empty_dimensionN)rJ   rK   rL   __doc__rC   re   rf   sortedrg   rh   r  r  r(   r(   r(   r)   r  i  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   )Nrj   rl   r   )r   r   r   r   rn   r   r   r   r   r   r   r   r4   r   r   r>   r   r   r5   rP   r+   r   r-   r=   r   r   r=   r-   r   r+   rP   r5   r   r   r>   r   r   r4   r   r   r   r   r   r   r   rn   r   r   r   r   rm   r   r   r   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r1  r   r   r1  r0  r/  r.  r-  r,  r+  r*  r)  r(  r'  r&  r%  r$  r#  r"  r!  r   r  r2  r   r(   r(   r)   r    r4  zTestSymmetric.test_check_simplec                 C   rk  )Nrj   rl   r   r  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  r   r   r=   r-   r   r+   rP   r5   r   r   r>   r   r   r4   r   r   r   r   r   r   r   rn   r   r   r   r   rm   r   r   r   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r1  r   r   rj   r=  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r2  r   r(   r(   r)   r    rn  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 )NrP  r  rQ  r   rP   r5   r5   rP   r+   r+   rP   r5   r5   rP   r+   r+   rP   r5   r5   )r   r   r   r   r5   r5   r   r   r   r   r5   r5   r   r   r   rR  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 )NrP  r  rQ  r   r  r  )r;   r?   r?   rU  r   r   r=   r-   r-   r   r+   r+   rP   r5   r5   )rU  r   r   r=   r-   r-   r   r+   r+   rP   r5   r5   r   r   r   )r=   r-   r-   r   r+   r+   rP   r5   r5   r   r   r   r>   r   r   )r   r+   r+   rP   r5   r5   r   r   r   r>   r   r   r   r4   r4   )rP   r5   r5   r   r   r   r>   r   r   r   r4   r4   r   r   r   )r   r   r   r>   r   r   r   r4   r4   r   r   r   r   r   r   )r>   r   r   r   r4   r4   r   r   r   r   r   r   r   r   r   rR  r   r(   r(   r)   test_check_large_pad_odd  s(   z&TestSymmetric.test_check_large_pad_oddc                 C   r  )NrP  rQ  r   r  rR  r   r(   r(   r)   r    s&   
zTestSymmetric.test_check_shapec                 C   r  )Nr  r-   r   )r-   r=   r=   r-   r   r   r-   rR  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=   rR  r   r(   r(   r)   r    r  zTestSymmetric.test_check_02c                 C   r  )Nr  r5   r   )r=   r-   r   r   r-   r=   r=   r-   r   r   r-   r=   r=   r-   r   rR  r   r(   r(   r)   r    r  zTestSymmetric.test_check_03N)rJ   rK   rL   r  r  r  r  r  r  r  r  r(   r(   r(   r)   r    s    r  c                   @   r   )TestWrapc                 C   r   )Nrj   rl   r   )r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r   r   r=   r-   r   r+   rP   r5   r   r   r>   r   r   r4   r   r   r   r   r   r   r   rn   r   r   r   r   rm   r   r   r   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r1  r   r   r=   r-   r   r+   rP   r5   r   r   r>   r   r   r4   r   r   r   r   r   r   r   r2  r   r(   r(   r)   r    r4  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 )Nr4   r~  )r   r4   r   )r   r   r   r>   r   r   r   r>   r   r   r   r>   r   r   r   r>   r   r   r   r>   r   r   r   r>   r   r   )r-   r   r   r=   r-   r   r   r=   r-   r   r   r=   r-   r   r   r=   r-   r   r   r=   r-   r   r   r=   r-   r   )r5   r   r+   rP   r5   r   r+   rP   r5   r   r+   rP   r5   r   r+   rP   r5   r   r+   rP   r5   r   r+   rP   r5   r   rb  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   rR  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=   rR  r   r(   r(   r)   r  a  r  zTestWrap.test_check_02c                 C   s8   t d}t j|ddd}t||d dd df  d S )NrN  )r   rP   r   rX   r  )r   rH   r[   r   r   r(   r(   r)   test_pad_with_zerof  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.
        rP   )r4   r   r   rX   r   N)r   r4   r;   )r   r6   r[   r   r_r   r(   r(   r)   test_repeated_wrappingk  s   
 
$zTestWrap.test_repeated_wrappingN)	rJ   rK   rL   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 	Nr4   r+   r   r_  r   )r   r   r   r   r=   r-   r-   r-   )r   r   r   r   r+   rP   rP   rP   )r5   r5   r5   r5   r   r   r   r   )r>   r>   r>   r>   r   r   r   r   rb  r   r(   r(   r)   r  z  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  )rd  r   )r=   r=   r-   r   r   r   rP  ru  r   r-   r   r+   )rd  rd  rd  )r   r    r[   r   r6   r7   )r#   r,   paddedr$   r(   r(   r)   test_check_width_shape_1_2  s   

z#TestEdge.test_check_width_shape_1_2N)rJ   rK   rL   r  r  r(   r(   r(   r)   r  y  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+   r5   rG   )r   r=   r   rX   )r>   r   r-   r;   r   rU  r   r6   r7   r[   rZ   r   r  r(   r(   r)   test_simple  s   zTestEmpty.test_simplec                 C   r  )Nr  r  r   rX   r  r  r  r(   r(   r)   r    r  z"TestEmpty.test_pad_empty_dimensionN)rJ   rK   rL   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(   )vectorr  iaxiskwargsr(   r(   r)   _padwithtens  s   z6test_legacy_vector_functionality.<locals>._padwithtensr5   r-   r   )r   r   r   r   r   r   r   )r   r   r   r=   r-   r   r   )r   r   r   r+   rP   r   r   rb  )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   rX   )r   r   r=   r   r   rR  )r,   r   r(   r(   r)   test_unicode_mode  r  r  rN   )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  )
fill_valuer_  )r>   r   rX   )r   r  r   r[   )rN   r,   r^   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+   rP   r5   r   )r|  rY  ra  )rd  r~  )rP   r5   ))r   r+   rP   )r   r=   r-   rN   c                 C   V   t dd}d}tjt|d t ||| W d    d S 1 s$w   Y  d S )Nrc   rZ  z(operands could not be broadcast togetherr@   r\  r#   r  rN   r]  rA   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 )Nrc   rZ  zDinput operand has more dimensions than allowed by the axis remappingr@   ))ra  )r+   )rP   )r  r|  rY  r\  )r#   rN   r]  rA   r(   r(   r)   test_misshaped_pad_width_2  s
   "z'TestPadWidth.test_misshaped_pad_width_2rX  c                 C   r  )Nrc   rZ  r[  r@   r\  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=   rU  )))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 )Nrc   rZ  z%`pad_width` must be of integral type.r@   r9   )r   r6   r7   rC   rD   	TypeErrorr[   r    )r#   r  r:   rN   r]  rA   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  rb  r   r(   r(   r)   test_pad_width_as_ndarray  s    
z&TestPadWidth.test_pad_width_as_ndarray)r   rR   )rR   rR   c                 C   s,   t ddd}t|t j|||d d S )Nrc   r5   rP   rX   )r   r6   r7   r   r[   )r#   r  rN   r]  r(   r(   r)   test_zero_pad_width  s   z TestPadWidth.test_zero_pad_width)rJ   rK   rL   rC   re   rf   rg   rh   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)
rg   valuesupdater   r[   itemsformatrC   rD   rE   )rN   allowednot_allowedr  keyvaluerA   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   r[   )r]  r(   r(   r)   test_constant_zero_default2  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+   rX   )r  rC   rD   rE   r   r[   )rN   rA   r(   r(   r)   test_unsupported_mode7  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+   r5   r-   rG   )r   r   r;   r  )rN   r]  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.)rP   r   C)orderrP   C_CONTIGUOUSFF_CONTIGUOUSN)r   rH   r[   flags)rN   r%   r(   r(   r)   test_memory_layout_persistenceF  s   r  r:   c                 C   s0   t jd| d}t j|d|d}|j| ksJ d S )N)r   r-   r=   r9   r=   rX   )r   r  r[   r:   )r:   rN   r]  r&   r(   r(   r)   test_dtype_persistenceO  s   r  )&r  rC   numpyr   numpy.testingr   r   r   numpy.lib.arraypadr   sctypesr  rg   r   rM   ri   rj  r  r  r  r  r  r  r  r  r  re   rf   r  r  rh   r  r  r!   r  r  r  r  r(   r(   r(   r)   <module>   sr    S  l 4Un r'
Q



