3
Kd                 @   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jd)d*d+d,d-gd.d/ ZG d0d1 d1Zejjd)ej d2d3 Zd4d5 Z ejjd)d6d7e! dd8d9gd:d; Z"ejjd)ej d<d= Z#ejjd)ej d>d? Z$ejjd@eejjd)ej dAdB Z%dS )Cz(Tests for the array padding functions.

    N)assert_array_equalassert_allcloseassert_equal)	_as_pairsZuintintfloatcomplexconstant_values
end_valuesstat_lengthreflect_typeZeven)constantedgelinear_rampmaximummeanmedianminimumreflect	symmetricwrapemptyc               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestAsPairsc             C   sl   t jddggd }x,ddgdggfD ]}t|d}t|| q&W t }tt|dt j||ggd  dS )z Test casting for a single value.   
   N)nparrayr   r   object)selfexpectedxresultobj r#   Q/var/www/html/virt/lib64/python3.6/site-packages/numpy/lib/tests/test_arraypad.pytest_single_value!   s    
zTestAsPairs.test_single_valuec             C   s   t jddggd }x.ddgddggfD ]}t|d}t|| q(W t }ttd|gdt jd|ggd  ttdgdggdt jddgddgg ttdg|ggdt jddg||gg dS )z-Test proper casting for two different values.r      r   a   N)r   r   r   r   r   )r   r   r    r!   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 )	Nr   F)as_indexTNNNNNN)r+   r,   r-   )r   r   )r   r   r#   r#   r$   test_with_noneG   s    zTestAsPairs.test_with_nonec             C   s$   t jdjd}tt|d| dS )z?Test if `x` already matching desired output are passed through.      r(   N)r0   r(   )r   arangereshaper   r   )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 xrd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Q R X qW dS )z Test results if `as_index=True`.g@gffffff
@r   T)r*   r   )dtypeg(\@r&      r(   	   znegative values)matchNr8   r8   r8   r8   r8   )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Q R X t jtdd tddgdd	ggd W dQ R X t jtdd ttjd
d W dQ R X dS )z"Ensure faulty usage is discovered.zmore dimensions than allowed)r7   r   r   Nzcould not be broadcastr5   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.   r3   r>   r@   r#   r#   r#   r$   r       s   r   c               @   sb   e Zd Zejjdej dd Zejjdddddgdd	 Z	ejjdddddgd
d Z
dS )TestConditionalShortcutsmodec             C   s>   t jdjddd}dd |jD }t|t j|||d d S )Nx   r&      r0   c             S   s   g | ]}dqS )r   )r   r   r#   ).0_r#   r#   r$   
<listcomp>w   s    zHTestConditionalShortcuts.test_zero_padding_shortcuts.<locals>.<listcomp>)rE   )r   r1   r2   shaper   pad)r   rE   testpad_amtr#   r#   r$   test_zero_padding_shortcutst   s    z4TestConditionalShortcuts.test_zero_padding_shortcutsr   r   r   r   c             C   sL   t jdjddd}dd |jD }tt j||ddt j|||d	d
 d S )NrF   r&   rG   r0   c             S   s   g | ]}dqS )r5   )r5   r5   r#   )rH   rI   r#   r#   r$   rJ   }   s    zITestConditionalShortcuts.test_shallow_statistic_range.<locals>.<listcomp>r   )rE   r5   )rE   r   )r   r1   r2   rK   r   rL   )r   rE   rM   rN   r#   r#   r$   test_shallow_statistic_rangez   s    z5TestConditionalShortcuts.test_shallow_statistic_rangec             C   sJ   t jdjdd}dd |jD }tt j|||dt j|||dd d S )N   rG   r0   c             S   s   g | ]}dqS )r   )r   r   r#   )rH   rI   r#   r#   r$   rJ      s    zFTestConditionalShortcuts.test_clip_statistic_range.<locals>.<listcomp>)rE   )rE   r   )r   r1   r2   rK   r   rL   )r   rE   rM   rN   r#   r#   r$   test_clip_statistic_range   s    z2TestConditionalShortcuts.test_clip_statistic_rangeN)rA   rB   rC   r;   markparametrize
