a
    äze°Ī  ć                   @   s¼  d Z ddlZddlmZ ddlmZ ddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZ e d”jZG dd dejZG d	d
 d
ejZdZG dd dejZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'd Z(d!Z)d"Z*d#Z+G d$d% d%ejZ,G d&d' d'Z-G d(d) d)e-Z.G d*d+ d+e.ejZ/G d,d- d-e-Z0G d.d/ d/e0Z1G d0d1 d1Z2G d2d3 d3e1Z3G d4d5 d5e1Z4G d6d7 d7e3ejZ5G d8d9 d9e4ejZ6G d:d; d;e3ejZ7G d<d= d=e4ejZ8G d>d? d?e3ejZ9G d@dA dAe4ejZ:G dBdC dCe3ejZ;G dDdE dEe4ejZ<G dFdG dGe3ejZ=G dHdI dIe4ejZ>G dJdK dKe0Z?G dLdM dMe?ejZ@G dNdO dOe?ejZAG dPdQ dQejZBeCdRkrøe D”  dS )Sz(Test the arraymodule.
   Roger E. Masse
é    N)Śsupport)Ś_2G)Ś_array_reconstructorŚuc                   @   s   e Zd ZdS )ŚArraySubclassN)Ś__name__Ś
__module__Ś__qualname__© r
   r
   ś%/usr/lib/python3.9/test/test_array.pyr      s   r   c                   @   s   e Zd ZdddZdS )ŚArraySubclassWithKwargsNc                 C   s   t j  | ” d S ©N)ŚarrayŚ__init__)ŚselfŚtypecodeŚnewargr
   r
   r   r      s    z ArraySubclassWithKwargs.__init__)N)r   r   r	   r   r
   r
   r
   r   r      s   r   ZubBhHiIlLfdqQc                   @   s   e Zd Zdd Zdd ZdS )ŚMiscTestc                 C   sD   |   ttj” | j ttjdd |   ttjd” |   ttjd” d S )Né*   )ZspamŚxxŚx)ŚassertRaisesŚ	TypeErrorr   Ś
ValueError©r   r
   r
   r   Śtest_bad_constructor   s    zMiscTest.test_bad_constructorc                 C   sj   t   d”}||d d < |  t|d” |  t|| d” |  t|d d” ||7 }|  t|d” d S )NŚBr   é   )r   ŚassertEqualŚlen©r   Śar
   r
   r   Ś
test_empty%   s    
zMiscTest.test_emptyN)r   r   r	   r   r"   r
   r
   r
   r   r      s   r   é’’’’é   é   r   é   é   é   é   é   é	   é
   é   é   é   é   é   é   é   é   é   é   é   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )ŚArrayReconstructorTestc                 C   s°   |   ttdddd” |   tttddd” |   tttjddd” |   tttjddd” |   tttjddd” |   tttjdtd” |   tttjddd” |   tttjddd	” d S )
NŚ Śbr   ó    ś?é   Śdr2   ó   a)r   r   Śarray_reconstructorŚstrr   r   ŚUNKNOWN_FORMATr   r
   r
   r   Ś
test_errorN   s0    ’’
’
’
’
’
’
’z!ArrayReconstructorTest.test_errorc                 C   s8  g d¢t dg d¢fg d¢tdg d¢fg d¢tdg d	¢fg d¢td
g d	¢fg d¢tdg d¢fg d¢tdg d¢fddgtdg d¢fddgtdg d¢fddgtdg d¢fddgt	dg d¢fdgt
dg d¢fdgtdg d¢fdgtdg d¢fdgtdg d¢fdgt
dg d¢fdgtdg d¢fdgtdg d¢fdgtdg d¢fdgtd d!td"td#d$gfdgtd%d!td"td#d$gfd&gtd'd(td"td#d$gfd&gtd)d(td"td#d$gff}|D ]}|\}}}}tj|g|¢R  }|D ]\}zt ||”}	W n ty    Y qŅY n0 ttj|||}
| j|	|
d* |	|
|”d+ qŅq¬d S ),N)r   ŚHŚIŚLz=BBBB)é   é   r   é’   )r:   ŚhŚiŚlz=bbb)i’’’rH   r   )rD   rE   rF   z<HHHH)i   é’  r   i’’  z>HHHH)rJ   rK   rL   z<hhh)i ’’rM   r   z>hhhrE   rF   z<IIII)l        é’’’r   l   ’’ z>IIIIrK   rL   z<iii)i   rN   r   z>iiiz<QQQQz>QQQQz<qqqz>qqq)l            ģ   ’’’’ r   l   ’’’’ )lū’’’         rO   r   Śfz<ffffg   @ ąoAŚinfz-infg       z>ffffr>   z<ddddg’?Cz>ddddś{0!r} != {1!r}; testcase={2!r}©Śmsg)ŚUNSIGNED_INT8ŚSIGNED_INT8ŚUNSIGNED_INT16_LEŚUNSIGNED_INT16_BEŚSIGNED_INT16_LEŚSIGNED_INT16_BEŚUNSIGNED_INT32_LEŚUNSIGNED_INT32_BEŚSIGNED_INT32_LEŚSIGNED_INT32_BEŚUNSIGNED_INT64_LEŚUNSIGNED_INT64_BEŚSIGNED_INT64_LEŚSIGNED_INT64_BEŚIEEE_754_FLOAT_LEŚfloatŚIEEE_754_FLOAT_BEŚIEEE_754_DOUBLE_LEŚIEEE_754_DOUBLE_BEŚstructŚpackr   ŚOverflowErrorr@   r   Śformat)r   Ś	testcasesŚtestcaseZvalid_typecodesŚmformat_codeZ
struct_fmtŚvaluesZarraystrr   r!   r:   r
   r
   r   Śtest_numbers`   s¢    
’
’
’
’
’
’
’
’
’
’’’’’’’’’’’’’Ņ1
’’z#ArrayReconstructorTest.test_numbersc              	   C   sr   d}t dftdftdftdff}|D ]H}|\}}t d|”}ttjd|| |”}| j||d |||”d q$d S )	Nu   Bonne JournĆ©e š š z	UTF-16-LEz	UTF-16-BEz	UTF-32-LEz	UTF-32-BEr   rR   rS   )	ŚUTF16_LEŚUTF16_BEŚUTF32_LEŚUTF32_BEr   r@   Śencoder   rk   )r   Zteststrrl   rm   rn   Śencodingr!   r:   r
   r
   r   Śtest_unicode   s    ü’’z#ArrayReconstructorTest.test_unicodeN)r   r   r	   rC   rp   rw   r
   r
   r
   r   r8   L   s   ?r8   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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/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWdX Z.e/ 0e1e2dYdZ”d[d\ Z3d]d^ Z4d_d` Z5e6j7dadb Z8e6j7dcdd Z9dedf Z:e6j7dgdh Z;didj Z<dkS )lŚBaseTestc                 C   s   |   ||” d S r   )r   ©r   Zentry1Zentry2r
   r
   r   ŚassertEntryEqual¹   s    zBaseTest.assertEntryEqualc                 C   s   t t  | j”d tt   S )Nr$   )Ś	typecodesŚindexr   r   r   r
   r
   r   Śbadtypecode¼   s    zBaseTest.badtypecodec                 C   sD   t   | j”}|  |j| j” |  |j| j” |  tt j | jd ” d S r   )r   r   r   ZassertGreaterEqualŚitemsizeŚminitemsizer   r   r    r
   r
   r   Śtest_constructorĄ   s    zBaseTest.test_constructorc                 C   sV   t   | j”}| | jd ” |  t|d” t   | j| j”}|  t|t| j” d S ©Nr   r$   )r   r   ŚappendŚexampler   r   r    r
   r
   r   Śtest_lenĘ   s
    zBaseTest.test_lenc                 C   s|   t   | j| j”}|  t|jd” | ” }|  |t” |  t	|d” |  |d t
