o
    ʩZh.                     @   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                   @   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%   T/var/www/html/lang_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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 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 broadcastr9   r*   r(   r*   r   )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                   @   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(      r1   c                 S      g | ]}d qS )r   r   r%   .0_r%   r%   r&   
<listcomp>w       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_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 )NrJ   r(   rK   r1   c                 S   rL   )r9   r9   r%   rN   r%   r%   r&   rQ   }   rR   zITestConditionalShortcuts.test_shallow_statistic_range.<locals>.<listcomp>r   rS   r9   rI   r   rT   rW   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   rL   ))r   r   r%   rN   r%   r%   r&   rQ      rR   zFTestConditionalShortcuts.test_clip_statistic_range.<locals>.<listcomp>rS   r\   rT   rW   r%   r%   r&   test_clip_statistic_range   s
   z2TestConditionalShortcuts.test_clip_statistic_rangeN)rE   rF   rG   r>   markparametrize
_all_modeskeysrZ   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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   )rB   r   )      ?rk   rk   rk   rk   rk   rk   rk   rk   rk   rk   rk   rk   rk   rk   rk   rk   rk   rk   rk   rk   rk   rk   rk   rk                 ?       @      @      @      @      @      @       @      "@      $@      &@      (@      *@      ,@      .@      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   r2   astyperV   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 )Nre   rg   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   r9   r*   r   r(   rK   r1         r:   r      r0                        ri               rh               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   r2   rV   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 )Nre   r9   rg   r   )re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   ri   r   r   r   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   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   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 )Nre   r9   rg   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   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   ri   r   r   r   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   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   re   r-  r   r%   r%   r&   test_check_maximum_stat_length      z,TestStatistic.test_check_maximum_stat_lengthc                 C   r   )Nre   rg   r   r   r   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   ri   r   r   r   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   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r   r   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   r/  z"TestStatistic.test_check_minimum_1c                 C   r0  )Nre   r*   rg   r   )r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   ri   r   r   r   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   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r   re   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  r2  z"TestStatistic.test_check_minimum_2c                 C   r3  )Nre   r9   rg   r   r   rj   )r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   ri   r   r   r   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   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r   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&   test_check_minimum_stat_length  r5  z,TestStatistic.test_check_minimum_stat_lengthc                 C   :   t dd}t |dd}t g d}t|| d S )Nre   rf   rg   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=  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=  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   r9   r(   r(   rK   r:   r:   r   r*   r9   r   )r(   r(   rK   r(   r(   r   r   r9   r(   r   rK   r(   rK   r:   rK   r   r:   r   r*   r   )r   r   rV   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 )
Nr@  rA  rB  r9   r   )rK   r(   rK   r(   rK   rC  rD  rE  )r   r   rV   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 )Nre   rf   rn   r9   r   r+  rg   r   r   rK   rj   )rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rn   rl   rn   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&   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(   rK   r1   rK   r   r   r*   rj   )r(   r(   r(   r(   r(   r(   rK   r1   r1   r1   r1   r1   r1   r1   r1   r   rV   r   r   r   r%   r%   r&   test_check_mean_shape_one  s&   
z'TestStatistic.test_check_mean_shape_onec                 C   r;  )Nre   rf   rg   r   r<  r   r   r%   r%   r&   test_check_mean_2  r?  zTestStatistic.test_check_mean_2rI   )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*   rP  )r   g-q=r   r5   r[   r   rP  N)r   r   float64rV   r   )r    rI   r)   r%   r%   r&   test_same_prepend_append  s   "
z&TestStatistic.test_same_prepend_appendr   r;   )r;   )r   rP  ))rK   r*   )r;   r   ))r8   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^   r1   rK   #index can't contain negative valuesr<   r*   rj   r   r2   r3   r>   r?   r@   rV   )r    rI   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^   rU  rB   r   r*   r   r   r\   )
r1   r1   r1   rK   r1   r   r   r:   r   r   )
r9   r9   r9   r   r9   r*   r   r(   r   r   )
r   r   r   r   r   r0   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   ri   r   r   r   r   r   r   )
r   r   r   rh   r   r   r   r   r   r   r   r2   r3   rV   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 )Nrm   rn   r9   r*   r   rj   )r   rV   r   nanr   )r    rI   rX  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<   rm   rn   r   rj   )r9   r   r9   )r>   r?   r@   r   rV   r    rI   r=   r%   r%   r&   test_zero_stat_length_invalid  s   "z+TestStatistic.test_zero_stat_length_invalidN)rE   rF   rG   r   r.  r1  r4  r7  r9  r:  r>  rF  rH  rJ  rN  rO  r>   r`   ra   rR  rY  r^  filterwarningsra  rc  r%   r%   r%   r&   rd      s<    