_all_modeskeysrO   rP   rR   r#   r#   r#   r$   rD   s   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d Zdd Zdd Zejjdddddgd d! Zejjdddddgejjd"d3d5d7d;d?gd(d) Zd*d+ Zejjd,ejjd-ejjdddgd.d/ Zejjdddgd0d1 Zd2S )@TestStatisticc             C   s\  t jdjd}t j|doddqd}t jd	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdldldldldldldldldldldldldldldldldldldldlg}t|| d S )rNd   f      r   r(   r   )r   g      ?g        g      ?g       @g      @g      @g      @g      @g      @g       @g      "@g      $@g      &@g      (@g      *@g      ,@g      .@g      0@g      1@g      2@g      3@g      4@g      5@g      6@g      7@g      8@g      9@g      :@g      ;@g      <@g      =@g      >@g      ?@g      @@g     @@g      A@g     A@g      B@g     B@g      C@g     C@g      D@g     D@g      E@g     E@g      F@g     F@g      G@g     G@g      H@g     H@g      I@g     I@g      J@g     J@g      K@g     K@g      L@g     L@g      M@g     M@g      N@g     N@g      O@g     O@g      P@g     @P@g     P@g     P@g      Q@g     @Q@g     Q@g     Q@g      R@g     @R@g     R@g     R@g      S@g     @S@g     S@g     S@g      T@g     @T@g     T@g     T@g      U@g     @U@g     U@g     U@g      V@g     @V@g     V@g     V@g      W@g     @W@g     W@g     W@g      X@g     @X@g     X@g     X@rZ   r[   )r\   r(   r   )r]   )r   r1   astyperL   r   r   )r   r'   br#   r#   r$   test_check_mean_stat_length   s&    
z)TestStatistic.test_check_mean_stat_lengthc             C   sR  t jd}t j|dgd}t jddddddddddddddddddddddddddddd	d
dddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdddddddddddddddddddddg}t|| d S )hNrX   rZ   r[   r   c   r   r5   r(   r   r&   rG   r0         r6   r      r/                                                rQ          !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   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   )rZ   r[   )r   r1   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_maximum_1   s&    

z"TestStatistic.test_check_maximum_1c             C   sV  t jdd }t j|dfd}t jdddddddddddddddddddddddddddddd	d
dddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedddddddddddddddddddddg}t|| d S )gNrX   r5   rZ   r[   r   r(   r   r&   rG   r0   rb   rc   r6   r   rd   r/   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rQ   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   ra   )rZ   r[   )r   r1   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_maximum_2   s&    
z"TestStatistic.test_check_maximum_2c             C   sZ  t jdd }t j|dgddd}t jdddddddddddddddddddddddddddd	d
ddddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdddddddddddddddddddddg}t|| d S )hNrX   r5   rZ   r[   r   r   )r   r(   r   r&   rG   r0   rb   rc   r6   rd   r/   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rQ   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   ra   )rZ   r[   )r   r1   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_maximum_stat_length   s&    
z,TestStatistic.test_check_maximum_stat_lengthc             C   sR  t jd}t j|dgd}t jdddddddddddddddddddddddddddddd	d
dddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfddddddddddddddddddddg}t|| d S )hNrX   rZ   r[   r   r   r5   r(   r   r&   rG   r0   rb   rc   r6   r   rd   r/   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rQ   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   ra   )rZ   r[   )r   r1   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_minimum_1   s&    

z"TestStatistic.test_check_minimum_1c             C   sV  t jdd }t j|dfd}t jdddddddddddddddddddddddddddddd	d
dddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcddddeddddddddddddddddddddg}t|| d S )gNrX   r(   rZ   r[   r   r   r&   rG   r0   rb   rc   r6   r   rd   r/   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rQ   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   ra   e   )rZ   r[   )r   r1   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_minimum_2  s&    
z"TestStatistic.test_check_minimum_2c             C   sZ  t jdd }t j|dgddd}t jdddddddddddddddddddddddddddd	d
ddddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdd^d^d^d^d^d^d^d^d^d^d^d^d^d^d^d^d^d^d^d^g}t|| d S )hNrX   r5   rZ   r[   r   r   )r   r(   r   r&   rG   r0   rb   rc   r6   rd   r/   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rQ   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   ra   )rZ   r[   )r   r1   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_minimum_stat_length  s&    
z,TestStatistic.test_check_minimum_stat_lengthc             C   sX  t jdjd}t j|dkd}t jdddddddddddddddddddddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjddddddddddddddddddddg}t|| d S )lNrX   rY   rZ   r[   r   g     H@g        g      ?g       @g      @g      @g      @g      @g      @g       @g      "@g      $@g      &@g      (@g      *@g      ,@g      .@g      0@g      1@g      2@g      3@g      4@g      5@g      6@g      7@g      8@g      9@g      :@g      ;@g      <@g      =@g      >@g      ?@g      @@g     @@g      A@g     A@g      B@g     B@g      C@g     C@g      D@g     D@g      E@g     E@g      F@g     F@g      G@g     G@g      H@g     H@g      I@g     I@g      J@g     J@g      K@g     K@g      L@g     L@g      M@g     M@g      N@g     N@g      O@g     O@g      P@g     @P@g     P@g     P@g      Q@g     @Q@g     Q@g     Q@g      R@g     @R@g     R@g     R@g      S@g     @S@g     S@g     S@g      T@g     @T@g     T@g     T@g      U@g     @U@g     U@g     U@g      V@g     @V@g     V@g     V@g      W@g     @W@g     W@g     W@g      X@g     @X@g     X@g     X@)rZ   r[   )r   r1   r^   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_median2  s&    
zTestStatistic.test_check_medianc          
   C   s   t jdddgdddgdddgg}t j|dd}t jdddddgdddddgdddddgdddddgdddddgg}t|| d S )	Nr   r5   r&   rG   r6   rc   r(   r   )r   r   rL   r   )r   r'   r_   r#   r#   r$   test_check_median_01J  s    "z"TestStatistic.test_check_median_01c          
   C   s   t jdddgdddgdddgg}t j|jddj}t jdddddgdddddgdddddgdddddgdddddgg}t|| d S )	Nr   r5   r&   rG   r6   rc   r(   r   )r   r   rL   Tr   )r   r'   r_   r#   r#   r$   test_check_median_02X  s    "z"TestStatistic.test_check_median_02c             C   sl  t jdjd}d|d< d|d< t j|dmd	dnd}t jddddddddddddddddddddddddddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdddkdlddddddddddddddddddddg}t|| d S )oNrX   rY   g       @r5   g      X@r   rZ   r[   r   r   rG   )r   g        g      @g      @g      @g      @g      @g       @g      "@g      $@g      &@g      (@g      *@g      ,@g      .@g      0@g      1@g      2@g      3@g      4@g      5@g      6@g      7@g      8@g      9@g      :@g      ;@g      <@g      =@g      >@g      ?@g      @@g     @@g      A@g     A@g      B@g     B@g      C@g     C@g      D@g     D@g      E@g     E@g      F@g     F@g      G@g     G@g      H@g     H@g      I@g     I@g      J@g     J@g      K@g     K@g      L@g     L@g      M@g     M@g      N@g     N@g      O@g     O@g      P@g     @P@g     P@g     P@g      Q@g     @Q@g     Q@g     Q@g      R@g     @R@g     R@g     R@g      S@g     @S@g     S@g     S@g      T@g     @T@g     T@g     T@g      U@g     @U@g     U@g     U@g      V@g     @V@g     V@g     V@g      W@g     @W@g     W@g     W@g     X@g     X@)rZ   r[   )r   rG   )r   r1   r^   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_median_stat_lengthf  s*    