” |  |d t
” |  |d t	|” d S )Nr   r%   r   r$   )r   r   r   r   r   Śbuffer_infoZassertIsInstanceŚtupler   r   Śint)r   r!   Zbir
   r
   r   Śtest_buffer_infoĪ   s    zBaseTest.test_buffer_infoc                 C   s   | j dkrd}n| j}t | j |”}|  t|jd” |jdv rt | j |”}| ”  |jdkrl|  ||” n|  ||” | ”  |  ||” d S )Nr   u   ōr   ©r$   r%   r&   r*   r$   )	r   r   r   r   r   Śbyteswapr~   r   ŚassertNotEqual)r   r   r!   r:   r
   r
   r   Śtest_byteswapŲ   s    


zBaseTest.test_byteswapc                 C   sF   dd l }t | j| j”}|  |”}|  t|t|” |  ||” d S ©Nr   )Ścopyr   r   r   r   Śidr   ©r   r   r!   r:   r
   r
   r   Ś	test_copyé   s
    
zBaseTest.test_copyc                 C   sF   dd l }t | j| j”}| |”}|  t|t|” |  ||” d S r   )r   r   r   r   Śdeepcopyr   r   r   r   r
   r
   r   Śtest_deepcopyš   s
    
zBaseTest.test_deepcopyc                 C   sf   t   | j| j”}tdD ]}|  | |”d t j ” qtdtjd D ]}|  | |”d t” qFd S )Nr   r   r$   )	r   r   r   ŚrangeŚassertIsŚ__reduce_ex__ŚpickleŚHIGHEST_PROTOCOLr@   )r   r!   Śprotocolr
   r
   r   Śtest_reduce_ex÷   s
    zBaseTest.test_reduce_exc                 C   sÄ   t tjd D ]°}t | j| j”}t t ||””}|  t	|t	|” |  
||” t| j| j}d|_t t ||””}|  t	|t	|” |  
||” |  
|j|j” |  
t|t|” qd S ©Nr$   r,   )r   r   r   r   r   r   ŚloadsŚdumpsr   r   r   r   r   Śtype©r   r   r!   r:   r
   r
   r   Śtest_picklež   s    zBaseTest.test_picklec                 C   s¼   t tjd D ]Ø}t | j”}t t ||””}|  t|t|” |  	||” t
| j}d|_t t ||””}|  t|t|” |  	||” |  	|j|j” |  	t|t|” qd S r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r
   r   Śtest_pickle_for_empty_array  s    
z$BaseTest.test_pickle_for_empty_arrayc           
      C   sØ  t   | j| j”}t|}|d d d }ttjd D ]l}t|}t ||f|”}t 	|”\}}| 
|” |  t|t|” |  t||| ” t| t ||f|”}t 	|”\}}| 
|” |  t|t|” |  t||dd  | ” tdt|D ]}	t| q t ||f|”}t 	|”\}}| 
|” |  t|t|” |  t||” |  tt|” t ||f|”}t 	|”\}}| 
|” |  t|g ” q4d S )Nr#   r$   )r   r   r   Ślistr   r   r   Śiterr   r   Śfromlistr   r   Śnextr   r   ŚStopIteration)
r   ZorigŚdataZdata2ŚprotoZitorigr>   Śitr!   rK   r
   r
   r   Śtest_iterator_pickle  s8    



zBaseTest.test_iterator_picklec                 C   s   t   | j| j”}|  t|t| j” t|}t|}|D ]}t| q:| | j” |  t|g ” |  t|| jg” |  t|t| j| jg ” d S r   )	r   r   r   r   r¢   r£   r„   r   Śoutside)r   r!   ZexhitZempitr   r
   r
   r   Śtest_exhausted_iteratorA  s    
z BaseTest.test_exhausted_iteratorc              
   C   sr  t   | j| j”}| d| jd ” |  t|dt| j ” |  |d |d ” |  t|j” |  t|jd ” |  t|jdd ” t   | j| j”}| d| jd ” |  |t   | j| jd d | jd d  | jdd   ”” t   | j| j”}| d| jd ” |  |t   | j| jd d | j ”” t   | j| j”}| d| jd ” |  |t   | j| j| jd d  ”” d S )Nr   r$   r#   éü’’éč  )r   r   r   Śinsertr   r   r   r   r    r
   r
   r   Śtest_insertM  s8    (žžžžzBaseTest.test_insertc              	   C   s  t   | jd| j ”}|  t|j” t tj” t	tjd}z¼| |” | 