rd   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 )Nre   rg   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   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   ri   r   r   r   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   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r   ri   ri   ri   ri   ri   ri   ri   ri   ri   ri   ri   ri   ri   ri   ri   ri   ri   ri   ri   ri   r-  r   r%   r%   r&   test_check_constant     
z TestConstant.test_check_constantc                 C   r   )Nre   rg   r   r6  r-  r   r%   r%   r&   test_check_constant_zeros  r/  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^   rK   r1   r_  r   皙?rI   r	   )	r9   r9   r9   r9   r9   r9   r9   r9   r9   )	r9   r   r9   r*   r   r(   rK   r9   r9   )	r9   r1   r   r   r:   r   r   r9   r9   )	r9   r0   r   r   r   r   r   r9   r9   )	r9   r   r   ri   r   r   r   r9   r9   )	r9   r   rh   r   r   r   r   r9   r9   r   r2   r3   rV   r   r   r    rX  rX   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^   rK   r1   r_  r_  r   rk  rl  )	rk  rk  rk  rk  rk  rk  rk  rk  rk  )	rk  rl   rm   rn   ro   rp   rq   rk  rk  )	rk  rr   rs   rt   ru   rv   rw   rk  rk  )	rk  rx   ry   rz   r{   r|   r}   rk  rk  )	rk  r~   r   r   r   r   r   rk  rk  )	rk  r   r   r   r   r   r   rk  rk  r   r2   r3   r   rQ  rV   r   r   )r    rX  Z	arr_floatrX   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 )Nre   r5   rg   r   )皙333333rg  )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  r   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   ri   r   r   r   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   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r   rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  rt  )r   r2   r   rV   r   r   r   r%   r%   r&   test_check_constant_float3L  r5  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^   rK   r1   )r9   rT  r   r   rl  )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r9   r*   r   r(   rK   r   r   )
r   r   r1   r   r   r:   r   r   r   r   )
r   r   r0   r   r   r   r   r   r   r   )
r   r   r   r   ri   r   r   r   r   r   )
r   r   r   rh   r   r   r   r   r   r   rm  rn  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_  r9   r   r   )r_  r   r(   rl  )r   r9   r9   r(   r(   r(   )r   r   r9   r(   r(   r(   )r   r*   r   r(   r(   r(   )r   r*   r*   r(   r(   r(   )r   r2   r3   librV   r   r   rn  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   rl  r   l    )r   fullZuint64rV   minr   Zint64)r    Z
uint64_maxrX  rX   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	   r\  r*   )r   r   r   rV   r   )r    rX  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   rT  rv  r   rS   r   r(   r(   r   zerosrV   rU   r    rX  r#   r%   r%   r&   test_pad_empty_dimension     
z%TestConstant.test_pad_empty_dimensionN)rE   rF   rG   rh  rj  ro  rr  ru  rw  r{  r~  r  r  r%   r%   r%   r&   re    s    re  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 )
Nre   rf   rg   r   )r(   rK   )r
   )rp   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?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   g33333W@gffffffV@g9U@gT@g     R@g33333Q@gfffffP@g33333N@gYL@r   gfffffG@gLE@g33333B@g@@g     <@g7@g3@g,@gffffff#@rq   gh㈵>)ZrtolZatol)r   r2   r   rV   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 )Nri   r(   rK   )r*   r*   r   rM   rI   r
   )	rl   rl   rl   rl   rl   rl   rl   rl   rl   )	rl   rl   rl   rk   rm   g      ?rn   rm   rl   )	rl   rl   rl   rm   rn   ro   rp   rn   rl   )	rl   g      @rq   rr   rs   rt   ru   g      @rl   )	rl   rq   rv   rw   rx   ry   rz   rs   rl   )	rl         @r{   r|   r}   r~   r         #@rl   )	rl   g      @r  rt   g      !@ru   r  g      @rl   rq  rn  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*   rP  rB   r   r  r0   r   r1   r8   r;   )	fractionsr  r   r   rV   r   )r    r  rX  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   rS   Nr   rl   rP  )r   rV   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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   r5   r   r   r  )r   r9   r*   r   r*   r9   r   )r   r*   r9   r   r9   r*   r   N)r   r   rV   r   )r    r6   r"   r#   r!   r%   r%   r&   test_negative_difference  s   