z+TestStatistic.test_check_median_stat_lengthc             C   s  dddgg}t j|dddd}t jdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgg}t|| d S )	Nr&   rG   r0   rb   r   r(   )r   )rG   rb   )r   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_mean_shape_one  s"                &z'TestStatistic.test_check_mean_shape_onec             C   sX  t jdjd}t j|dkd}t jdddddddddddddddddddddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjddddddddddddddddddddg}t|| d S )lNrX   rY   rZ   r[   r   g     H@g        g      ?g       @g      @g      @g      @g      @g      @g       @g      "@g      $@g      &@g      (@g      *@g      ,@g      .@g      0@g      1@g      2@g      3@g      4@g      5@g      6@g      7@g      8@g      9@g      :@g      ;@g      <@g      =@g      >@g      ?@g      @@g     @@g      A@g     A@g      B@g     B@g      C@g     C@g      D@g     D@g      E@g     E@g      F@g     F@g      G@g     G@g      H@g     H@g      I@g     I@g      J@g     J@g      K@g     K@g      L@g     L@g      M@g     M@g      N@g     N@g      O@g     O@g      P@g     @P@g     P@g     P@g      Q@g     @Q@g     Q@g     Q@g      R@g     @R@g     R@g     R@g      S@g     @S@g     S@g     S@g      T@g     @T@g     T@g     T@g      U@g     @U@g     U@g     U@g      V@g     @V@g     V@g     V@g      W@g     @W@g     W@g     W@g      X@g     @X@g     X@g     X@)rZ   r[   )r   r1   r^   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_mean_2  s&    
zTestStatistic.test_check_mean_2rE   r   r   r   r   c             C   sJ   t jdddgt jdddgt jd }t j|d	|}t|d |d
  dS )z3 Test that appended and prepended values are equal r5   r(   r   g-q=)r4   Nr   )r5   r5   r   )r   r   float64rL   r   )r   rE   r'   r#   r#   r$   test_same_prepend_append  s    
&z&TestStatistic.test_same_prepend_appendr   r(   r   r5   rG   r&   c             C   sD   t jdjd}d}tjt|d t j|d||d W d Q R X d S )	NrQ   r0   rG   z#index can't contain negative values)r7   r(   )r   )r0   rG   )r   r1   r2   r;   r<   r=   rL   )r   rE   r   arrr7   r#   r#   r$   test_check_negative_stat_length  s    z-TestStatistic.test_check_negative_stat_lengthc             C   s2  t jd}t j|d"}t j|d%dd&d}t jddddddd	d
d	d	g
ddddddd	d
d	d	g
ddddddddddg
ddddddd	d
d	d	g
ddddddddddg
ddddddddddg
ddddddddddg
ddddddd d!d d g
ddddddddddg
ddddddddddg
ddddddddddg
g}t|| d S )'NrQ   r0   rG   r(   r   r   )rE   r   rb   rc   r6   r5   r   r&   rd   r   r/   re   rf   rh   rg   ri   rj   rk   rl   r[   rm   rn   ro   rp   rZ   rq   rr   rs   )r0   rG   r(   r   r   r(   )r   r   )r   )r   r1   r2   rL   r   r   )r   r'   r_   r#   r#   r$   test_simple_stat_length  s     
z%TestStatistic.test_simple_stat_lengthz)ignore:Mean of empty slice:RuntimeWarningzOignore:invalid value encountered in (true_divide|double_scalars):RuntimeWarningc             C   s>   t jddgd|dd}t jt jddt jt jg}t|| d S )Ng      ?g       @r5   r(   r   )r   )r5   r(   )r   rL   r   nanr   )r   rE   r   r   r#   r#   r$   test_zero_stat_length_valid  s    z)TestStatistic.test_zero_stat_length_validc          "   C   s   d}t jt|d tjddgd|dd W d Q R X t jt|d tjddgd|dd W d Q R X t jt|d tjddgd|dd W d Q R X t jt|d tjddgd|d	d W d Q R X d S )
Nz,stat_length of 0 yields no value for padding)r7   g      ?g       @r   )r   r5   )r5   r   )r5   r   )r;   r<   r=   r   rL   )r   rE   r7   r#   r#   r$   test_zero_stat_length_invalid  s       z+TestStatistic.test_zero_stat_length_invalidNr:   r:   )r:   r   )r   r   rG   r(   r:   r:   r   )r   r   r9   r9   r(   )r   r   )rA   rB   rC   r`   r   r   r   r   r   r   r   r   r   r   r   r   r;   rS   rT   r   r   r   filterwarningsr   r   r#   r#   r#   r$   rW      s6   

rW   c               @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TestConstantc             C   sV  t jd}t j|dhddid}t jdddddddddddddddddddddddddddd	d
ddddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgddddddddddddddddddddg}t|| d S )jNrX   rZ   r[   r   r   )r	   r   r5   r(   r   r&   rG   r0   rb   rc   r6   rd   r/   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rQ   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   ra   )rZ   r[   )r   r[   )r   r1   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_constant  s&    