”  t   | j”}t	tjd}|  t|j” | |t| j” |  |t   | j| j”” |  ||” |  t|j|t| jd ” |  ||” | 
”  W |jsź| 
”  t tj” n|js| 
”  t tj” 0 d S )Nr%   ŚwbŚrbr$   )r   r   r   r   r   Śtofiler   ŚunlinkŚTESTFNŚopenŚcloseŚfromfiler   r   r   ŚEOFErrorŚclosed©r   r!   rP   r:   r
   r
   r   Śtest_tofromfilen  s,    

žzBaseTest.test_tofromfilec              	   C   sd   t   | j”}ttjd}z0|  t|j|t| j	” W | 
”  t tj” n| 
”  t tj” 0 d S )Nr±   )r   r   r¶   r   rµ   r   ŚOSErrorrø   r   r   r·   r“   )r   r!   rP   r
   r
   r   Śtest_fromfile_ioerror  s    ’zBaseTest.test_fromfile_ioerrorc              	   C   sę   t   | jd| j ”}ttjd}z¤| |” | ”  t   | j”}ttjd}| |t	| j” |  
|t   | j| j”” |  ||” | |t	| j” |  
||” | ”  W |jsø| ”  t tj” n|jsŌ| ”  t tj” 0 d S )Nr%   r±   r²   )r   r   r   r¶   r   rµ   Śwriter·   rø   r   r   r   rŗ   r“   r»   r
   r
   r   Śtest_filewrite  s&    

žzBaseTest.test_filewritec                 C   s~   t   | jd| j ”}t   | j”}|  t|jd” |  t|j” |  t|jd” |  t|jd g” | | ” ” |  ||” d S )Nr%   r   )r   r   r   r   r   Śtolistr¤   r   ©r   r!   r:   r
   r
   r   Śtest_tofromlist¢  s    zBaseTest.test_tofromlistc                 C   sØ   t   | jd| j ”}t   | j”}|  t|jd” |  t|j” |  t|jd” | | ” ” t   | jt| ” ”}|  ||” |  ||” |j	dkr¤|  t
|jd” d S )Nr%   r   r$   ó   x)r   r   r   r   r   ŚtobytesŚ	frombytesŚ	bytearrayr   r~   r   )r   r!   r:   Ścr
   r
   r   Śtest_tofrombytes¬  s    
zBaseTest.test_tofrombytesc                 C   s.   t   | j| j”}t   | j|”}|  ||” d S r   ©r   r   r   r   rĀ   r
   r
   r   Śtest_fromarray¹  s    zBaseTest.test_fromarrayc                 C   sV   t   | jd| j ”}|  |tt|dt j i” t   | j”}|  t|d| j ” d S )Nr%   r   zarray('%s'))r   r   r   r   ŚevalŚreprr    r
   r
   r   Ś	test_repr¾  s    zBaseTest.test_reprc                 C   s    t   | jd| j ”}t| d S ©Nr%   )r   r   r   rA   r    r
   r
   r   Śtest_strÅ  s    zBaseTest.test_strc                 C   sģ  t   | j| j”}|  |dkd” |  |dkd” |  ||kd” |  ||kd” |  ||k d” |  ||kd” |  ||kd” |  ||kd” t   | j| j”}t   | j| j”}|  |d| kd” |  |d| kd” |  |d| k d” |  |d| kd” |  |d| kd” |  |d| kd” |  ||kd” |  ||kd” |  ||k d” |  ||kd” |  ||kd” |  ||kd” |  ||kd” |  ||kd” |  ||k d” |  ||kd” |  ||kd” |  ||kd” d S )Nr   FTr%   )r   r   r   r   ŚsmallerexampleŚbiggerexample)r   r!   ZalŚabr
   r
   r   Śtest_cmpÉ  s:    zBaseTest.test_cmpc                 C   s   t   | j| j”t   | j| jd d d ” }|  |t   | j| j| jd d d  ”” t   |  ” ”}|  t|j|” |  t|jd” d S )Nr#   Śbad)r   r   r   r   r}   r   r   Ś__add__rĀ   r
   r
   r   Śtest_addķ  s    ’žzBaseTest.test_addc              
   C   sÖ   t   | j| jd d d ”}|}|t   | jd| j ”7 }|  ||” |  |t   | j| jd d d d| j  ”” t   | j| j”}||7 }|  |t   | j| j| j ”” t   |  ” ”}|  t|j|” |  t|j	d” d S )Nr#   r%   rÕ   )
r   r   r   r   r   r}   r   r   rÖ   Ś__iadd__rĀ   r
   r
   r   Ś	test_iaddś  s"    "žžzBaseTest.test_iaddc                 C   s   dt   | j| j” }|  |t   | jd| j ”” t   | j| j”d }|  |t   | j| jd ”” dt   | j| j” }|  |t   | j”” dt   | j| j” }|  |t   | j”” dt   | j| jd d ” }|  |t   | j|d gd ”” |  t|jd” d S )Nr'   r   r#   r$   rÕ   )r   r   r   r   r   r   Ś__mul__r    r
   r
   r   Śtest_mul  s4    žž
ž
žžzBaseTest.test_mulc                 C   sü   t   | j| j”}|}|d9 }|  ||” |  |t   | jd| j ”” |d9 }|  ||” |  |t   | j”” |d9 }|  ||” |  |t   | j”” |d9 }|  ||” |  |t   | j”” t   | j| j”}|d9 }|  |t   | j”” |  t|jd” d S )Nr'   r   r®   r#   rÕ   )r   r   r   r   r   r   r   Ś__imul__rĀ   r
   r
   r   Ś	test_imul0  s*    žzBaseTest.test_imulc                 C   sź   t   | j| j”}|  |d | jd ” |  |d | jd ” |  |d | jd ” |  |d | jd ” |  |t| jd  | jd ” |  |t| j  | jd ” |  t|j” |  t|jt| j” |  t|jt| j d ” d S )Nr   r#   r$   )	r   r   r   rz   r   r   r   Ś__getitem__Ś
