o
    GXh                     @   s  	 d dl Zd dlZd dlm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/Z0G d*d+ d+e0ejZ1G d,d- d-e/Z2G d.d/ d/e2Z3G d0d1 d1Z4G d2d3 d3e3Z5G d4d5 d5e3Z6G d6d7 d7e5ejZ7G d8d9 d9e6ejZ8G d:d; d;e5ejZ9G d<d= d=e6ejZ:G d>d? d?e5ejZ;G d@dA dAe6ejZ<G dBdC dCe5ejZ=G dDdE dEe6ejZ>G dFdG dGe5ejZ?G dHdI dIe6ejZ@G dJdK dKe2ZAG dLdM dMeAejZBG dNdO dOeAejZCG dPdQ dQejZDeEdRkrgeF  dS dS )S    N)support)	os_helper)_2G)_array_reconstructoruc                   @   s   e Zd ZdS )ArraySubclassN)__name__
__module____qualname__ r   r   9/opt/python-3.10.19/usr/lib/python3.10/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         z ArraySubclassWithKwargs.__init__r   )r   r	   r
   r   r   r   r   r   r      s    r   ZubBhHiIlLfdqQc                   @   s@   e Zd Zdd Zdd Zejdd Zejdd Zd	d
 Z	dS )MiscTestc                 C   s0   |  tdtjj |  tdtjj d S )NB)assertIsInstancer   collectionsabcMutableSequence
Reversibler   r   r   r   test_array_is_sequence!   s   zMiscTest.test_array_is_sequencec                 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   
ValueErrorr   r   r   r   test_bad_constructor%   s   zMiscTest.test_bad_constructorc                 C   s$   t  d}t| tt|| d S )NI)r   r   Zcheck_disallow_instantiationtypeiter)r   Zmy_arrayr   r   r   test_disallow_instantiation+   s   
z$MiscTest.test_disallow_instantiationc                 C   s8   |  t dtj_W d    d S 1 sw   Y  d S N   )r!   r"   r   foor   r   r   r   test_immutable2   s   
"zMiscTest.test_immutablec                 C   sj   t  d}||d d < | t|d | t|| d | t|d d ||7 }| t|d d S )Nr   r      )r   assertEquallenr   ar   r   r   
test_empty8   s   
zMiscTest.test_emptyN)
r   r	   r
   r   r$   r   cpython_onlyr(   r,   r2   r   r   r   r   r      s    

r   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       ?   drB      a)r!   r"   array_reconstructorstrr   r#   UNKNOWN_FORMATr   r   r   r   
test_errora   s0   





z!ArrayReconstructorTest.test_errorc                 C   s,  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 qw ttj|||}
| j|	|
d*|	|
|d+ qqd S ),N)r   Hr%   Lz=BBBB)      r      )rJ   hilz=bbb)irW   r   )rT   r%   rU   z<HHHH)i     r   i  z>HHHH)rY   rZ   r[   z<hhh)i r\   r   z>hhhr%   rU   z<IIII)l        r   l    z>IIIIrZ   r[   z<iii)i   r]   r   z>iiiz<QQQQz>QQQQz<qqqz>qqq)l                r   l    )l         r^   r   fz<ffffg   @ oAinfz-infg       z>ffffrN   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   OverflowErrorrP   r.   format)r   	testcasestestcaseZvalid_typecodesmformat_codeZ
struct_fmtvaluesZarraystrr   r1   rJ   r   r   r   test_numberss   s   