z TestConstant.test_check_constantc             C   sR  t jd}t j|dgd}t jdddddddddddddddddddddddddddddd	d
dddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfddddddddddddddddddddg}t|| d S )hNrX   rZ   r[   r   r   r5   r(   r   r&   rG   r0   rb   rc   r6   r   rd   r/   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rQ   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   ra   )rZ   r[   )r   r1   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_constant_zeros  s&    

z&TestConstant.test_check_constant_zerosc             C   s   t jdjdd}t j|d#ddd}t jdddddddddg	dd	ddd
ddddg	dddddddddg	dddddddddg	dddddddddg	ddddd d!d"ddg	dddddddddg	dddddddddg	g}t|| d S )$NrQ   rG   r0   r5   r(   r   g?)rE   r	   r   r   r&   rb   rc   r6   r   rd   r/   re   rf   rg   rh   ri   rj   rk   r[   rl   rm   rn   ro   rZ   rp   rq   rr   rs   )r5   r(   )r   r1   r2   rL   r   r   )r   r   rM   r   r#   r#   r$   test_check_constant_float$  s    
z&TestConstant.test_check_constant_floatc             C   s   t jdjdd}|jt j}t j|d)ddd}t jdddddddddg	dd	d
ddddddg	dddddddddg	dddddddddg	ddddddd ddg	dd!d"d#d$d%d&ddg	dddddddddg	dddddddddg	g}t|| d S )*NrQ   rG   r0   r5   r(   r   g?)rE   r	   g        g      ?g       @g      @g      @g      @g      @g      @g       @g      "@g      $@g      &@g      (@g      *@g      ,@g      .@g      0@g      1@g      2@g      3@g      4@g      5@g      6@g      7@g      8@g      9@g      :@g      ;@g      <@g      =@r5   r(   r5   r(   )r   r   )r   r1   r2   r^   r   rL   r   r   )r   r   Z	arr_floatrM   r   r#   r#   r$   test_check_constant_float28  s    
z'TestConstant.test_check_constant_float2c             C   sZ  t jdtd}t j|dkddnd}t jdodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddd	d
ddddddddddddddddddddddd dd!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjddddddddddddddddddddg}t|| d S )NrX   )r4   rZ   r[   r   g?g333333?)r	   r   r5   r(   r   r&   rG   r0   rb   rc   r6   r   rd   r/   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rQ   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   ra   )rZ   r[   皙333333)r   r   gggggggggggggggggggggggggg333333g333333g333333g333333g333333g333333g333333g333333g333333g333333g333333g333333g333333g333333g333333g333333g333333g333333g333333g333333)r   r1   r   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_constant_float3M  s&    
z'TestConstant.test_check_constant_float3c             C   s   t jdjdd}t j|d$ddd}t jddddddddddg
ddd	dddd
dddg
ddddddddddg
ddddddddddg
ddddddddddg
ddddddd d!ddg
ddddddddddg
g}t|| d S )%NrQ   rG   r0   r5   r(   r   r   )rE   r	   r   r&   rb   rc   r6   r   rd   r/   re   rf   rg   rh   ri   rj   rk   r[   rl   rm   rn   ro   rZ   rp   rq   rr   rs   r5   r(   )r   r   )r   r1   r2   rL   r   r   )r   r   rM   r   r#   r#   r$   "test_check_constant_odd_pad_amounte  s    
z/TestConstant.test_check_constant_odd_pad_amountc             C   s   t jdjdd}t jj|d
ddd}t jddddddgddddddgddddddgddddddgddddddgg}t|| d S )Nr&   r(   r5   r   r   )rE   r	   r   r5   r(   r5   r   )r   r   r5   r(   r   r&   )r   r   )r   r1   r2   librL   r   r   )r   r   rM   r   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|j d}t jd|t jd}t|| d}t jd|t jd}t j|dd|j d}t jd|t jd}t|| d S )Nr(   r   r5   rG   )r4   r   )rE   r	   rb   r   l            l    l            l    )r   fullZuint64rL   minr   Zint64)r   Z
uint64_maxr   rM   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 )	Nr5   )r4   r   r   )	pad_widthrE   r	   r   r(   )r   )r   r   r   rL   r   )r   r   Zobj_aZobj_bZobj_cr   r#   r#   r$   test_check_object_array  s    
z$TestConstant.test_check_object_arrayc             C   s2   t jd}t j|d	d
dgdd}|jdks.td S )Nr   r   r(   r5   r   )rE   r&   )r   r   r(   )r   )r(   )r5   )r   r&   r&   )r   zerosrL   rK   AssertionError)r   r   r!   r#   r#   r$   test_pad_empty_dimension  s    
z%TestConstant.test_pad_empty_dimensionN)rA   rB   rC   r   r   r   r   r   r   r   r   r   r   r#   r#   r#   r$   r     s   r   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jd
edd ZdS )TestLinearRampc             C   sb  t jdjd}t j|dddd}t jd	d
dddddddddddddddddddddd d!d"d#d$d%d	d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddUdddddddddd&g}t||ddd d S )NrX   rY   rZ   r[   r   r&   rG   )r
   g      @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?g        g      ?g       @g      @g      @g      @g      @g       @g      "@g      $@g      &@g      (@g      *@g      ,@g      .@g      0@g      1@g      2@g      3@g      4@g      5@g      6@g      7@g      8@g      9@g      :@g      ;@g      <@g      =@g      >@g      ?@g      @@g     @@g      A@g     A@g      B@g     B@g      C@g     C@g      D@g     D@g      E@g     E@g      F@g     F@g      G@g     G@g      H@g     H@g      I@g     I@g      J@g     J@g      K@g     K@g      L@g     L@g      M@g     M@g      N@g     N@g      O@g     O@g      P@g     @P@g     P@g     P@g      Q@g     @Q@g     Q@g     Q@g      R@g     @R@g     R@g     R@g      S@g     @S@g     S@g     S@g      T@g     @T@g     T@g     T@g      U@g     @U@g     U@g     U@g      V@g     @V@g     V@g     V@g      W@g     @W@g     W@g     W@g      X@g     @X@g     X@g     X@g33333W@gffffffV@g9U@gT@g     R@g33333Q@gfffffP@g33333N@gYL@gfffffG@gLE@g33333B@g@@g     <@g7@g3@g,@gffffff#@gh㈵>)ZrtolZatol)rZ   r[   )r&   rG   )r   r1   r^   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_simple  s&    