IndexErrorr    r
   r
   r   Śtest_getitemM  s     zBaseTest.test_getitemc                 C   sØ  t   | j| j”}|d |d< |  |d |d ” t   | j| j”}|d |d< |  |d |d ” t   | j| j”}|d |d< |  |d |d ” t   | j| j”}|d |d< |  |d |d ” t   | j| j”}|d |t| jd < |  |d |d ” t   | j| j”}|d |t| j < |  |d |d ” |  t|j” |  t|jd ” |  t|jdd ” |  t|jt| j| jd ” |  t|jt| j d | jd ” d S )Nr#   r   r$   )	r   r   r   rz   r   r   r   Ś__setitem__rß   r    r
   r
   r   Śtest_setitemY  s>    żżzBaseTest.test_setitemc              	   C   s>  t   | j| j”}|d= |  |t   | j| jdd  ”” t   | j| j”}|d= |  |t   | j| jd d ”” t   | j| j”}|t| jd = |  |t   | j| jd d ”” t   | j| j”}|t| j = |  |t   | j| jdd  ”” |  t|j” |  t|jd ” |  t|jt| j” |  t|jt| j d ” d S )Nr   r$   r#   )	r   r   r   r   r   r   r   Ś__delitem__rß   r    r
   r
   r   Śtest_delitem  s8    žžžžzBaseTest.test_delitemc              	   C   s  t   | j| j”}|  |d d  |” |  |dd  t   | j| jdd  ”” |  |d d t   | j| jd d ”” |  |d d t   | j| jd d ”” |  |dd  t   | j| jdd  ”” |  |dd t   | j”” |  |dd t   | j”” |  |dd  t   | j”” |  |dd  |” |  |d d |” |  |d d t   | j”” |  |dd |” |  |dd t   | j”” d S )Nr$   r#   r%   r®   r­   éŠ  rŹ   r    r
   r
   r   Śtest_getslice¢  sR    
ž
ž
ž
ž

ž

ž

ž

ž

žzBaseTest.test_getslicec                 C   s~   t   | j| j”}dd ddddtjdddd	f}|D ]H}|D ]>}|dd  D ],}|  t|||| t|||| ” qHq8q0d S ©
Nr   r$   r   r5   éd   r#   éž’’’iį’’’é’’’)r   r   r   ŚsysŚmaxsizer   r¢   )r   r!   ŚindicesŚstartŚstopŚstepr
   r
   r   Śtest_extended_getsliceŌ  s    ’zBaseTest.test_extended_getslicec              
   C   s:  t   | j| j”}||d d< |  |t   | j| j| jdd   ”” t   | j| j”}||d d< |  |t   | j| j| jdd   ”” t   | j| j”}||dd < |  |t   | j| jd d | j ”” t   | j| j”}||dd < |  |t   | j| jd d | j ”” t   | j| j”}||dd< |  |t   | j| jd d | j | jdd   ”” t   | j| j”}||dd < |  |t   | jd| j ”” t   | j| j”}||dd < |  |t   | j| j”” t   | j| j”}||d d< |  |t   | j| j”” t   | j| j”}||d d< |  |t   | jd| j ”” t   | j| j”}||dd< |  |t   | j| jd d | j | jdd   ”” t   | j| j”}||dd< |  |t   | jd| j ”” t   | j| j”}|  t|jtddd ” |  t|jtddd ” t   |  ” ”}|  t|jtdd|” |  t|jtdd|” d S )Nr$   r#   r®   r%   r­   r   rå   )	r   r   r   r   r   r   rį   Śslicer}   rĀ   r
   r
   r   Śtest_setsliceą  s    žžžž žžžžžž*žžzBaseTest.test_setslicec                 C   sŽ   dd ddddt jdddd	f}|D ]ø}|D ]®}|dd  D ]}t | j| j”}t|}|||| }| ”  |||||< t | j|”||||< |  |t | j|”” ||||= ||||= |  |t | j|”” q8q(q d S rē   )rė   rģ   r   r   r   r¢   Śreverser   )r   rķ   rī   rļ   rš   r!   rF   r§   r
   r
   r   Śtest_extended_set_del_slice9  s    z$BaseTest.test_extended_set_del_slicec                 C   sn   d| j  }t | j|”}|  t|j” |D ]}|  | |”| |”” q*|  t|jd ” |  t|j| j” d S rĻ   )	r   r   r   r   r   r|   r   r   r«   ©r   r   r!   r   r
   r
   r   Ś
test_indexM  s    
zBaseTest.test_indexc                 C   sr   d| j  }t | j|”}|  t|j” |D ]}|  | |”| |”” q*|  | | j”d” |  | d ”d” d S )Nr%   r   )r   r   r   r   r   Ścountr   r«   rö   r
   r
   r   Ś
test_countV  s    
zBaseTest.test_countc                 C   s    | j D ]b}d| j  }t | j|”}| |”}|d | ||d d   }| |” |  |t | j|”” qt | j| j ”}|  t|j| j” |  t|jd ” d S )Nr%   r$   )	r   r   r   r|   Śremover   r   r   r«   )r   r   r   r!   ŚposZexample2r
   r
   r   Śtest_remove_  s    



zBaseTest.test_removec              
   C   sh  t   | j”}|  t|j” t   | jd| j ”}|  t|jdd” |  t|jd ” |  t|jt|” |  t|jt| d ” |  | d”| jd ” |  	|t   | j| jdd  | j ”” |  | d”| jd ” |  	|t   | j| jdd | jdd   | j ”” |  | d”| jd ” |  | ” | jd ” |  	|t   | j| jdd  | jd d  ”” d S )Nr%   r   r$   r   r   r#   )