1
z#ArrayReconstructorTest.test_numbersc              	   C   sr   d}t dftdftdftdff}|D ]$}|\}}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   ra   rb   )	UTF16_LEUTF16_BEUTF32_LEUTF32_BEr   rP   encoder.   rz   )r   Zteststrr{   r|   r}   encodingr1   rJ   r   r   r   test_unicode   s    z#ArrayReconstructorTest.test_unicodeN)r   r	   r
   rS   r   r   r   r   r   r   rH   _   s    ?rH   c                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Z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.dYdZ Z/d[d\ Z0d]d^ Z1e23e4e5d_d`dadb Z6dcdd Z7dedf Z8e9j:dgdh Z;e9j:didj Z<dkdl Z=e9j:dmdn Z>dodp Z?dqS )rBaseTestc                 C      |  || d S r   )r.   r   Zentry1Zentry2r   r   r   assertEntryEqual   r   zBaseTest.assertEntryEqualc                 C   s   t t | jd tt   S r)   )	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"   r0   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/   r0   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   r5   r   r*   )r   r   r   r!   r"   buffer_infor   tupler.   r/   int)r   r1   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 rHt| j |}|  |jdkr6| || n| || |  | || d S d S )Nr   u   􀄀r   r*   r5   r6   r:   r*   )	r   r   r   r!   r"   byteswapr   r.   assertNotEqual)r   r   r1   rJ   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   r1   rJ   r   r   r   	test_copy   
   
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  r   zBaseTest.test_deepcopyc                 C   sf   t  | j| j}tdD ]}| ||d t j  qtdtjd D ]}| ||d t q#d S )Nr-   r   r*   )	r   r   r   rangeassertIs__reduce_ex__pickleHIGHEST_PROTOCOLrP   )r   r1   protocolr   r   r   test_reduce_ex
  s   zBaseTest.test_reduce_exc                 C   s   t tjd D ]X}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    r&   r   r   r1   rJ   r   r   r   test_pickle  s   zBaseTest.test_picklec                 C   s   t tjd D ]T}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 ]}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  qd S )Nr4   r*   )r   r   r   listr   r   r   r'   r   r   fromlistr.   r&   nextr/   r!   StopIteration)
r   origdatadata2protoitorigrN   itr1   rZ   r   r   r   test_iterator_pickle/  s:   




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   r1   ZexhitZempitr    r   r   r   test_exhausted_iteratorT  s   
"z BaseTest.test_exhausted_iteratorc                 C   sP   t  | j| j}| t|t| j | tt|tt|d d d  d S Nr4   )r   r   r   r.   r   reversedr'   r0   r   r   r   test_reverse_iterator`  s   *zBaseTest.test_reverse_iteratorc                 C   s  t  | j| j}t|}| jg| }|t|d d d | jg }ttjd D ]}t	|}t
||f|}t|\}}	|	d| j | t|t| | t|| | t|	| t| t
||f|}t|\}}	|	d| j | t|t| | t||dd   | t|	| tdt|D ]}
t| qt
||f|}t|\}}	|	d| j | t|t| | t|g  | t|	| | tt| t
||f|}t|\}}	|	d| j | t|g  | t|	| q(d S )Nr5   r4   r*   r   )r   r   r   r   r   r/   r   r   r   r   r   r   insertr.   r&   r   r!   r   )r   r   r   r   Zrev_datar   r   rN   r   r1   rZ   r   r   r   test_reverse_iterator_pickinge  sD   
z&BaseTest.test_reverse_iterator_pickingc                 C   s   t  | j| j}| t|t| j t|}t|}|D ]}t| q|d| j | t|g  | t|g  | t|| jgt| j  d S r   )	r   r   r   r.   r   r   r   r   r   r   r   r   r   test_exhausted_reverse_iterator  s   
"z(BaseTest.test_exhausted_reverse_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*   r4     )r   r   r   r   r.   r/   r!   r"   r0   r   r   r   test_insert  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su|
  ttj d S |js|
  ttj w )Nr5   wbrbr*   )r   r   r   r!   r"   tofiler   unlinkTESTFNopenclosefromfiler/   r.   r   EOFErrorclosedr   r1   r_   rJ   r   r   r   test_tofromfile  s,   

zBaseTest.test_tofromfilec              	   C   sb   t  | j}ttjd}z| t|j|t| j	 W |
  ttj d S |
  ttj w )Nr   )r   r   r   r   r   r!   OSErrorr   r/   r   r   r   )r   r1   r_   r   r   r   test_fromfile_ioerror  s   zBaseTest.test_fromfile_ioerrorc              	   C   s   t  | jd| j }ttjd}zS|| |  t  | j}ttjd}||t	| j | 