z TestLinearRamp.test_check_simplec             C   s   t jdjddjt j}t j|d%dd&d}t jdddddddddg	dddd	d
ddd
dg	dddd
dddddg	dddddddddg	dddddddddg	ddddddd d!dg	dd"ddd#dd!d$dg	dddddddddg	g}t|| d S )'Nr[   r&   rG   r(   r   r   )rE   r
   g        g      ?g      ?g      ?g       @g      @g      @g      @g      @g      @g      @g       @g      "@g      @g      $@g      &@g      (@g      *@g      ,@g      @g      .@g      0@g      1@g      2@g      3@g      #@g      @g      !@g      @)r(   r(   )r   r   )r   r1   r2   r^   r   rL   r   r   )r   r   rM   r   r#   r#   r$   test_check_2d  s    zTestLinearRamp.test_check_2d)
exceptionsc          
   C   s   ddl m} tj|dd|ddg}tj|dddd}tj|dd|dd|d	d|dd|dd|dd|ddg}t|| d S )Nr   )Fractionr5   r(   r   r   )rE   r
   r/   r0   r&   r   )r(   r   ir9   r:   r   )Z	fractionsr   r   r   rL   r   )r   r   r   actualr   r#   r#   r$   test_object_array  s    z TestLinearRamp.test_object_arrayc             C   sz   t jt jdj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(   rG      {   r   )rE   Nr   g        r5   )r   r   r   r   )r   rL   r?   r2   r   )r   r'   r#   r#   r$   test_end_values  s
    zTestLinearRamp.test_end_valuesr4   c             C   s   t jdg|d}t j|dddd}t jdddddddg|d}t|| t jdg|d}t j|dddd}t jdddddddg|d}t|| dS )	a<  
        Check correct behavior of unsigned dtypes if there is a negative
        difference between the edge to pad and `end_values`. Check both cases
        to be independent of implementation. Test behavior for all other dtypes
        in case dtype casting interferes with complex dtypes. See gh-14191.
        r   )r4   r   r   )rE   r
   r5   r(   N)r   r   rL   r   )r   r4   r    r!   r   r#   r#   r$   test_negative_difference  s    
z'TestLinearRamp.test_negative_differenceN)rA   rB   rC   r   r   r;   rS   Zxfailr   r   r   rT   _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   sR  t jd}t j|dgd}t jddddddd	d
dddddddddddddddddddddddddddddddddddd
d	dddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdedddcdbdad`d_d^d]d\d[dZdYdXdWdVdUdTdSdRg}t|| d S )hNrX   rZ   r[   r   ro   rn   rm   rl   rk   rj   ri   rh   rg   rf   re   r/   rd   r   r6   rc   rb   r0   rG   r&   r   r(   r5   r   rp   rq   rr   rs   rQ   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   ra   )rZ   r[   )r   r1   rL   r   r   )r   r'   r_   r#   r#   r$   r     s&    

zTestReflect.test_check_simplec             C   sV  t jd}t j|d|ddd}t jd}d~ddddddddddddddddddddddddddddddddddddddddddddd
d	ddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhddidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{g}t|| d S )NrX   rZ   r[   r   odd)r   ro   rn   rm   rl   rk   rj   ri   rh   rg   rf   re   r/   rd   r   r6   rc   rb   r0   rG   r&   r   r(   r5   r   rp   rq   rr   rs   rQ   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   ra   r   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   )rZ   r[   iiiiiiiiiiiiiiiiiiiir9   r8   r:   r   )r   r1   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_odd_method  s&    

z!TestReflect.test_check_odd_methodc             C   s  dddgdddgg}t j|dd}t jdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgg}t|| d S )Nr&   rG   r0   rb   rc   r   )rG   rb   )r   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_large_pad,  s$                 &z TestReflect.test_check_large_padc             C   s  dddgg}t j|dd}t jdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgg}t|| d S )Nr&   rG   r0   rb   r   )rG   rb   )r   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_shapeC  s"                &zTestReflect.test_check_shapec             C   s:   t jdddgdd}t jdddddddg}t|| d S )Nr5   r(   r   r   )r   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_01Y  s    zTestReflect.test_check_01c          
   C   s>   t jdddgdd}t jdddddddddg	}t|| d S )Nr5   r(   r   r   )r   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_02^  s    zTestReflect.test_check_02c             C   sB   t jdddgdd}t jdddddddddddg}t|| d S )Nr5   r(   r   r&   r   )r   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_03c  s     zTestReflect.test_check_03N)
rA   rB   rC   r   r  r  r  r  r  r  r#   r#   r#   r$   r     s   r   c               @   sP   e Zd ZdZejjdeej	 ddh dd Z
ejjdej	 dd Zd	S )
TestEmptyArrayz<Check how padding behaves on arrays with an empty dimension.rE   r   r   c             C   s   d}t jt|d tjg d|d W d Q R X t jt|d tjtjdd|d W d Q R X t jt|d tjtjdd|d W d Q R X d S )NzFcan't extend empty axis 0 using modes other than 'constant' or 'empty')r7   r&   )rE   r   r   r5   )r   r   r5   r   )r  r  )r;   r<   r=   r   rL   Zndarrayr   )r   rE   r7   r#   r#   r$   r   l  s     z'TestEmptyArray.test_pad_empty_dimensionc             C   s(   t jt jdd|d}|jdks$td S )Nr(   r   r   r5   )rE   rc   r&   )r(   r   r(   r   r   r5   )r  r  r  )rc   r   r&   )r   rL   r?   rK   r   )r   rE   r!   r#   r#   r$   test_pad_non_empty_dimension{  s    z+TestEmptyArray.test_pad_non_empty_dimensionN)rA   rB   rC   __doc__r;   rS   rT   sortedrU   rV   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   sR  t jd}t j|dgd}t jdddddd	d
ddddddddddddddddddddddddddddddddddddd
d	dddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdfdedddcdbdad`d_d^d]d\d[dZdYdXdWdVdUdTdSg}t|| d S )hNrX   rZ   r[   r   ro   rn   rm   rl   rk   rj   ri   rh   rg   rf   re   r/   rd   r   r6   rc   rb   r0   rG   r&   r   r(   r5   r   rp   rq   rr   rs   rQ   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   ra   )rZ   r[   )r   r1   rL   r   r   )r   r'   r_   r#   r#   r$   r     s&    