r   r   r   rß   Śpopr   r   r   rz   r   r    r
   r
   r   Śtest_popm  s.    ž*ž$žzBaseTest.test_popc              
   C   sN   t   | j| j”}|  t|jd” | ”  |  |t   | j| jd d d ”” d S )Nr   r#   )r   r   r   r   r   rō   r   r    r
   r
   r   Śtest_reverse  s    žzBaseTest.test_reversec                 C   s  t   | j| j”}|  t|j” | t   | j| jd d d ”” |  |t   | j| j| jd d d  ”” t   | j| j”}| |” |  |t   | j| j| j ”” t   |  ” ”}|  t|j|” t   | j| j”}| | jd d d ” |  |t   | j| j| jd d d  ”” d S ©Nr#   )r   r   r   r   r   Śextendr   r}   rĀ   r
   r
   r   Śtest_extend  s*     ž
žžzBaseTest.test_extendc                 C   s   t   | jt| j”}t   | j| j”}|  ||” |  tt j | jd” G dd d}|  tt j | j| ” dd }|  tt j | j| ” d S )Nr,   c                   @   s   e Zd Zdd ZdS )z;BaseTest.test_constructor_with_iterable_argument.<locals>.Ac                 S   s   t d S r   ©ŚUnicodeErrorr   r
   r
   r   Ś__iter__µ  s    zDBaseTest.test_constructor_with_iterable_argument.<locals>.A.__iter__N)r   r   r	   r  r
   r
   r
   r   ŚA“  s   r  c                   s   s   t d V  d S r   r  r
   r
   r
   r   r   ŗ  s    z;BaseTest.test_constructor_with_iterable_argument.<locals>.B)r   r   r£   r   r   r   r   r  )r   r!   r:   r  r   r
   r
   r   Ś'test_constructor_with_iterable_argument«  s    z0BaseTest.test_constructor_with_iterable_argumentc                 C   sV   zdd l }W n ty(   |  d” Y n0 t | j”}t|g}| |” | ”  d S )Nr   zgc module not available)ŚgcŚImportErrorŚskipTestr   r   r£   r   Zcollect)r   r  r!   rL   r
   r
   r   Śtest_coveritertraverseæ  s    

zBaseTest.test_coveritertraversec                 C   s  t   | j| j”}t|}| ” }|  | ” |” |  | ” d |d ” |  t|j|d ” |  | ” |” |  t|j	|dd ” |  | ” |” |  t|j
|d ” |  | ” |” |  t|jd” |  | ” |” |  t|j| ” ” |  | ” |” |  t|j| ” ” |  | ” |” | jdkrP|  t|j| ” ” |  | ” |” |  ttj|d” |  | ” |” |  ttj|d” |  | ” |” |  ttj|tdd|” |  | ” |” |  ttj|d” |  | ” |” |  ttj|tdd” |  | ” |” d S )Nr   r$   r   r%   )r   r   r   Ś
memoryviewrÅ   r   r   ŚBufferErrorr   r  rś   rż   r¤   rĮ   rĘ   ŚfromunicodeŚ	tounicodeŚoperatorŚimulŚsetitemrņ   Śdelitem)r   r!   ŚmZexpectedr
   r
   r   Śtest_bufferÉ  s<    zBaseTest.test_bufferc                 C   sL   t   | j| j”}t |”}|  | ” | ” ” d }t ”  |  	t
t|” d S r   )r   r   r   ŚweakrefŚproxyr   rÅ   r   Ś
gc_collectr   ŚReferenceErrorr   )r   ŚsŚpr
   r
   r   Śtest_weakrefģ  s    
zBaseTest.test_weakrefŚgetrefcountztest needs sys.getrefcount()c                 C   s\   t dD ]}t dt d”}qt d”}t dD ]}t dt d”}q0|  |t d”” d S )Nr,   r   é@   )r   r   rė   r  r   )r   rK   r:   Śrcr
   r
   r   Śtest_bug_782369ō  s    
zBaseTest.test_bug_782369c                 C   s   t ddd d S )Nr:   r$   )r   )r   r   r
   r
   r   Śtest_subclass_with_kwargsž  s    z"BaseTest.test_subclass_with_kwargsc                 C   s&   t   dd”}|  t||j d” d S )NrD   s   1234r&   )r   r   r   r~   r    r
   r
   r   Śtest_create_from_bytes  s    zBaseTest.test_create_from_bytesc                 C   sB   t   | j| j”}t d”}| ” d |j }t | ||| ” d S )NŚPn2Pir$   )r   r   r   r   Ścalcvobjsizer   r~   Ścheck_sizeof)r   r!   ŚbasesizeZbuffer_sizer
   r
   r   Śtest_sizeof_with_buffer  s    
z BaseTest.test_sizeof_with_bufferc                 C   s(   t   | j”}t d”}t | ||” d S )Nr#  )r   r   r   r$  r%  )r   r!   r&  r
   r
   r   Śtest_sizeof_without_buffer  s    
z#BaseTest.test_sizeof_without_bufferc                 C   sŠ   | j dkrØ|  t”}t | j d”}W d    n1 s80    Y  |  dt|j” |  t”&}t | j t dd””}W d    n1 s0    Y  |  dt|j” n$t | j d”}t | j t dd””}d S )Nr   Śfoozcannot use a strzcannot use a unicode array)r   r   r   r   ZassertInrA   Ś	exception)r   Ścmr!   r
   r
   r   Śtest_initialize_with_unicode  s    
,4z%BaseTest.test_initialize_with_unicodec                 C   s*   ddl m} t dd”}|  t||” d S )Nr   )Śgetbuffer_with_null_viewr   r;   )Z	_testcapir-  r   r   r  )r   r-  r!   r
   r
   r   Śtest_obsolete_write_lock!  s    z!BaseTest.test_obsolete_write_lockc                 C   s0   t  | ttj| jf” t  | ttj| jf” d S r   )r   Zcheck_free_after_iteratingr£   r   r   Śreversedr   r
   r
   r   Śtest_free_after_iterating'  s    ’’z"BaseTest.test_free_after_iteratingN)=r   r   r	   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  ŚunittestZ
skipUnlessŚhasattrrė   r   r!  r"  r   Zcpython_onlyr'  r(  r,  r.  r0  r
   r
   r
   r   rx   °   st   	
%!
$!'"2Y			
#’