|t  | j| j | || ||t	| j | 
|| |  W |js\|  ttj d S |jsk|  ttj w )Nr5   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 )Nr5   r   )r   r   r   r!   r"   tolistr   r.   r   r1   rJ   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rT| t
|jd d S d S )Nr5   r   r*      x)r   r   r   r!   r"   tobytes	frombytes	bytearrayr.   r   r#   )r   r1   rJ   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	     zBaseTest.test_fromarrayc                 C   sV   t  | jd| j }| |tt|dt j i t  | j}| t|d| j  d S )Nr5   r   zarray('%s'))r   r   r   r.   evalreprr0   r   r   r   	test_repr  s   zBaseTest.test_reprc                 C   s    t  | jd| j }t| d S )Nr5   )r   r   r   rQ   r0   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   FTr5   )r   r   r   r   smallerexamplebiggerexample)r   r1   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 )Nr4   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 )Nr4   r5   r   )
r   r   r   r   r.   r   r!   r"   r   __iadd__r   r   r   r   	test_iaddJ  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 )Nr7   r   r4   r*   r   )r   r   r   r.   r!   r"   __mul__r0   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 )Nr7   r   r   r4   r   )r   r   r   r   r.   r!   r"   __imul__r   r   r   r   	test_imul  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   r4   r*   )	r   r   r   r   r/   r!   r"   __getitem__
IndexErrorr0   r   r   r   test_getitem  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 )Nr4   r   r*   )	r   r   r   r   r/   r!   r"   __setitem__r   r0   r   r   r   test_setitem  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*   r4   )	r   r   r   r.   r/   r!   r"   __delitem__r   r0   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*   r4   r5   r   r     r   r0   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 ]$}|D ]}|dd  D ]}| t|||| t||||  q$qqd S 
Nr   r*   r-   rE   d   r4   i)r   r   r   sysmaxsizer.   r   )r   r1   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*   r4   r   r5   r   r   r   )	r   r   r   r.   r!   r"   r   slicer   r   r   r   r   test_setslice0  s    *zBaseTest.test_setslicec                 C   s   dd ddddt jdddd	f}|D ]\}|D ]W}|dd  D ]N}t| j| j}t|}|||| }|  |||||< t| j|||||< | |t| j| ||||= ||||= | |t| j| qqqd S r   )r  r  r   r   r   r   reverser.   )r   r  r  r  r  r1   rU   r   r   r   r   test_extended_set_del_slice  s"   z$BaseTest.test_extended_set_del_slicec                 C   s4  d| j  }t| j|}| t|j |D ]}| |||| q| t|jd  | t|j| j t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 | t|jddd d S )Nr5   rZ   )r  r4   r   r   r*   r5   r   r  ir-   r6   )	r   r   r   r!   r"   r   r.   r#   r   r   r   r1   r    r   r   r   
test_index  s"   
zBaseTest.test_indexc                 C   sr   d| j  }t| j|}| t|j |D ]}| |||| q| || jd | |d d d S )Nr5   r   )r   r   r   r!   r"   countr.   r   r  r   r   r   
test_count  s   
zBaseTest.test_countc                 C   s   | j D ]1}d| j  }t| j|}||}|d | ||d d   }|| | |t| j| qt| j| j }| t|j| j | t|jd  d S )Nr5   r*   )	r   r   r   r   remover.   r!   r#   r   )r   r    r   r1   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 )Nr5   r   r*   r   r-   r4   )
r   r   r!   r   popr   r"   r/   r   r.   r0   r   r   r   test_pop  s.   *$zBaseTest.test_popc              
   C   sN   t  | j| j}| t|jd |  | |t  | j| jd d d  d S )Nr   r4   )r   r   r   r!   r"   r  r.   r0   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 r   )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                   @      e Zd Zdd ZdS )z;BaseTest.test_constructor_with_iterable_argument.<locals>.Ac                 S   s   t 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      r   c                   s   s    t 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   r1   rJ   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w t| j}t|g}|| |  d S )Nr   zgc module not available)gcImportErrorskipTestr   r   r'   r   Zcollect)r   r#  r1   r[   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r| 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   r5   )r   r   r   
memoryviewr   r.   r!   BufferErrorr   r  r  r  r   r   r   fromunicode	tounicodeoperatorimulsetitemr
  delitem)r   r1   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_weakrefG  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}q| |td d S )Nr<   r   @   )r   r   r  r8  r.   )r   rZ   rJ   rcr   r   r   test_bug_782369O  s   
zBaseTest.test_bug_782369c                 C   s   t ddd d S )NrJ   r*   )r   )r   r   r   r   r   test_subclass_with_kwargsY  s   z"BaseTest.test_subclass_with_kwargsc                 C   s&   t  dd}| t||j d d S )NrT   s   1234r6   )r   r.   r/   r   r0   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   r1   basesizeZbuffer_sizer   r   r   test_sizeof_with_bufferc  s   
z BaseTest.test_sizeof_with_bufferc                 C   s(   t  | j}td}t| || d S )Nr>  )r   r   r   r?  r@  )r   r1   rA  r   r   r   test_sizeof_without_bufferj  s   
z#BaseTest.test_sizeof_without_bufferc                 C   s   | j dkrU| t}t| j d}W d    n1 sw   Y  | dt|j | t}t| j tdd}W d    n1 sEw   Y  | dt|j d S t| j d}t| j tdd}d S )Nr   r+   zcannot use a strzcannot use a unicode array)r   r!   r"   r   ZassertInrQ   	exception)r   cmr1   r   r   r   test_initialize_with_unicodep  s   
z%BaseTest.test_initialize_with_unicodec                 C   s*   ddl m} tdd}| t|| d S )Nr   )getbuffer_with_null_viewr   rK   )Z	_testcapirG  r   r!   r(  )r   rG  r1   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   r   r   r   r   r   test_free_after_iterating  s   z"BaseTest.test_free_after_iteratingN)@r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r  r  r  r  r  r  r"  r&  r0  r7  unittestZ
skipUnlesshasattrr  r;  r<  r=  r   r3   rB  rC  rF  rH  rI  r   r   r   r   r      s|    	
%*!
$!'"2Y		
#