zTestSymmetric.test_check_simplec             C   sV  t jd}t j|d{ddd}t jd|d}d~dddddddddddddddddddddddddddddddddddddddddddd
d	ddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdhddidjdkdldmdndodpdqdrdsdtdudvdwdxdydzg}t|| d S )NrX   rZ   r[   r   r   )r   ro   rn   rm   rl   rk   rj   ri   rh   rg   rf   re   r/   rd   r   r6   rc   rb   r0   rG   r&   r   r(   r5   r   rp   rq   rr   rs   rQ   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   ra   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  )rZ   r[   iiiiiiiiiiiiiiiiiiir  r9   r8   r:   r   )r   r1   rL   r   r   )r   r'   r_   r#   r#   r$   r    s&    

z#TestSymmetric.test_check_odd_methodc             C   s  dddgdddgg}t j|dd}t jdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgg}t|| d S )Nr&   rG   r0   rb   rc   r   )rG   rb   )r   rL   r   r   )r   r'   r_   r#   r#   r$   r    s$                 &z"TestSymmetric.test_check_large_padc             C   s  dddgdddgg}t j|dddd}t jdddddddd
d
d	dddddgdddddddd
d
d	dddddgd dddd
d
d	ddddddddgd!dddd
d
d	ddddddddgdd
d
d	dddddddddddgdd
d
d	dddddddddddgd	ddddddddddddddgd	ddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgg}t|| d S )"Nr&   rG   r0   rb   rc   r   r   )r   r   r(   r5   r   r6   r   rd   r/   re   rf   rg   rh   ri   rj   )rG   rb   r8   r:   r:   r   r8   r:   r:   r   r   r   )r   rL   r   r   )r   r'   r_   r#   r#   r$   test_check_large_pad_odd  s$                 &z&TestSymmetric.test_check_large_pad_oddc             C   s  dddgg}t j|dd}t jdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgdddddddddddddddgg}t|| d S )Nr&   rG   r0   rb   r   )rG   rb   )r   rL   r   r   )r   r'   r_   r#   r#   r$   r    s"                &zTestSymmetric.test_check_shapec             C   s:   t jdddgdd}t jdddddddg}t|| d S )Nr5   r(   r   r   )r   rL   r   r   )r   r'   r_   r#   r#   r$   r    s    zTestSymmetric.test_check_01c          
   C   s>   t jdddgdd}t jdddddddddg	}t|| d S )Nr5   r(   r   r   )r   rL   r   r   )r   r'   r_   r#   r#   r$   r    s    zTestSymmetric.test_check_02c             C   sJ   t jdddgdd}t jdddddddddddddddg}t|| d S )Nr5   r(   r   r0   r   )r   rL   r   r   )r   r'   r_   r#   r#   r$   r    s    (zTestSymmetric.test_check_03N)rA   rB   rC   r   r  r  r"  r  r  r  r  r#   r#   r#   r$   r!    s   r!  c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestWrapc             C   sR  t jd}t j|dgd}t jddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1dd2d3d4d5dd6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1g}t|| d S )hNrX   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   ra   r   r5   r(   r   r&   rG   r0   rb   rc   r6   r   rd   r/   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rQ   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   )rZ   r[   )r   r1   rL   r   r   )r   r'   r_   r#   r#   r$   r     s&    