rx   c                       s   e Zd Z fddZ  ZS )Ś
StringTestc                    s:   t   ”  t | j| j”}|  t|jd| jd d ” d S )Nr   r%   )Śsuperrā   r   r   r   r   r   rį   r    ©Ś	__class__r
   r   rā   /  s    
zStringTest.test_setitem)r   r   r	   rā   Ś__classcell__r
   r
   r5  r   r3  -  s   r3  c                   @   s8   e Zd ZdZdZdZdZedZdZ	dd Z
d	d
 ZdS )ŚUnicodeTestr   u   āŗ ļ»æu   āŗ ļ»¾u   āŗļ»æŚ3r%   c                 C   s   |   ttjdd” t dd”}| d” | d” | d” | d” | ” }|  |d” |  |jt” d	}t d|”}|  t|d
” |   t|j” d S )Nr:   r)  r   u   Ā Ćį“ś r9   u	   abcĆæį“u   Ā Ćį“ abcĆæį“u    ="'a\bĀĆæ į“u+   array('u', '\x00="\'a\\b\x80Ćæ\x00\x01į“'))	r   r   r   r  r  r   r~   Śsizeof_wcharrĶ   )r   r!   r  r
   r
   r   rw   <  s     



žzUnicodeTest.test_unicodec                 C   sD   t dkrd}n
|  d” t d|”}|  t|j” |  tt|” d S )Nr&   s   ’’’’zspecific to 32-bit wchar_tr   )r;  r
  r   r   r   r  rA   )r   Zinvalid_strr!   r
   r
   r   Śtest_issue17223P  s    
zUnicodeTest.test_issue17223N)r   r   r	   r   r   rŃ   rŅ   rA   r«   r   rw   r<  r
   r
   r
   r   r8  4  s   r8  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 )Ś
NumberTestc                 C   sv  t   | jtd”}|  |d d  |” |  |d d d t   | jg d¢”” |  |dd d t   | jddg”” |  |d d d t   | jg d¢”” |  |d d d t   | jg d	¢”” |  |dd d t   | jddg”” |  |d
d |” |  |dd
d |d d d ” |  |d
dd t   | jg d¢”” |  |ddd t   | jg ”” |  |ddd t   | jg ”” d S )Nr'   r%   ©r   r%   r&   r$   r   r#   )r&   r   r%   r$   r   ré   )r&   r%   r   rź   rč   r®   rå   r­   i0ų’’©r   r   r   r   r    r
   r
   r   Śtest_extslice^  s    $$$$$ $ zNumberTest.test_extslicec                 C   s  t   | jtd”}|d d d= |  |t   | jddg”” t   | jtd”}|dd d= |  |t   | jg d¢”” t   | jtd”}|dd d= |  |t   | jg d¢”” t   | jtd”}|d d d	= |  |t   | jg d
¢”” t   | jtd”}|dd dd> = d S )Nr'   r%   r$   r   r>  ré   )r   r%   r   r&   r,   r®   )	r$   r%   r   r&   r'   r(   r)   r*   r+   r+   iM  r?  r    r
   r
   r   Śtest_delslicel  s    zNumberTest.test_delslicec                 C   s4  t   | jtd”}t   | jdgd ”|d d d< |  |t   | jg d¢”” t   | jtd”}t   | jdgd ”|d d d< |  |t   | jg d¢”” t   | jtd	”}||d d d
< |  |t   | jg d¢”” t   | jtd”}|d d  }|d d  }t   | jtd”}||dd< ||tdd< ||dd< d S )Nr,   r   r'   r%   )
r   r$   r   r   r   r'   r   r)   r   r+   r   éü’’’)
r   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insr
   r
   r   Śtest_assignment}  s     zNumberTest.test_assignmentc                 C   sf   t   | jtd”}|  t|ttd” t   | jdg”}|  |d |v d” |  |d |vd” d S )Nr,   r6   r#   Tr   )r   r   r   r   r¢   rĀ   r
   r
   r   Śtest_iterationcontains  s
    z!NumberTest.test_iterationcontainsc                 C   s   t   | j|g”}||d< |  tt j | j|d g” |  t|jd|d ” t   | j|g”}||d< |  tt j | j|d g” |  t|jd|d ” d S r   )r   r   r   rj   rį   )r   ŚlowerŚupperr!   r
   r
   r   Ścheck_overflow  s    zNumberTest.check_overflowc                 C   sP   | j }G dd dtj}|| j g d¢d}|  |d d” |  tt|dd” d S )	Nc                   @   s*   e Zd ZdgZdd Zdd Zdd ZdS )	z6NumberTest.test_subclassing.<locals>.ExaggeratingArrayŚoffsetc                 S   s   t j  | ||”S r   )r   Ś__new__)Śclsr   r§   rH  r
   r
   r   rI  «  s    z>NumberTest.test_subclassing.<locals>.ExaggeratingArray.__new__c                 S   s
   || _ d S r   )rH  )r   r   r§   rH  r
   r
   r   r   ®  s    z?NumberTest.test_subclassing.<locals>.ExaggeratingArray.__init__c                 S   s   t j  | |”| j S r   )r   rŽ   rH  )r   rK   r
   r
   r   rŽ   ±  s    zBNumberTest.test_subclassing.<locals>.ExaggeratingArray.__getitem__N)r   r   r	   Ś	__slots__rI  r   rŽ   r
   r
   r
   r   ŚExaggeratingArrayØ  s   rL  )r   r(   r)   r-   r&   r   r)   ZcolorZblue)r   r   rz   r   ŚAttributeErrorŚsetattr)r   r   rL  r!   r
   r
   r   Śtest_subclassing¦  s
    zNumberTest.test_subclassingc                 C   s.   t   dtd”}t   | j|”}|  ||” d S )Nr:   r,   )r   r   r   r   rĀ   r
   r
   r   Śtest_frombytearray¹  s    zNumberTest.test_frombytearrayN)
r   r   r	   r@  rA  rC  rD  rG  rO  rP  r
   r
   r
   r   r=  \  s   r=  c                   @   s   e Zd Zdd ZdS )ŚIntegerNumberTestc                 C   s   t   | j”}| d” |  t” | d” W d    n1 s@0    Y  |  t” d|d< W d    n1 sr0    Y  d S )Nr   g      E@r   )r   r   r   r   r   r    r
   r
   r   Śtest_type_erroræ  s    