r   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   r5   )superr   r   r   r   r!   r"   r   r0   	__class__r   r   r     s   
 zStringTest.test_setitem)r   r	   r
   r   __classcell__r   r   rN  r   rL    s    rL  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   ☺﻿3r5   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 )NrJ   r+   r   u    Âሴ rI   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   r1   r5  r   r   r   r     s    



zUnicodeTest.test_unicodec                 C   sD   t dkrd}n| d td|}| t|j | tt| d S )Nr6   s   zspecific to 32-bit wchar_tr   )rT  r%  r   r!   r#   r*  rQ   )r   Zinvalid_strr1   r   r   r   test_issue17223  s   
zUnicodeTest.test_issue17223N)r   r	   r
   r   r   r   r   rQ   r   r   r   rU  r   r   r   r   rQ    s    rQ  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 )Nr7   r5   r   r5   r6   r*   r-   r4   )r6   r-   r5   r*   r   r  )r6   r5   r   r  r   r   r   r   i0r   r   r   r.   r0   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 )Nr7   r5   r*   r-   rW  r  )r   r5   r-   r6   r<   r   )	r*   r5   r-   r6   r7   r8   r9   r:   r;   r;   iM  rX  r0   r   r   r   test_delslice  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   r7   r5   )
r   r*   r   r-   r   r7   r   r9   r   r;   r-   r  )
r   r<   r5   r-   r6   r<   r8   r9   r:   r<   r6   r4   )r-   r5   r*   r   )r   r   r   r.   r
  )r   r1   rJ   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<   rF   r4   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!   ry   r   )r   lowerupperr1   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   r`  r   r   r   ra    r   z>NumberTest.test_subclassing.<locals>.ExaggeratingArray.__new__c                 S   s
   || _ d S r   )r`  )r   r   r   r`  r   r   r   r   	     
z?NumberTest.test_subclassing.<locals>.ExaggeratingArray.__init__c                 S   s   t j | || j S r   )r   r   r`  )r   rZ   r   r   r   r        zBNumberTest.test_subclassing.<locals>.ExaggeratingArray.__getitem__N)r   r	   r
   	__slots__ra  r   r   r   r   r   r   ExaggeratingArray  s
    rf  )r-   r8   r9   r=   r6   r   r9   ZcolorZblue)r   r   r   r!   AttributeErrorsetattr)r   r   rf  r1   r   r   r   test_subclassing  s
   zNumberTest.test_subclassingc                 C   s.   t  dtd}t  | j|}| || d S )NrJ   r<   )r   r   r   r.   r   r   r   r   test_frombytearray  r   zNumberTest.test_frombytearrayN)
r   r	   r
   rY  rZ  r[  r\  r_  ri  rj  r   r   r   r   rV    s    rV  c                   @   r  )IntegerNumberTestc                 C   s   t  | j}|d | t |d W d    n1 s w   Y  | t d|d< W d    d S 1 s:w   Y  d S )Nr   g      E@r   )r   r   r   r!   r"   r0   r   r   r   test_type_error  s   

"z!IntegerNumberTest.test_type_errorN)r   r	   r
   rl  r   r   r   r   rk    r!  rk  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   #  rc  zIntable.__init__c                 C      | j S r   rn  r   r   r   r   	__index__%     zIntable.__index__c                 C   rp  r   rn  r   r   r   r   __int__'  rr  zIntable.__int__c                 C   s   t t| t| S r   rm  r   r   otherr   r   r   __sub__)  rd  zIntable.__sub__c                 C   s   t t| t| S r   rt  ru  r   r   r   r   +  rd  zIntable.__add__N)r   r	   r
   r   rq  rs  rw  r   r   r   r   r   rm  "  s    rm  c                   @   s0   e Zd Zg dZg dZg dZdZdd ZdS )SignedNumberTest)r4   r   r*   r   rW   )r4   r   r*   r   ~   )r4   r   r*   +   rW      c                 C   sh   t  | j}dttd|jd d  }ttd|jd d d }| || | t|t| d S )Nr4   r5   r:   r*   r   r   r   powr   r_  rm  r   r1   r]  r^  r   r   r   test_overflow4  s
   zSignedNumberTest.test_overflowN)r   r	   r
   r   r   r   r   r  r   r   r   r   rx  .  s    rx  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*   rC   r{  r   rX   )r   r*   rC   r{  r      )r   r*   rC   r{  rz  rX      c                 C   sL   t  | j}d}ttd|jd d }| || | t|t| d S )Nr   r5   r:   r*   r|  r~  r   r   r   r  A  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   r5  r1   r   r   r   test_bytes_extendH  s   