zTestWrap.test_check_simplec          3   C   s  t jd}t j|d}t j|dd}t jddddddddddddddddddddddddddgd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dgddddddddddddddddddddddddddgddddddddddddddddddddddddddgd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dgddddddddddddddddddddddddddgddddddddddddddddddddddddddgd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dgddddddddddddddddddddddddddgddddddddddddddddddddddddddgd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dgddddddddddddddddddddddddddgddddddddddddddddddddddddddgd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dgddddddddddddddddddddddddddgddddddddddddddddddddddddddgd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dgddddddddddddddddddddddddddgddddddddddddddddddddddddddgd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dgddddddddddddddddddddddddddgddddddddddddddddddddddddddgd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dd
dd	dgddddddddddddddddddddddddddgddddddddddddddddddddddddddgg}t|| d S )Nr/   r   r&   r   r   rd   rc   r6   r(   r   r5   r0   rb   rG   )r   r&   )r   r/   )r   r1   r2   rL   r   r   )r   r'   r_   r#   r#   r$   r     sn    
"""""""""""""""""""""""""zTestWrap.test_check_large_padc          
   C   s>   t jdddgdd}t jdddddddddg	}t|| d S )Nr5   r(   r   r   )r   rL   r   r   )r   r'   r_   r#   r#   r$   r  \  s    zTestWrap.test_check_01c             C   sB   t jdddgdd}t jdddddddddddg}t|| d S )Nr5   r(   r   r&   r   )r   rL   r   r   )r   r'   r_   r#   r#   r$   r  a  s     zTestWrap.test_check_02c             C   s8   t jd}t j|ddd}t||d dd d	f  d S )
Nr   rG   r   r   )rE   )r   rG   )r   rG   r  r  )r   r?   rL   r   )r   r'   r_   r#   r#   r$   test_pad_with_zerof  s    
zTestWrap.test_pad_with_zeroc             C   sx   t jd}t j|ddd}tt j||||f dd | t j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.
        rG   r/   r   r   )rE   r   N)r/   r   )r   r/   r8   )r   r1   rL   r   Zr_)r   r'   r_   r#   r#   r$   test_repeated_wrappingk  s    
 