(z!IntegerNumberTest.test_type_errorN)r   r   r	   rR  r
   r
   r
   r   rQ  ¾  s   rQ  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )ŚIntablec                 C   s
   || _ d S r   ©Z_num)r   Śnumr
   r
   r   r   Č  s    zIntable.__init__c                 C   s   | j S r   rT  r   r
   r
   r   Ś	__index__Ź  s    zIntable.__index__c                 C   s   | j S r   rT  r   r
   r
   r   Ś__int__Ģ  s    zIntable.__int__c                 C   s   t t| t| S r   ©rS  r   ©r   Śotherr
   r
   r   Ś__sub__Ī  s    zIntable.__sub__c                 C   s   t t| t| S r   rX  rY  r
   r
   r   rÖ   Š  s    zIntable.__add__N)r   r   r	   r   rV  rW  r[  rÖ   r
   r
   r
   r   rS  Ē  s
   rS  c                   @   s0   e Zd Zg d¢Zg d¢Zg d¢ZdZdd ZdS )ŚSignedNumberTest)r#   r   r$   r   rH   )r#   r   r$   r   é~   )r#   r   r$   é+   rH   é   c                 C   sh   t   | j”}dttd|jd d  }ttd|jd d d }|  ||” |  t|t|” d S )Nr#   r%   r*   r$   ©r   r   r   Śpowr~   rG  rS  ©r   r!   rE  rF  r
   r
   r   Śtest_overflowŁ  s
    zSignedNumberTest.test_overflowN)r   r   r	   r   rŃ   rŅ   r«   rc  r
   r
   r
   r   r\  Ó  s
   r\  c                   @   s8   e Zd Zg d¢Zg d¢Zg d¢ZdZdd Zdd Zd	S )