z'TestLinearRamp.test_negative_differenceN)rE   rF   rG   r  r  r>   r`   ZxfailAssertionErrorr  r  ra   _numeric_dtypesr  r%   r%   r%   r&   r    s    
r  c                   @   D   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   )Nre   rg   r   )rh   r   r   r   r   ri   r   r   r   r   r   r   r   r0   r   r   r:   r   r   r1   rK   r(   r   r*   r9   r   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   ri   r   r   r   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   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r   r,  r+  r*  r)  r(  r'  r&  r%  r$  r#  r"  r!  r   r  r  r  r  r  r  r  r-  r   r%   r%   r&   r    r/  zTestReflect.test_check_simplec                 C   rf  )Nre   rg   r   oddr   )ir  r8   r7   r;   rP  r   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   ri   r   r   r   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   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r   re   r8  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  ri  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 )NrK  r1   r   r   rL  r   )r   r1   r   r   r   r1   r   r   r   r1   r   r   r   r1   r   rK   r(   rK   r1   rK   r(   rK   r1   rK   r(   rK   r1   rK   r(   rK   rM  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 )NrK  rL  r   r  rM  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r9   r*   r   r*   r   )r   r*   r9   r*   r   r*   r9   rM  r   r%   r%   r&   test_check_01X     zTestReflect.test_check_01c                 C   r  )Nr  r   r   )	r*   r   r*   r9   r*   r   r*   r9   r*   rM  r   r%   r%   r&   test_check_02]  r  zTestReflect.test_check_02c                 C   r  )Nr  r(   r   )r9   r*   r   r*   r9   r*   r   r*   r9   r*   r   rM  r   r%   r%   r&   test_check_03b  r  zTestReflect.test_check_03N)
rE   rF   rG   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.rI   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(   rS   r   )r   r   )rv  r  )r>   r?   r@   r   rV   Zndarrayr  rb  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  rv  rS   )r   r   r(   )r   rV   rC   rU   )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`   ra   sortedrb   rc   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   )Nre   rg   r   )r   r   r   r   ri   r   r   r   r   r   r   r   r0   r   r   r:   r   r   r1   rK   r(   r   r*   r9   r   r   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   ri   r   r   r   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   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r   r   r,  r+  r*  r)  r(  r'  r&  r%  r$  r#  r"  r!  r   r  r  r  r  r  r  r-  r   r%   r%   r&   r    r/  zTestSymmetric.test_check_simplec                 C   rf  )Nre   rg   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;   rP  r   r   r9   r*   r   r(   rK   r1   r   r   r:   r   r   r0   r   r   r   r   r   r   r   ri   r   r   r   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   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r   r   re   r8  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r-  r   r%   r%   r&   r    ri  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 )NrK  r  rL  r   rK   r1   r1   rK   r(   r(   rK   r1   r1   rK   r(   r(   rK   r1   r1   )r   r   r   r   r1   r1   r   r   r   r   r1   r1   r   r   r   rM  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 )NrK  r  rL  r   r  r  )r7   r;   r;   rP  r   r   r9   r*   r*   r   r(   r(   rK   r1   r1   )rP  r   r   r9   r*   r*   r   r(   r(   rK   r1   r1   r   r   r   )r9   r*   r*   r   r(   r(   rK   r1   r1   r   r   r   r:   r   r   )r   r(   r(   rK   r1   r1   r   r   r   r:   r   r   r   r0   r0   )rK   r1   r1   r   r   r   r:   r   r   r   r0   r0   r   r   r   )r   r   r   r:   r   r   r   r0   r0   r   r   r   r   r   r   )r:   r   r   r   r0   r0   r   r   r   r   r   r   r   r   r   rM  r   r%   r%   r&   test_check_large_pad_odd  s(   z&TestSymmetric.test_check_large_pad_oddc                 C   r  )NrK  rL  r   r  rM  r   r%   r%   r&   r    s&   
zTestSymmetric.test_check_shapec                 C   r  )Nr  r*   r   )r*   r9   r9   r*   r   r   r*   rM  r   r%   r%   r&   r    r  zTestSymmetric.test_check_01c                 C   r  )Nr  r   r   )	r   r*   r9   r9   r*   r   r   r*   r9   rM  r   r%   r%   r&   r    r  zTestSymmetric.test_check_02c                 C   r  )Nr  r1   r   )r9   r*   r   r   r*   r9   r9   r*   r   r   r*   r9   r9   r*   r   rM  r   r%   r%   r&   r     r  zTestSymmetric.test_check_03N)rE   rF   rG   r  r  r  r  r  r  r  r  r%   r%   r%   r&   r    s    r  c                   @   r  )TestWrapc                 C   r   )Nre   rg   r   )r  r  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   ri   r   r   r   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   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  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   r-  r   r%   r%   r&   r    r/  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 )Nr0   ry  )r   r0   r   )r   r   r   r:   r   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   r9   r*   r   r   r9   r*   r   r   r9   r*   r   r   r9   r*   r   r   r9   r*   r   )r1   r   r(   rK   r1   r   r(   rK   r1   r   r(   rK   r1   r   r(   rK   r1   r   r(   rK   r1   r   r(   rK   r1   r   r]  r   r%   r%   r&   r    s@   
6zTestWrap.test_check_large_padc                 C   r  )Nr  r   r   )	r9   r*   r   r9   r*   r   r9   r*   r   rM  r   r%   r%   r&   r  [  r  zTestWrap.test_check_01c                 C   r  )Nr  r(   r   )r   r9   r*   r   r9   r*   r   r9   r*   r   r9   rM  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 )NrI  )r   rK   r   rS   r  )r   rC   rV   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   rS   r   N)r   r0   r7   )r   r2   rV   r   Zr_r   r%   r%   r&   test_repeated_wrappingj  s   
 
$zTestWrap.test_repeated_wrappingc              	   C   sb   t ddd}t j|ddgdd}t g dg dg dg dg dg dg}t|| d	S )
z
        Assert that 'wrap' pads only with multiples of the original area if
        the pad width is larger than the original array.
        r(   r*   rx  r   r9   r   rS   )r   r*   r   r*   r   r*   )r9   r   r9   r   r9   r   Nr]  r   r%   r%   r&   &test_repeated_wrapping_multiple_originw  s   z/TestWrap.test_repeated_wrapping_multiple_originN)
rE   rF   rG   r  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 	Nr0   r(   r   rZ  r   )r   r   r   r   r9   r*   r*   r*   )r   r   r   r   r(   rK   rK   rK   )r1   r1   r1   r1   r   r   r   r   )r:   r:   r:   r:   r   r   r   r   r]  r   r%   r%   r&   r    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   )r9   r9   r*   r   r   r   rK  rp  r   r*   r   r(   )r_  r_  r_  )r   r   rV   r   r2   r3   )r    r)   paddedr!   r%   r%   r&   test_check_width_shape_1_2  s   

z#TestEdge.test_check_width_shape_1_2N)rE   rF   rG   r  r  r%   r%   r%   r&   r    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(   r1   rB   r  r   rS   )r:   r   r*   r7   r   rP  r   r2   r3   rV   rU   r   r  r%   r%   r&   test_simple  s   zTestEmpty.test_simplec                 C   r  )Nr  r  r   rS   r  r  r  r%   r%   r&   r    r  z"TestEmpty.test_pad_empty_dimensionN)rE   rF   rG   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   r9   r%   )Zvectorr  Ziaxiskwargsr%   r%   r&   _padwithtens  s   z6test_legacy_vector_functionality.<locals>._padwithtensr1   r*   r   )r   r   r   r   r   r   r   )r   r   r   r9   r*   r   r   )r   r   r   r(   rK   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 )Nr9   r*   r   rS   )r   r   r9   r   r   rM  )r)   r   r%   r%   r&   test_unicode_mode  r  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_valuerZ  )r:   r   rS   )r   r|  r   rV   )rI   r)   rY   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(   rK   r1   r   )rv  rT  r\  )r_  ry  )rK   r1   ))r   r(   rK   )r   r9   r*   rI   c                 C   V   t dd}d}tjt|d t ||| W d    d S 1 s$w   Y  d S )Nr^   rU  z(operands could not be broadcast togetherr<   rW  r    r  rI   rX  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^   rU  zDinput operand has more dimensions than allowed by the axis remappingr<   ))r\  )r(   )rK   )r  rv  rT  rW  )r    rI   rX  r=   r%   r%   r&   test_misshaped_pad_width_2  s
   "z'TestPadWidth.test_misshaped_pad_width_2rS  c                 C   r  )Nr^   rU  rV  r<   rW  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[  r9   rP  )))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^   rU  z%`pad_width` must be of integral type.r<   r5   )r   r2   r3   r>   r?   	TypeErrorrV   r   )r    r  r6   rI   rX  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   rM   )rM   rM   c                 C   s,   t ddd}t|t j|||d d S )Nr^   r1   rK   rS   )r   r2   r3   r   rV   )r    r  rI   rX  r%   r%   r&   test_zero_pad_width*  s   z TestPadWidth.test_zero_pad_width)rE   rF   rG   r>   r`   ra   rb   rc   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  r9   z+unsupported keyword arguments for mode '{}'r<   N)