zTestWrap.test_repeated_wrappingN)	rA   rB   rC   r   r  r  r  r$  r%  r#   r#   r#   r$   r#    s   <r#  c               @   s   e Zd Zdd Zdd ZdS )TestEdgec             C   s   t jd}t j|d}t j|dd}t jddddddddgddddddddgddddddddgddddddddgd	d	d	d	d
dddgddddddddgddddddddgddddddddgddddddddgg	}t|| d S )Nr/   r&   r   r(   r   r   r5   rG   r0   rb   rc   r6   r   rd   )r&   r   r(   r   r   r(   )r'  r(  )r   r1   r2   rL   r   r   )r   r'   r_   r#   r#   r$   r   z  s    
zTestEdge.test_check_simplec             C   s   t jdddg}t j|d
d}t jddddddg}t|| t jdddgdddgg}t j|dd}t j|dd}t|| t jdjddd}t j|dd}t j|dd}t|| d S )Nr5   r(   r   r   r&   rG   r0   ro   r5   r(   )r)  r5   r(   )r*  r5   r(   r5   r(   )r+  r,  r5   r(   )r-  r5   r(   r5   r(   r5   r(   )r.  r/  r0  )r   r   rL   r   r1   r2   )r   r'   Zpaddedr   r#   r#   r$   test_check_width_shape_1_2  s    

z#TestEdge.test_check_width_shape_1_2N)rA   rB   rC   r   r1  r#   r#   r#   r$   r&  y  s   r&  c               @   s   e Zd Zdd Zdd ZdS )	TestEmptyc             C   sR   t jdjdd}t j|ddgdd}|jdks4tt||ddddf  d S )Nro   r&   r0   r(   r   r5   r   )rE   r6   r   )r(   r   )r   r5   )r6   r   r8   r   )r   r1   r2   rL   rK   r   r   )r   r   r!   r#   r#   r$   test_simple  s    zTestEmpty.test_simplec             C   s2   t jd}t j|d	d
dgdd}|jdks.td S )Nr   r   r(   r5   r   )rE   r&   )r   r   r(   )r   )r(   )r5   )r   r&   r&   )r   r   rL   rK   r   )r   r   r!   r#   r#   r$   r     s    
z"TestEmpty.test_pad_empty_dimensionN)rA   rB   rC   r3  r   r#   r#   r#   r$   r2    s   r2  c              C   s   dd } t jdjdd}t j|d| }t jdddddddgdddddddgdddddddgdddd	d
ddgdddddddgdddddddgg}t|| d S )Nc             S   s&   d| d |d < d| |d  d < d S )Nr   r   r5   r#   )Zvectorr   Ziaxiskwargsr#   r#   r$   _padwithtens  s    z6test_legacy_vector_functionality.<locals>._padwithtensr0   r(   r   r   r   r5   r&   rG   )r   r1   r2   rL   r   r   )r5  r'   r_   r#   r#   r$    test_legacy_vector_functionality  s    r6  c              C   s4   t jdgddd} t jdddddg}t| | d S )Nr5   r(   r   )rE   r   )r   rL   r   r   )r'   r_   r#   r#   r$   test_unicode_mode  s    r7  rE   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&   r   )Z
fill_valuer(   r6   rc   )rE   )r&   r   r(   r   r   r(   )r8  r9  )r6   rc   )r   r   r   rL   )rE   r'   rN   r_   r#   r#   r$   test_object_input  s    r:  c               @   s
  e Zd Zejjddd!d%d(gejjd
ej dd Zejjd
ej dd Z	ejjdd)d+d-d1d5gejjd
ej dd Z
ejjdd6d7d8e dfd9d<efedd=dfdBgejjd
ej dd Zdd Zejjdd	dCdFgejjd
ej dd ZdS )GTestPadWidthr   r&   rG   r0   rb   r5   r(   r   r   rE   c             C   s@   t jdjd}d}tjt|d t j||| W d Q R X d S )NrQ   r0   rG   z(operands could not be broadcast together)r7   )r0   rG   )r   r1   r2   r;   r<   r=   rL   )r   r   rE   r   r7   r#   r#   r$   test_misshaped_pad_width  s    z%TestPadWidth.test_misshaped_pad_widthc             C   s@   t jdjd}d}tjt|d t j|d| W d Q R X d S )NrQ   r0   rG   zDinput operand has more dimensions than allowed by the axis remapping)r7   r   r&   r   r5   r(   )r0   rG   r   r&   rG   r=  r>  r?  r   r5   r(   rA  rB  rC  )r@  rD  )r   r1   r2   r;   r<   r=   rL   )r   rE   r   r7   r#   r#   r$   test_misshaped_pad_width_2  s    z'TestPadWidth.test_misshaped_pad_width_2c             C   s@   t jdjd}d}tjt|d t j||| W d Q R X d S )NrQ   r0   rG   z#index can't contain negative values)r7   )r0   rG   )r   r1   r2   r;   r<   r=   rL   )r   r   rE   r   r7   r#   r#   r$   test_negative_pad_width  s    z$TestPadWidth.test_negative_pad_widthzpad_width, dtype3Nword333333@g @c             C   s   t jdjd}d}|d k	rPtjt|d t j|t j||d| W d Q R X nVtjt|d t j||| W d Q R X tjt|d t j|t j|| W d Q R X d S )NrQ   r0   rG   z%`pad_width` must be of integral type.)r7   )r4   )r0   rG   )r   r1   r2   r;   r<   	TypeErrorrL   r   )r   r   r4   rE   r   r7   r#   r#   r$   test_bad_type  s    $zTestPadWidth.test_bad_typec             C   s   t jd}t j|d}t j|t jdd}t jddddddddgddddddddgddddddddgddddddddgd	d	d	d	d
dddgddddddddgddddddddgddddddddgddddddddgg	}t|| d S )Nr/   r&   r   r(   r   r   r5   rG   r0   rb   rc   r6   r   rd   )r&   r   r(   r   r   r(   )rL  rM  )r   r1   r2   rL   r   r   )r   r'   r_   r#   r#   r$   test_pad_width_as_ndarray  s    
z&TestPadWidth.test_pad_width_as_ndarrayc             C   s,   t jdjdd}t|t j|||d d S )NrQ   r0   rG   )rE   )r   r1   r2   r   rL   )r   r   rE   r   r#   r#   r$   test_zero_pad_width  s    z TestPadWidth.test_zero_pad_width)r&   rG   r0   rb   r5   r(   r   )rP  rQ  rR  r5   r(   r   r&   rG   r0   )rS  rT  rU  r   r&   rG   r   r5   r(   )rV  rW  r:   r:   )r:   r   )r   r   rG   r(   r:   r:   r   )rX  rY  r9   r9   r(   )rZ  r[  )rG  N)rH  N)NN)rI  Nr(   r   r&   r   r(   )r\  r]  r    r^  r   r   r(   r_  r`  )ra  N)r   r   r   r   r   r   )rb  rc  )rA   rB   rC   r;   rS   rT   rU   rV   r<  rE  rF  r   r   rK  rN  rO  r#   r#   r#   r$   r;    s.   r;  c             C   s   t |  }i }x"t j D ]}||kr|j| qW tjdddgd| f| xT|j D ]H\}}dj| }tjt	|d" tjdddgd| f||i W dQ R X qRW dS )z1Test behavior of pad's kwargs for the given mode.r5   r(   r   z+unsupported keyword arguments for mode '{}')r7   N)
rU   valuesupdater   rL   itemsformatr;   r<   r=   )rE   allowednot_allowedr4  keyvaluer7   r#   r#   r$   test_kwargs!  s    
rl  c              C   s0   t jddg} tt j| dddddddg d S )Nr5   r(   r   )r   r   r   rL   )r   r#   r#   r$   test_constant_zero_default2  s    rm  r5   constTFc             C   s>   dj | }tjt|d tjdddgd| d W d Q R X d S )Nzmode '{}' is not supported)r7   r5   r(   r   r&   )rE   )rg  r;   r<   r=   r   rL   )rE   r7   r#   r#   r$   test_unsupported_mode7  s    
ro  c             C   s`   t jdjddd d dd d df }t j|d| }|jd	ksBtt|dd
ddf | d S )Nro   r&   r0   r(   r   rb   rc   )r(   r   )rb   rc   r8   r8   )r   r1   r2   rL   rK   r   r   )rE   r   r!   r#   r#   r$   test_non_contiguous_array>  s    &rp  c             C   sP   t jd	dd}t j|d| jd s&tt jd
dd}t j|d| jd sLtdS )z5Test if C and F order is preserved for all pad modes.rG   r   C)orderZC_CONTIGUOUSFZF_CONTIGUOUSN)rG   r   )rG   r   )r   r?   rL   flagsr   )rE   r    r#   r#   r$   test_memory_layout_persistenceF  s    ru  r4   c             C   s0   t jd| d}t j|d|d}|j| ks,td S )Nr   r(   r5   )r4   )rE   )r   r(   r5   )r   r   rL   r4   r   )r4   rE   r   r!   r#   r#   r$   test_dtype_persistenceO  s    rv  )&r  r;   Znumpyr   Znumpy.testingr   r   r   Znumpy.lib.arraypadr   Zsctypesr   rU   r   rD   rW   r   r   r   r  r!  r#  r&  r2  r6  r7  rS   rT   r:  r;  rV   rl  rm  r   ro  rp  ru  rv  r#   r#   r#   r$   <module>   sT   (S  l 4Un r'	Q$	