ŚUnsignedNumberTest)r   r$   r3   r_  r   rI   )r   r$   r3   r_  r   éž   )r   r$   r3   r_  r^  rI   éŖ   c                 C   sL   t   | j”}d}ttd|jd d }|  ||” |  t|t|” d S )Nr   r%   r*   r$   r`  rb  r
   r
   r   rc  ę  s
    z UnsignedNumberTest.test_overflowc                 C   s   t | j}t | j| j”}| |” |  |t | j| j| j ”” t | j| j”}| tt|” |  |t | j| j| jd d d  ”” d S r   )Śbytesr   r   r   r  r   rĒ   r/  )r   r  r!   r
   r
   r   Śtest_bytes_extendķ  s    

žžz$UnsignedNumberTest.test_bytes_extendN)	r   r   r	   r   rŃ   rŅ   r«   rc  rh  r
   r
   r
   r   rd  ą  s   rd  c                   @   s   e Zd ZdZdZdS )ŚByteTestr:   r$   N©r   r   r	   r   r   r
   r
   r
   r   ri  ’  s   ri  c                   @   s   e Zd ZdZdZdS )ŚUnsignedByteTestr   r$   Nrj  r
   r
   r
   r   rk    s   rk  c                   @   s   e Zd ZdZdZdS )Ś	ShortTestrJ   r%   Nrj  r
   r
   r
   r   rl    s   rl  c                   @   s   e Zd ZdZdZdS )ŚUnsignedShortTestrD   r%   Nrj  r
   r
   r
   r   rm    s   rm  c                   @   s   e Zd ZdZdZdS )ŚIntTestrK   r%   Nrj  r
   r
   r
   r   rn    s   rn  c                   @   s   e Zd ZdZdZdS )ŚUnsignedIntTestrE   r%   Nrj  r
   r
   r
   r   ro    s   ro  c                   @   s   e Zd ZdZdZdS )ŚLongTestrL   r&   Nrj  r
   r
   r
   r   rp    s   rp  c                   @   s   e Zd ZdZdZdS )ŚUnsignedLongTestrF   r&   Nrj  r
   r
   r
   r   rq    s   rq  c                   @   s   e Zd ZdZdZdS )ŚLongLongTestŚqr*   Nrj  r
   r
   r
   r   rr    s   rr  c                   @   s   e Zd ZdZdZdS )ŚUnsignedLongLongTestŚQr*   Nrj  r
   r
   r
   r   rt  #  s   rt  c                   @   s@   e Zd Zg d¢Zg d¢Zg d¢ZdZdd Zdd Zd	d
 Z	dS )ŚFPTest)ē      EĄr   r   ē     jų@g    _ Ā)rw  r   r   rx  g    _ Ā)rw  r   r   rx  g    _ Br_  c                 C   s   |   ||” d S r   )ZassertAlmostEqualry   r
   r
   r   rz   -  s    zFPTest.assertEntryEqualc                 C   s   t   | jtdg”}t   | jtdg”}|  ||kd” |  ||kd” |  ||kd” |  ||kd” |  ||k d” |  ||kd” d S )NŚnanTF)r   r   rd   r   rĀ   r
   r
   r   Śtest_nan0  s    zFPTest.test_nanc                 C   s   t   | j| j”}|  t|jd” |jdv rt   | j| j”}| ”  |jdkrZ|  ||” n|  | 	” | 	” ” | ”  |  ||” d S )Nr   r   r$   )
r   r   r   r   r   r   r~   r   r   rÅ   rĀ   r
   r
   r   r   :  s    

zFPTest.test_byteswapN)
r   r   r	   r   rŃ   rŅ   r«   rz   rz  r   r
   r
   r
   r   rv  '  s   
rv  c                   @   s   e Zd ZdZdZdS )Ś	FloatTestrP   r&   Nrj  r
   r
   r
   r   r{  J  s   r{  c                   @   s   e Zd ZdZdZdd ZdS )Ś
DoubleTestr>   r*   c                 C   s   ddl m} t ddgd ”}z||d d 9 }W n tyD   Y n0 |  d” t dg d¢”}z||d	 d   W n ty   Y n0 |  d” d S )
Nr   )rģ   r>   r#   i   r$   z6Array of size > maxsize created - MemoryError expected)gĖII
æ@gńŌČSū!	@r#   r   )rė   rģ   r   ŚMemoryErrorZfail)r   rģ   r!   r:   r
   r
   r   Śtest_alloc_overflowR  s    
zDoubleTest.test_alloc_overflowN)r   r   r	   r   r   r~  r
   r
   r
   r   r|  N  s   r|  c                   @   sL  e Zd ZdZdd Zejedddd Zejedddd	 Z	ejed
ddd Z
ejedddd Zejedddd Zejedddd Zejedddd Zejedddd Zejedddd Zejedddd Zejedddd Zejedddd Zejedddd  Zejed!dd"d# Zd$S )%ŚLargeArrayTestr:   c                 C   sB   t   | jg d¢”|d  }|t   | jdg|d  g d¢ ”7 }|S )N)r   r$   r%   r   r&   r'   r(   r)   r*   éc   ©r*   r+   r,   r-   )r   r   )r   ŚsizeŚbaser
   r
   r   r   g  s    $zLargeArrayTest.exampleg      @)Zmemusec                 C   s"   |   |”}|  t||d ” d S )Nr&   )r   r   r   ©r   r  r   r
   r
   r   Śtest_example_datam  s    
z LargeArrayTest.test_example_datac                 C   sx   |   |”}|  |d d” |  ||d   d” |  || d” |  |d d” |  ||d  d” |  |d d” d S )Nr   r&   r*   rB  r   r-   r#   )r   r   r  r
   r
   r   Śtest_accessr  s    
zLargeArrayTest.test_accessg      	@c                 C   s  |   |”}|  t|d d g d¢” |  t|dd  g d¢” |dd }|  t||d ” |  |d d” |  |d d	” ~|d d d }|  t||d
 d ” |  t|d d g d¢” |d rģ|  t|dd  ddg” n|  t|dd  dd	g” d S )Nr&   ©r   r$   r%   r   rB  r  r$   r#   r%   r   r,   r'   )r   r%   r&   r(   ré   r+   r-   r*   )r   r   r¢   r   )r   r  r   Śpartr
   r
   r   Ś
test_slice|  s    
zLargeArrayTest.test_slicec                 C   s6   |   |”}|  | d”|d ” |  | d”d” d S )Nr   r*   r-   r$   )r   r   rų   r  r
   r
   r   rł     s    
zLargeArrayTest.test_countc                 C   s(   |   |”}| d” |  |d d” d S )Nr.   r#   )r   r   r   r  r
   r
   r   Śtest_append  s    

zLargeArrayTest.test_appendc                 C   sP   |   |”}| tg d¢” |  t||d ” |  t|dd  g d¢” d S ©N)r.   r/   r0   r1   r*   éų’’’)r*   r+   r,   r-   r.   r/   r0   r1   )r   r  r£   r   r   r¢   r  r
   r
   r   r    s    
zLargeArrayTest.test_extendc                 C   sP   |   |”}| d” |  t||d ” |  t|dd  g d¢td ” d S )Ns   abcdr*   r  r  )r   rĘ   r   r   r¢   r  r
   r
   r   Śtest_frombytes”  s    

zLargeArrayTest.test_frombytesc                 C   sL   |   |”}| g d¢” |  t||d ” |  t|dd  g d¢” d S r  )r   r¤   r   r   r¢   r  r
   r
   r   Śtest_fromlistØ  s    
zLargeArrayTest.test_fromlistc                 C   sZ   |   |”}|  | d”d” |  | d”d” |  | d”d” |  | d”|d ” d S )Nr   r$   r)   r-   r   )r   r   r|   r  r
   r
   r   r÷   Æ  s
    
zLargeArrayTest.test_indexc                 C   s~   |   |”}| dd” | dd” | |d d” |  t||d ” |  |d d” |  |d d” |  ||d  d” d S )Nr   r.   r,   r/   r$   r0   r)   )r   rÆ   r   r   r  r
   r
   r   r°   ·  s    
zLargeArrayTest.test_insertc                 C   s°   |   |”}|  | d”d” |  |d d” |  | |d ”d” |  ||d  d” |  | d”d” |  |d d” |  t||d ” |  | ” d” |  t||” d S )Nr   r$   r,   r-   r%   r   )r   r   rż   r   r  r
   r
   r   rž   Ā  s    
zLargeArrayTest.test_popc                 C   s~   |   |”}| d” |  t||d ” |  |d d” | d” |  t||d ” |  || d” |  ||d  d” d S )Nr   r   r$   r,   r%   r+   r-   )r   rś   r   r   r  r
   r
   r   rü   Ļ  s    


zLargeArrayTest.test_removec                 C   s®   |   |”}| ”  |  t||d ” |  |d d” |  |d d” |  |d d” | ”  |  t||d ” |  t|d d g d¢” |  t|dd  g d	¢” d S )
Nr&   r   r-   r   r*   r#   r  rB  r  )r   rō   r   r   r¢   r  r
   r
   r   r’   Ś  s    
zLargeArrayTest.test_reverseg     @&@c                 C   sj   |   |”}| ” }|  t|t|” |  |d d t|d d ” |  |dd  t|dd  ” d S )Nr*   r  )r   rĮ   r   r   r¢   )r   r  r   Zlsr
   r
   r   Śtest_tolistč  s
    
 zLargeArrayTest.test_tolistN)r   r   r	   r   r   r   Z
bigmemtestr   r  r  r  rł   r  r  r  r  r÷   r°   rž   rü   r’   r  r
   r
   r
   r   r  d  s<   

	












r  Ś__main__)EŚ__doc__r1  Śtestr   Ztest.supportr   r  r   r  rh   rė   r   r   r@   r~   r;  r   r   r{   ZTestCaser   rB   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   re   rf   rg   rq   rr   rs   rt   r8   rx   r3  r8  r=  rQ  rS  r\  rd  ri  rk  rl  rm  rn  ro  rp  rq  rr  rt  rv  r{  r|  r  r   Śmainr
   r
   r
   r   Ś<module>   s   d       (b	# 