rb   valuesupdater   rV   itemsformatr>   r?   r@   )rI   allowednot_allowedr  keyvaluer=   r%   r%   r&   test_kwargs1  s   

 r   c                  C   s(   t ddg} tt | dg d d S )Nr9   r*   )r   r   r9   r9   r   r   )r   r   r   rV   )rX  r%   r%   r&   test_constant_zero_defaultB  s   r  r9   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(   rS   )r  r>   r?   r@   r   rV   )rI   r=   r%   r%   r&   test_unsupported_modeG  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(   r1   r*   rB   )r   r   r7   r  )rI   rX  r#   r%   r%   r&   test_non_contiguous_arrayN  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.)rK   r   C)orderrK   ZC_CONTIGUOUSFZF_CONTIGUOUSN)r   rC   rV   flags)rI   r"   r%   r%   r&   test_memory_layout_persistenceV  s   r	  r6   c                 C   s0   t jd| d}t j|d|d}|j| ksJ d S )N)r   r*   r9   r5   r9   rS   )r   r  rV   r6   )r6   rI   rX  r#   r%   r%   r&   test_dtype_persistence_  s   r
  )&r  r>   numpyr   Znumpy.testingr   r   r   Znumpy.lib.arraypadr   Zsctypesr  rb   r   rH   rd   re  r  r  r  r  r  r  r  r  r  r`   ra   r  r  rc   r   r  r   r  r  r	  r
  r%   r%   r%   r&   <module>   st    S  k 4Un  '
Q