z$UnsignedNumberTest.test_bytes_extendN)	r   r	   r
   r   r   r   r   r  r  r   r   r   r   r  ;  s    r  c                   @      e Zd ZdZdZdS )ByteTestrJ   r*   Nr   r	   r
   r   r   r   r   r   r   r  Z      r  c                   @   r  )UnsignedByteTestr   r*   Nr  r   r   r   r   r  ^  r  r  c                   @   r  )	ShortTestrY   r5   Nr  r   r   r   r   r  b  r  r  c                   @   r  )UnsignedShortTestrT   r5   Nr  r   r   r   r   r  f  r  r  c                   @   r  )IntTestrZ   r5   Nr  r   r   r   r   r  j  r  r  c                   @   r  )UnsignedIntTestr%   r5   Nr  r   r   r   r   r  n  r  r  c                   @   r  )LongTestr[   r6   Nr  r   r   r   r   r  r  r  r  c                   @   r  )UnsignedLongTestrU   r6   Nr  r   r   r   r   r  v  r  r  c                   @   r  )LongLongTestqr:   Nr  r   r   r   r   r  z  r  r  c                   @   r  )UnsignedLongLongTestQr:   Nr  r   r   r   r   r  ~  r  r  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)      Er   r        j@g    _)r  r   r   r  g    _)r  r   r   r  g    _Br{  c                 C   r   r   )ZassertAlmostEqualr   r   r   r   r     r   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   rs   r   r   r   r   r   test_nan  s   zFPTest.test_nanc                 C   s   t  | j| j}| t|jd |jdv rCt  | j| j}|  |jdkr-| || n
| |	 |	  |  | || d S 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   r   r  r   r   r   r   r   r    s    
r  c                   @   r  )	FloatTestr_   r6   Nr  r   r   r   r   r    r  r  c                   @   s   e Zd ZdZdZdd ZdS )
DoubleTestrN   r:   c                 C   s   ddl m} tddgd }z
||d d 9 }W n	 ty"   Y nw | d tdg d}z
||d	 d   W n
 tyD   Y d S w | d d S )
Nr   )r  rN   r4   i   r*   z6Array of size > maxsize created - MemoryError expected)gII
@gS!	@r4   r-   )r  r  r   MemoryErrorZfail)r   r  r1   rJ   r   r   r   test_alloc_overflow  s   
zDoubleTest.test_alloc_overflowN)r   r	   r
   r   r   r  r   r   r   r   r    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 )%LargeArrayTestrJ   c                 C   sB   t  | jg d|d  }|t  | jdg|d  g d 7 }|S )N)r   r*   r5   r-   r6   r7   r8   r9   r:   c   r:   r;   r<   r=   )r   r   )r   sizebaser   r   r   r     s   $zLargeArrayTest.exampleg      @)Zmemusec                 C   s"   |  |}| t||d  d S )Nr6   )r   r.   r/   r   r  r   r   r   r   test_example_data  s   
z LargeArrayTest.test_example_datac                 C   sx   |  |}| |d d | ||d   d | || d | |d d | ||d  d | |d d d S )Nr   r6   r:   r  r-   r=   r4   )r   r.   r  r   r   r   test_access  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 rw| t|dd  ddg d S | t|dd  dd	g d S )Nr6   r   r*   r5   r-   r  r  r*   r4   r5   r   r<   r7   )r   r5   r6   r8   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>   r4   )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?   r@   rA   r:   )r:   r;   r<   r=   r>   r?   r@   rA   )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*   r9   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*   r@   r9   )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=   r5   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<   r5   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 )
Nr6   r   r=   r-   r:   r4   r  r  r  )r   r  r.   r/   r   r  r   r   r   r  5  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_tolistC  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    s>    

	












r  __main__)Gcollections.abcr   rJ  testr   Ztest.supportr   r   r1  r   r+  rw   r  r   r   rP   r   rT  r   r   r   ZTestCaser   rR   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rt   ru   rv   r   r   r   r   rH   r   rL  rQ  rV  rk  rm  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   mainr   r   r   r   <module>   s    (d       L(b	# 
