
    $)di                       d 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Zddlm	Z	m
Z
 ddlmZmZmZmZmZ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Z e ej                    dk              Z e ej                    dk              Zddl m Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z'm(Z(m)Z) d	 Z* e'd
          Z+e Z,ddZ-ddZ. G d de/          Z0 G d dej1                  Z2 G d dej1        e0          Z3 G d dej1        e0          Z4 G d dej1        e0          Z5 G d dej1        e0          Z6 G d dej1        e0          Z7 G d dej1        e0          Z8 G d dej1        e0          Z9 G d  d!ej1        e0          Z: G d" d#ej1        e0          Z; G d$ d%ej1        e0          Z< G d& d'ej1        e0          Z= G d( d)ej1        e0          Z> G d* d+ej1        e0          Z? G d, d-ej1        e0          Z@ G d. d/ej1        e0          ZA G d0 d1ej1        e0          ZB G d2 d3ej1        e0          ZC G d4 d5ej1        e0          ZD G d6 d7ej1        e0          ZE G d8 d9ej1        e0          ZF G d: d;ej1        e0          ZG G d< d=ej1        e0          ZH G d> d?ej1        e0          ZI G d@ dAej1        e0          ZJ G dB dCej1                  ZK G dD dEej1        e0          ZL G dF dGej1        e0          ZM G dH dIej1        e0          ZN G dJ dKej1        e0          ZO G dL dMej1        e0          ZP G dN dOej1        e0          ZQ G dP dQej1        e0          ZR G dR dSej1        e0          ZS G dT dUej1        e0          ZT G dV dWej1        e0          ZU G dX dYej1        e0          ZV G dZ d[ej1        e0          ZW G d\ d]ej1        e0          ZX G d^ d_ej1        e0          ZY G d` daej1        e0          ZZ G db dcej1        e0          Z[ G dd deej1        e0          Z\ G df dgej1        e0          Z] G dh diej1        e0          Z^i dj e dk          dl e dm          dn e do          dp e dq          dr e ds          dt e du          dv e dw          dx e dy          dz e d{          d| e d}          d~ e d          d e d          d e d          d e d          d e d          d e d          d e d           e d           e d           e d           e d           e d           e d           e d           e d           e d           e d           e d          dZ_ G d dej1        e0          Z` G d dej1        e0          Za G d dej1        e0          Zb G d dej1        e0          Zc G d dej1        e0          ZdddZeefdk    r ejg                     dS dS )z*
Tests for bitarray

Author: Ilan Schnell
    N)BytesIOUnsupportedOperation)choicechoicesgetrandbits	randrangerandintshuffle)
whitespacewasm32PyPy)	bitarrayfrozenbitarray
bits2bytes
decodetreeget_default_endian_bitarray_reconstructor_sysinfo
BufferInfo__version__c                     | rd S d S )z%Skip a test if the condition is true.c                     d S N fs    ]/var/www/menimich/repos/protonApp/venv/lib/python3.11/site-packages/bitarray/test_bitarray.py<lambda>zskipIf.<locals>.<lambda>+   s         c                     | S r   r   r   s    r   r   zskipIf.<locals>.<lambda>,   s    Q r   r   )	conditions    r   skipIfr"   (   s     ~;r   void*c                 P    t          | |          }|                    d           |S N   )r   setallnendianas      r   onesr,   3   s%    FAHHQKKKHr   <RAND>c                     |dk    rt          ddg          }t          t          j        t	          |                     |          }|| d = |S )Nr-   littlebig)r   r   osurandomr   r(   s      r   	urandom_2r3   8   sN    5)**JqMM**F33A	!""Hr   c                       e Zd Zed             Zedd            Zd Zed             Zedd            Zd Z	d	 Z
d
 Zed             ZdS )Utilc                  $    t          ddg          S )Nr/   r0   )r   r   r   r   random_endianzUtil.random_endianB   s    x'(((r   r   c              #      K   t          | d          D ]}t          |          V  t          d          D ]!}t          t          | d                    V  "d S )N
        )ranger3   r   )startr)   _s      r   randombitarrayszUtil.randombitarraysF   st      ub!! 	 	AA,,q 	4 	4AIeT22333333	4 	4r   c              #   d   K   |                                  D ]}|                                V  d S r   )r?   tolistselfr+   s     r   randomlistszUtil.randomlistsM   sB      %%'' 	 	A((**	 	r   c                     ddd}||          S )Nr0   r/   r/   r0   r   )r*   ts     r   opposite_endianzUtil.opposite_endianQ   s     yr   Nc                     t          t          |  dz
  | dz             t          |  dz
  | dz             |pt          dd          pd          S )N      r&   )slicer	   )r)   steps     r   random_slicezUtil.random_sliceW   sV    WaR!VQU++aR!VQU++0WR^^0q2 2 	2r   c                    |                      |t                     |                     |j        t	          t          |                               |                     d|j        cxk    odk     nc            |                     t          |          |j        z   d|j        z             |                                }|j	        rb|                     |j
        d           |                     t          |          d|j        z             |                     |j        d           n#|                     |j
        |j        k               |j        dk    r6|                     |j        d           |                     |j
        d           t          |          t          k    r|                     |j        d           |j        rt          t          |          dd          |j                  |j         d          }|                     t          |          |j                   |                     |                                d           d S d S |j	        s|                     |j                   d S d S )Nr      r&   r*   )assertIsInstancer   assertEqualnbytesr   len
assertTruepadbitsbuffer_infoimportedallocaddresstyper   readonlybytesr*   countassertFalse)rC   r+   infobs       r   	check_objzUtil.check_obj]   s?   a***:c!ff#5#5666QY********+++Q!)+Q\:::}}= 	4TZ+++SVVQ\222QY**** OODJ!(2333<1 QXq)))TZ+++77n$$QZ+++y /U1XXbcc]18<<<aiZ[[I  Q333  A...../ /  	)QZ(((((	) 	)r   c                 r    |                      ||           |                      |j        |j                   d S r   )rU   r*   rC   r+   rd   s      r   assertEQUALzUtil.assertEQUAL   s8    A18,,,,,r   c                     |                      t          |          j        |           |                      t          t          |                    d|z             d S )Nz<class 'bitarray.%s'>)rU   r^   __name__reprrg   s      r   assertIsTypezUtil.assertIsType   sO    a)1---d1gg(?!(CDDDDDr   c                     	  ||i | t          d| j        z            # | $ r3}|t          |          k    rt          d|d|          Y d }~d S d }~ww xY w)Nz%s not raisedz	message: z
 got: )AssertionErrorrj   str)excClassmsgcallableargskwargses         r   assertRaisesMessagezUtil.assertRaisesMessage   s    	IHd%f%%% 83D!DEEE 	I 	I 	Ic!ff}}$nQQ%GHHH }}}}}	Is   ! A(AA)r   r   )rj   
__module____qualname__staticmethodr7   r?   rD   rH   rO   re   rh   rl   rv   r   r   r   r5   r5   @   s        ) ) \) 4 4 4 \4     \
 2 2 2 \2
!) !) !)F- - -E E E I I \I I Ir   r5   c                       e Zd Zd Zd Z eej        dd         dk               d             Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )ModuleFunctionsTestsc                 `    |                      t          t                    t                     d S r   )rU   r^   r   ro   rC   s    r   test_version_stringz(ModuleFunctionsTests.test_version_string   s&    k**C00000r   c                 ~    dD ]9}t          |          }|                     t          |          t                     :d S )N)r#   size_tbitarrayobjectdecodetreeobjectbinodeHAVE_BUILTIN_BSWAP64PY_LITTLE_ENDIANPY_BIG_ENDIANPy_GIL_DISABLEDPy_DEBUGDEBUG)sysinforU   r^   int)rC   keyress      r   test_sysinfoz!ModuleFunctionsTests.test_sysinfo   sI    < 	- 	-C #,,CT#YY,,,,	- 	-r   NrJ   r:      c                     |                      t          d          dt          j        v            t          d          r(|                     t          j                               d S d S )Nr   zfree-threading)rU   r   sysversionrb   _is_gil_enabledr}   s    r   test_gil_disabledz&ModuleFunctionsTests.test_gil_disabled   so    !233)S[8	: 	: 	: $%% 	4S02233333	4 	4r   c                     |                      t          t                     |                      t          t          d           |                      t          t          d           d S )Ns   void*foo)assertRaises	TypeErrorr   KeyErrorr}   s    r   test_sysinfo_errorsz(ModuleFunctionsTests.test_sysinfo_errors   sN    )W---)Wh777(GU33333r   c                 d   |                      t          d          t                     |                      t          d          t                     |                      t          j        ddt          z  dz
  z  dz
             t
          s'|                      t          t          j                   d S d S )Nr#   r   rJ   rQ   r&   )rU   r   PTRSIZEr   maxsizeis_pypytuple__itemsize__r}   s    r   test_sysinfo_pointer_sizez.ModuleFunctionsTests.test_sysinfo_pointer_size   s    ))7333**G444aAK!O&<q&@AAA 	:We&899999	: 	:r   c                     |                      t          j        dk    t          d                     |                      t          j        dk    t          d                     d S )Nr/   r   r0   r   )rU   r   	byteorderr   r}   s    r   test_sysinfo_byteorderz+ModuleFunctionsTests.test_sysinfo_byteorder   se    (2 !344	6 	6 	6%/ 11	3 	3 	3 	3 	3r   c                     t                      }|                     |dv            |                     t          |          t                     t                      }|                     |j        |           d S )NrF   )r   rX   rU   r^   ro   r   r*   rC   r*   r+   s      r   test_get_default_endianz,ModuleFunctionsTests.test_get_default_endian   sh    #%%"33444fs+++JJ6*****r   c                 H    |                      t          t          d           d S )Nr0   )r   r   r   r}   s    r   test_get_default_endian_errorsz3ModuleFunctionsTests.test_get_default_endian_errors   s!    )%7?????r   c                    dD ](\  }}|                      t          |          |           )t          dd          D ]}t          |          }|                      ||dz
  dz  dz              |                      t          |          t                     d|z  t          d          z   }|                      t          |          |dz
  dz  dz              d S )N))r   r   )r&   r&   )   r&   )rQ   r&   )	   rJ   r&      rQ   r;   )rU   r   r<   r^   r   r   )rC   r)   r   mks        r   test_bits2bytesz$ModuleFunctionsTests.test_bits2bytes   s    < 	1 	1FAsZ]]C0000q# 	> 	>A1AQQ1q 0111T!WWc***a9T??*AZ]]QUqL1,<====	> 	>r   c                 f   dg d i ddfD ]#}|                      t          t          |           $|                      t          t                     |                      t          t          dd           |                      t          t          d           |                      t          t          d           d S )Nr   g     `g@g      r&   rJ   rR   d)r   r   r   
ValueErrorrC   args     r   test_bits2bytes_errorsz+ModuleFunctionsTests.test_bits2bytes_errors   s    "dBt3 	: 	:CiS9999)Z000)ZA666*j"555*j$77777r   )rj   rw   rx   r~   r   r"   r   version_infor   r   r   r   r   r   r   r   r   r   r   r{   r{      s        1 1 1- - - VCRaR 7*++4 4 ,+44 4 4
: : :3 3 3+ + +@ @ @
> 
> 
>8 8 8 8 8r   r{   c                       e Zd Zd Zd Zd Zd Zd Z ee	          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 ee	          d             ZdS )CreateObjectTestsc                 2   t                      }|                     t          |          d           |                     |                                g            |                     t	          |          t                      |                     |           d S Nr   )r   rU   rW   rA   r^   re   rB   s     r   test_noInitializerz$CreateObjectTests.test_noInitializer   sy    JJQ###R(((a(+++qr   c                 ^   t          dd          }|                     |j        d           |                     t          |j                  t                     |                     |           t          dd          }|                     |j        d           |                     t          |j                  t                     |                     |           |                     ||           |                     |                                |                                           d S )N   ABCr/   rS   r0   )r   rU   r*   r^   ro   re   assertNotEqualtobytesrg   s      r   test_endianzCreateObjectTests.test_endian   s    VH---8,,,ah---qVE***5)))ah---qAq!!!aiikk22222r   c                 "   |                      t          t          d           |                      t          t          d           |                     t          dt          d           |                     t          dt          t
                     d S )Nr   rS    z:bit-endianness must be either 'little' or 'big', not 'foo'r   z!'ellipsis' object is not iterable)r   r   r   r   rv   Ellipsisr}   s    r   test_endian_wrongz#CreateObjectTests.test_endian_wrong   s    )Xa888*hr:::  HU 	! 	$ 	$ 	$ 	  !D!)8	5 	5 	5 	5 	5r   c                    dD ]7}t          d|          }|                     |t          d|                     8t          d          }|                     |j        d           |                     t	          |          d           d S )	Nr0   r/   r   bufferr*   r      Ar   r0   rQ   )r   rh   rU   r*   rW   r   s      r   test_buffer_endianz$CreateObjectTests.test_buffer_endian   s    % 	5 	5FF333AQF 3 34444D!!!5)))Q#####r   c                 R   t          dd          }|                     |j                   |                     t          |j                   |                     t          |j        dd           |                     |t          dd                     |                     |           d S )N   r/   r   r:   r&   00001111)	r   rX   r_   r   r   clear__setitem__rh   re   rB   s     r   test_buffer_readonlyz&CreateObjectTests.test_buffer_readonly	  s    GH555
###)QW---)Q]Aq999HZ::;;;qr   c                     t          t          dg                    }|                     |j                   d|d<   d S )NA   r   r&      )r   	bytearrayrb   r_   rB   s     r   test_buffer_writablez&CreateObjectTests.test_buffer_writable  s=    IrdOO,,,$$$!r   c                 <   |                      t          t          dd           t          d dt          dg                    }|                     |t          dd                     t          d dd           }|                     |t          dd                     d S )	NrL   s   DATA r   r0      r   r/   r   )r   r   r   r   rh   rB   s     r   test_buffer_argsz"CreateObjectTests.test_buffer_args  s    )XqCCC T5)RD//22HZ77888T8T**HQ1122222r   c           	         t          d           t          d d           t          d t                    t          d d d           t          d d t                    fD ]%}|                     t          |          d           &d S )Nr   r   )r   r   rU   rW   rB   s     r   	test_nonezCreateObjectTests.test_none!  s    4..4---41114t,,4x00	2 	( 	(A
 SVVQ''''	( 	(r   c                 |   t          d          D ]}t          |          }|                     t          |          |           |                     |                                           |                     |                                |dz             |                     |           t          |t                    }|                     t          |          |           |                     |           | 	                    t          t          d           | 	                    t          t          d           d S )N2   0r   rR   r   )r<   r   rU   rW   rb   anyto01re   r   r   r   rC   r)   r+   s      r   test_intzCreateObjectTests.test_int)  s	   r 
	 
	AASVVQ'''QUUWW%%%QVVXXq3w///NN1 8,,,ASVVQ'''NN1*h333*h55555r   c                    t          g d          }|                     |t          d                     |                     |           |                     t          t           g d           |                     t
          t           g d           t          d          D ]g}d t          |          D             }t          |          }|                     |                                |           |                     |           hd S )N)r   r&   FT0101r   r&   rJ   )r   r&   Nr   c                 F    g | ]}t          t          d                     S r&   boolr   .0ds     r   
<listcomp>z/CreateObjectTests.test_list.<locals>.<listcomp>B  &    :::A4A'':::r   )r   rU   re   r   r   r   r<   rA   )rC   r+   r)   lsts       r   	test_listzCreateObjectTests.test_list9  s    ((())HV,,---q*h			:::)X|||<<<r 	 	A::q:::CAQXXZZ---NN1		 	r   c                 2   g d}|t          |          t          j        d|          fD ]l}|                     t          |          d           t	          |          }|                     |t	          d                     |                     |           md S )N)r   r&   r&   r&   r   irL   01110)r   arrayrU   rW   r   re   rC   r   xr+   s       r   test_sequencezCreateObjectTests.test_sequenceG  s    ooeCjj%+c3"7"77 	 	ASVVQ'''AQ 1 1222NN1		 	r   c                    t          d          D ]t}d t          |          D             }t          t          |                    }|                     |                                |           |                     |           ud S )Nr   c                 F    g | ]}t          t          d                     S r   r   r   s     r   r   z0CreateObjectTests.test_iter1.<locals>.<listcomp>Q  r   r   )r<   r   iterrU   rA   re   )rC   r)   r   r+   s       r   
test_iter1zCreateObjectTests.test_iter1O  s    r 	 	A::q:::Cc##AQXXZZ---NN1		 	r   c                     |                                  D ]Vfd}t           |                      }|                     |t                               |                     |           Wd S )Nc               3      K   D ]} | V  d S r   r   )r   r   s    r   r   z)CreateObjectTests.test_iter2.<locals>.fooX  s+        AGGGG r   )rD   r   rU   re   )rC   r   r+   r   s      @r   
test_iter2zCreateObjectTests.test_iter2V  s    ##%% 	 	C     AQ...NN1	 	r   c                    t          t          j        dd                    }|                     |t	          d                     t          t          j        dd                    }|                     |t          d                     d S )NFr9   r&   
1111111111)r   	itertoolsrepeatrU   zerosrB   s     r   
test_iter3zCreateObjectTests.test_iter3_  sv    Y%eR0011E"II&&&Y%a,,--HX../////r   c                     |                      t          t          d                    t          d                     |                     t          t          t          dd                     d S )NrJ   01r   r:   )rU   r   r<   r   r   r}   s    r   
test_rangezCreateObjectTests.test_rangee  sR    %((++Xd^^<<<*ha<<<<<r   c                 v   dD ]P}t          |          }|                     |                                g d           |                     |           Q|                                 D ]m}d                    d |D                       }t          |          }|                     |                                |           |                     |           n|                     t          t           d           |                     t          t           d           |                     t          t           d           d S )N)0010111z0010 1110010_111)r   r   r&   r   r&   r&   r&   r   c                 "    g | ]}d dg|         S )r   1r   r   r   s     r   r   z3CreateObjectTests.test_string01.<locals>.<listcomp>p  s     4441#sA444r   01021u   1★0u   0𐍈)r   rU   rA   re   rD   joinr   r   )rC   sr+   r   s       r   test_string01zCreateObjectTests.test_string01i  s   2 	 	AAQXXZZ)>)>)>???NN1##%% 	 	C4444455AAQXXZZ---NN1*h888*h
;;;*h>>>>>r   c                 T   t          t                    }|                     |t                                 t          D ]7}t          |dz             }|                     |t          d                     8t          d          }|                     |t          d                     d S )N
1101110001z 0
10	10 01010)r   r   rU   )rC   r+   cs      r   test_string01_whitespacez*CreateObjectTests.test_string01_whitespacey  s    Z  HJJ''' 	8 	8A\)**AQ 6 67777&''HW--.....r   c                 z   dt          d          fD ]}t          |d          }|                     t          |          dt          |          z             |                     |                                |           |                     |                                d           |                     |           t          d          D ]n}t          j	        |          }t          |          }|                     t          |          d|z             |                     t          |          |           od S )N   r/   rQ   00000001d   )r   r   rU   rW   r   r   re   r<   r1   r2   
memoryview)rC   r   r+   r)   s       r   test_bytes_bytearrayz&CreateObjectTests.test_bytes_bytearray  s   )G,,, 	 	AH%%ASVVQQZ000QYY[[!,,,QVVXXz222NN1s 	/ 	/A
1AASVVQU+++Z]]A....		/ 	/r   c                     dD ]>\  }}}t          ||          }|                     |                                |           ?d S )N))   r/   10000000)r  r/   r  )r  r0   r!  )r   r0   r  r   rU   r   )rC   byter*   r   r+   s        r   	test_bytezCreateObjectTests.test_byte  sV    "1 	, 	,D&#
 v&&AQVVXXs++++	, 	,r   c                     t          d          D ]O}t          |          }t          |d           }|                     ||u            |                     ||           Pd S )Nr9   rS   )r<   r   rb   rh   rC   r)   r+   rd   s       r   test_bitarray_simplez&CreateObjectTests.test_bitarray_simple  so    r 	# 	#AA4(((AQ!V$$$Q""""		# 	#r   c                 x   dD ]}t          |          }t          |          }|                     ||u            |                     ||           |                     |          }t          ||          }|                     |j        |           |                     ||           |                                 D ]}}|                     |j                  }t          ||          }|                     ||           |                     |j        |           |                     |j        |j                   ~d S NrF   rS   )r   rb   rh   rH   rU   r*   r?   r   )rC   r*   r+   rd   endian2s        r   test_bitarray_endianz&CreateObjectTests.test_bitarray_endian  sC    & 		# 		#F'''AAQ!V$$$Q"""**622GG$$AQXw///Q""""%%'' 	4 	4A**1844GG$$AQ"""QXw///!(3333	4 	4r   c                     t          dd          }t          |d          }|                     ||           |                     |                                |                                           |                                 |                     ||           |                     |                                |                                           t          dd          }|                     ||           d S )N11100001r/   rS   r0   )r   rU   r   r   bytereverserC   r+   rd   r  s       r   test_bitarray_endiannessz*CreateObjectTests.test_bitarray_endianness  s    Z111Qu%%%AAIIKK555	Aq!!!aiikk222Z...Ar   c                    t          t                                }|                     |t                                 |                     t	          |          t                      dD ]l}t          t          d|                    }|                     |t          d|                     |                     t	          |          t                      md S )NrF   011rS   )r   r   rh   rU   r^   rC   r+   r*   s      r   test_frozenbitarrayz%CreateObjectTests.test_frozenbitarray  s    ^%%&&HJJ'''a(+++% 	0 	0Ff===>>AQ 7 7888T!WWh////	0 	0r   c                    d ddt                      t                      t                      t                      t	                      t                      t                      t                      fD ]V}t          |          }|                     t          |          d           | 
                    |t                                 Wd S )Nr   r   )listr   setdictr`   r   r   r   rU   rW   rh   rC   r   r+   s      r   test_create_emptyz#CreateObjectTests.test_create_empty  s    2tvvuwwtvvuww++xzz>+;+;= 	, 	,AASVVQ'''Q

++++		, 	,r   c                    ddt           t          d          ddfD ]#}|                     t          t          |           $dD ]#}|                     t
          t          |           $|                     t          t          dd           |                     t
          t          dd           |                     t          t          ddd           d S )	NFTr           y                )rR   A z010  11r   r0   )r   rM   r   r   r   r   )rC   r   s     r   test_wrong_argsz!CreateObjectTests.test_wrong_args  s    ha#v= 	6 	6Ai15555* 	7 	7Aj(A6666)Xq!444*h5999)Xq%;;;;;r   c                    t          d          }t          j        |          }|                     |                                |                                           d }|                     t          t          |           d S )N0100)r   weakrefproxyrU   r   r   ReferenceErrorrW   rg   s      r   test_weakrefzCreateObjectTests.test_weakref  sg    VM!16688,,,.#q11111r   N)rj   rw   rx   r   r   r   r   r   r"   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r$  r'  r+  r0  r4  r:  r?  rE  r   r   r   r   r      s         3 3 3	5 	5 	5$ $ $   VG__  _
3 3 3( ( (6 6 6         0 0 0= = =? ? ? 	/ 	/ 	// / /, , ,# # #4 4 4*  0 0 0, , ,< < < VG__2 2 _2 2 2r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )ToObjectsTestsc                     t                      }|                     t          t          |           |                     t          t          |           |                     t          t
          |           d S r   )r   r   	Exceptionr   floatcomplexrB   s     r   test_numericzToObjectsTests.test_numeric  sY    JJ)S!,,,)UA...)Wa00000r   c                     |                                  D ]7}|                     t          |          |                                           8d S r   )r?   rU   r6  rA   rB   s     r   r   zToObjectsTests.test_list  sN    %%'' 	2 	2AT!WWahhjj1111	2 	2r   c                     |                                  D ]D}|                     t          |          t          |                                                     Ed S r   )r?   rU   r   rA   rB   s     r   
test_tuplezToObjectsTests.test_tuple  sV    %%'' 	: 	:AU1XXuQXXZZ'8'89999	: 	:r   c                 X   t          d          D ]}t          d|z            }|                     |j        d           |                     t	          |          |                                           |                     t          |          |                                           d S )N   rQ   r   )r<   r3   rU   rY   r`   r   r   r   s      r   r  z#ToObjectsTests.test_bytes_bytearray  s    r 	8 	8A!a%  AQY***U1XXqyy{{333Yq\\199;;7777		8 	8r   c                     dD ]p\  }}t          d|          }|                     |                                |           t          d|          }|                     t          |          |           qd S )N))r/   r   )r0   r  r  )r   rU   r   r`   )rC   r*   r   r+   s       r   test_bytes_bytearray_padz'ToObjectsTests.test_bytes_bytearray_pad  sz    @ 	, 	,KFCf%%AQYY[[#...f%%AU1XXs++++		, 	,r   c                     |                                  D ]D}|                     t          |          t          |                                                     Ed S r   )r?   rU   r7  rA   rB   s     r   test_setzToObjectsTests.test_set
  sT    %%'' 	6 	6ASVVS__5555	6 	6r   N)	rj   rw   rx   rL  r   rO  r  rS  rU  r   r   r   rG  rG    sn        1 1 12 2 2: : :8 8 8, , ,6 6 6 6 6r   rG  c                        e Zd Zd Zd Zd ZdS )GetItemTestsc                 f   t                      }|                     t          |j        d           |                    d           |                     |d         d           |                     |d         d           |                     t          |j        d           |                     t          |j        d           |                    d           |                     |d         d           |                     |d         d           |                     t          |j        d           |                     t          |j        d           |                     t          |j        d	           |                     t          |j        d            |                     t          |j        d
           d S )Nr   Tr&   rR   FrJ         ?r=  )r   r   
IndexError__getitem__appendrU   r   rB   s     r   test_explicitzGetItemTests.test_explicit  sg   JJ*ama888	1q!!!2"""*ama888*amR888	1q!!!2"""*ama888*amR888)Q]C888)Q]D999)Q]C88888r   c                    t          d          }t          |          D ]n\  }}|                     ||         |           |                     t          ||                   t                     |                     |d|z            |           o|                     t          |j        d           |                     t          |j        d           d S )N1100010r   )r   	enumeraterU   r^   r   r   r\  r]  )rC   r+   r   vs       r   
test_basiczGetItemTests.test_basic#  s    YaLL 	+ 	+DAqQqT1%%%T!A$ZZ---QrAvY*****ama888*amR88888r   c                     |                                  D ]W}|                                }t          t          |                    D ]$}|                     ||         ||                    %Xd S r   )r?   rA   r<   rW   rU   )rC   r+   aar   s       r   r	  zGetItemTests.test_range,  su    %%'' 	. 	.AB3q66]] . .  1r!u----.	. 	.r   N)rj   rw   rx   r_  rf  r	  r   r   r   rW  rW    sA        9 9 9"9 9 9. . . . .r   rW  c                   B    e Zd Zd Zd Z ee          d             ZdS )SetItemTestsc                 h   t          d          }d|d<   |                     |t          d                     t          d          }d|d<   d|d<   |                     |t          d                     d|d<   d|d<   |                     |t          d	                     |                     t          |j        dd           |                     t
          |j        dd            |                     t          |j        dd
           |                     t          |j        dd           |                     t
          |j        dd           |                     t
          |j        d d           |                     t
          |j        dd
           |                     |t          d	                     d S )Nr   r&   r   r  rJ   r  rR   rY  10TrZ  Fr[  r+   )r   rU   r   r   r   r   r\  rB   s     r   r_  zSetItemTests.test_explicit4  s   SMM!HSMM***QKK!!HTNN+++""HTNN+++*amQ;;;)Q]At<<<*ama>>>*amR???)Q]C;;;)Q]D!<<<)Q]C>>>HTNN+++++r   c                 D   |                      d          D ]}t          t          |                    }|                                }t	          d          }|||<   |||<   |                     |                                |           |                     |           d S Nr&   r=   )r?   r   rW   rA   r   rU   re   )rC   r+   r   rh  re  s        r   test_randomzSetItemTests.test_randomK  s    %%A%.. 	 	A#a&&!!ABAAAaDBqEQXXZZ,,,NN1	 	r   c                 &   t          g d          }t          d|          }|                     |j                   d|d<   |                     |t          g d                     d|d<   |                     |t          g d                     d S )	NrL   r&   rJ   r:   r/   r*   r   r&   r   )   r&   rJ   r:   rY  )rt  r&   rJ   C   r   r   rb   r_   rU   rg   s      r   test_importedzSetItemTests.test_importedU  s    lll##HQ///$$$!Iooo66777"I&8&8&899:::::r   N)rj   rw   rx   r_  rp  r"   r   rw  r   r   r   rj  rj  2  sU        , , ,.   VG__; ; _; ; ;r   rj  c                   B    e Zd Zd Zd Z ee          d             ZdS )DelItemTestsc                 F   t          d          }|d= |                     t          |          d           |d= |d= |                     |t          d                     |                     t          |j        d           |                     t          |j        d           d S )N100110r&   rL   r:   rY  100)r   rU   rW   r   r\  __delitem__rB   s     r   test_simplezDelItemTests.test_simpleb  s    XaDQ###aD!B%HUOO,,,*ama888*amR88888r   c                 p   |                      d          D ]}t          |          }|                                }t          |          }||= |                     ||d |         ||dz   d          z              |                     t          |          |dz
             |                     |           d S rn  )r?   rW   copyr   rh   rU   re   rC   r+   r)   rd   r   s        r   rp  zDelItemTests.test_randomk  s    %%A%.. 	 	AAAA!A!Q"1"!a%&&	 1222SVVQU+++NN1	 	r   c                     t          g d          }t          |          }|                     |j                   |                     t
          |j        d           d S )N)rL      r   r      r   r   rb   r_   r   BufferErrorr~  rg   s      r   rw  zDelItemTests.test_importedu  sY    jjj!!A$$$+q}b99999r   Nrj   rw   rx   r  rp  r"   r   rw  r   r   r   ry  ry  `  sU        9 9 9   VG__: : _: : :r   ry  c                   &    e Zd Zd Zd Zd Zd ZdS )GetSliceTestsc           	         t          d          }|                     |d d          |           |                     |d d          |u            |                     |ddd         t          d                     |                     |ddd         t          d                     |                     |d d d         t          d	                     |                     |d
d          t          d                     |                     |dd          t          d                     |                     |d d
         t          d                     |                     |d d d         t          d                     |                     |d d
d         t          d                     |                     t          |j        t          d d d                     d S )Nz01001111 00001r  rJ   rZ  1010rR      0100011001rQ   00001r   10000101001111z10000111 100101000r   )r   rh   rb   r   r   r]  rM   rB   s     r   
test_slicezGetSliceTests.test_slice  s   %&&111q!!!111###2a7Xf%5%56661R6HUOO44433Q3)!4!4555122 1 1222122 2 23332A2 4 455544R4(+;"<"<===5Ab58F#3#3444*amU4q5I5IJJJJJr   c                     t          d          D ]g}t          d          }t          |          }|                                }|                                 |                     |d d d         |           hd S )NrQ  r   rR   )r<   r   r3   r  reverserh   rC   r>   r)   r+   rd   s        r   test_reversezGetSliceTests.test_reverse  st    r 	) 	)A#A!AAIIKKKQtttWa((((	) 	)r   c                    t          d          D ]}t          |          }t          d|          }t          d|          }|||         }|                     |                                |                                ||                    |                     t          |          t          ||z
  d                     |                     |j        |j                   d S Nr   r   )r<   r3   r	   rU   r   rW   maxr*   )rC   r)   r+   r   jrd   s         r   test_random_step1zGetSliceTests.test_random_step1  s    s 	1 	1A!A1A1A!A#AQVVXXqvvxx!}555SVVSQ]]333QXqx0000	1 	1r   c           	         t          d          D ]}t          |          }|                     |          }||         }|                     t	          |          t	          t          |          |                              |                     t          |          |                                |                    |                     |j        |j                   d S )Nr   )r<   r3   rO   rU   rW   r6  rA   r*   )rC   r)   r+   r  rd   s        r   rp  zGetSliceTests.test_random  s    s 	1 	1A!A!!!$$A!ASVVSq!%5%5666T!WWahhjjm444QXqx0000	1 	1r   N)rj   rw   rx   r  r  r  rp  r   r   r   r  r  ~  sS        K K K) ) )1 1 11 1 1 1 1r   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Z ee          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 ee          d             ZdS )SetSliceTestsc                 N   |                      d          D ]}t          |          }t          |          }t          |          |d|<   |                     ||           |                     ||u            t          |          }t          |          |d d <   |                     ||           |                     ||u            t          |          }||d d d<   |                     |                                |                                d d d                    d S )Nr&   ro  r   rR   )r?   rW   r   rU   rb   rA   )rC   r+   r)   rd   s       r   r  zSetSliceTests.test_simple  s   %%A%.. 	; 	;AAAAa[[AacFQ"""Q!V$$$AA;;AaaaDQ"""Q!V$$$AAdddGQXXZZDDbD)9::::	; 	;r   c                 (   |                      d          D ]}t          |          }t          d          D ]}|                     |          }|j        dk    rt          d          n!t          t          |          |                   }t          |          }t          |          }|||<   |                     |           |                                }|                                ||<   | 	                    |t          |                     ڌd S )Nr&   ro  r9   )
r?   rW   r<   rO   rN   r   r   re   rA   rU   )	rC   r+   len_ar>   r  len_brd   r  ccs	            r   rp  zSetSliceTests.test_random  s    %%A%.. 	2 	2AFFE2YY 	2 	2%%e,,)*1	"#eEll1o:N:NUOOQKK!q!!!XXZZ

1  HRLL1111	2	2 	2r   c           	      l   |                                  D ]}t          |          }dD ]}t          d d |          }|                     t          t	          |          |                   |           |                                }|||<   |||<   |                     |t          |                     d S )N)rR   r&   )r?   rW   rM   rU   r<   rA   r   )rC   r+   r)   rN   r  rh  s         r   test_self_randomzSetSliceTests.test_self_random  s    %%'' 		2 		2AAA 2 2$d++  U1XXa[!1!11555XXZZ!1  HRLL11112		2 		2r   c           
      <   dD ]}t          |          }dD ]}t          |          }|                                }||||<   |                     |||z              |                     t          |          t          |          t          |          z              ||dd<   |                     |||z   |z              |                     |           |                     t          |          t          |          dt          |          z  z              d S )N)r   r&   r9   W   )r   r&   r9   c   r   rJ   r3   r  rU   rW   re   )rC   r)   r+   r   r   rd   s         r   test_specialzSetSliceTests.test_special  s    	> 	>A!A! 	> 	>aLLFFHH!A#  AE***  QQ#a&&999!A#  AEAI...q!!!  QQ!c!ff*)<====	>	> 	>r   c                    t          d          D ]}t          d          }t          |          }t          d|          }t          dd          }t          |          }|                                }||||<   |                     ||d |         |z   ||d          z              |                     t          |          t          |          |z              |                     |           d S )Nr  r   r     )	r<   r   r3   r	   r  rh   rU   rW   re   )rC   r>   r)   r+   pr   r   rd   s           r   r	  zSetSliceTests.test_range  s    s 
	 
	A#A!A1A3A!AAAacFQ"1"	AabbE 1222SVVSVVaZ000NN1
	 
	r   c                    t          d          D ]}t          dd          }t          |          }t          d|          }t          d|          }t          dd          }t          |          }|                                }||||<   |                                }	|                                |	||<   |                     |                                |	           ||k    rf|                     ||d |         |z   ||d          z              |                     t          |          ||z   |z
  t          |          z              n_|                     ||d |         |z   ||d          z              |                     t          |          |t          |          z              |                     |           d S )Nr  r   r   ,  )	r<   r	   r3   r  rA   rU   rh   rW   re   )
rC   r>   r)   r+   p1p2r   r   rd   b_lsts
             r   test_resizezSetSliceTests.test_resize  s   s 	 	A3A!AABAB3A!AAAbeHHHJJE88::E"R%LQXXZZ///Rxx  AcrcFQJ233$7888  QR"s1vv)=>>>>  AcrcFQJ233$7888  QSVV444NN1%	 	r   c                    t          d          }||d d d<   |                     |t          d                     ||dd <   |                     |t          d                     ||d d<   |                     |t          d                     t          d          }||d d<   |                     |t          d	                     ||d
d <   |                     |t          d                     ||d
dd<   |                     |t          d                     t          d          }||d
d
<   |                     |t          d                     ||d d <   |                     |t          d                     d S )N1100111rR   1110011r  11101110011rK   111011100111001101001010011rJ   01010011rY  r&   010101001111r2  010111r   rU   rB   s     r   	test_selfzSetSliceTests.test_self  s   Y$$B$HY//000!""H]33444#2#H%788999W#2#HX..///!##HZ00111!Bq&	H^44555UOO!A#HX..///!!!HX../////r   c                     t          d          }t          |          }||d d d<   |                     ||           |                     |t          d                     d S )N11100000r   rR   00000111r  rg   s      r   test_self_shared_bufferz%SetSliceTests.test_self_shared_buffer  sj     Z  A$$B$AHZ0011111r   c                 
   t          d          }t          t          |          dd                   }|                     |t          d                     ||ddd<   |                     |t          d	                     d S )
N11111111 11000000 00000000r&   rJ   r   11000000r   r   rR   z11111111 00000011 00000000r   r  rU   rg   s      r   test_self_shared_buffer_2z'SetSliceTests.test_self_shared_buffer_2+  s     122JqMM!A#.///HZ00111"Qr'
H%ABBCCCCCr   c                    t          d          }t          t          |          d d                   }t          t          |          dd                    }|                     |t          d                     |                     |t          d                     ||d d d<   |                     |t          d                     |                     |t          d	                     d S )
Nr  rJ   r   r&   z11111111 11000000z11000000 00000000rR   z00000011 11111111z11111111 00000011 11111111r  r/  s       r   test_self_shared_buffer_3z'SetSliceTests.test_self_shared_buffer_3:  s     122JqMM"1"-...JqMM!""-...H%899:::H%899:::$$B$H%899:::H%ABBCCCCCr   c                 x   t          d          }t          d          |dd<   |                     |t          d                     |                    d           t          d          |d d d<   |                     |t          d                     |                    d           t          d	          |d
d <   |                     |t          d                     t	          d          }t          d          |ddd<   |                     |t          d                     |                    d           t          d	          |dd<   |                     |t          d                     t	          d          }t          d          |d dd<   |                     |t          d                     d S )N   0010rJ   r   z11001011 1111r   111001z10101000 0010111r:   00011111101r&   r  z01010100 0100rL   z00000111 000000010111rR   z00000001 1101)r,   r   rU   r'   r  rB   s     r   test_setslice_bitarrayz$SetSliceTests.test_setslice_bitarrayI  s   HH&!!!A#H_55666	(####A#H_55666	!""HX..///"IIW%%!Bq&	H_55666	%!A#H%788999"IIW%%&2b&	H_5566666r   c                    t          d          }t          d          |dd<   |                     |t          d                     t                      |dd<   |                     |t          d                     t          d          }t          d          |d	d<   |                     |t          d
                     t          d          |d d <   |                     |t          d                     t          d          }t          d          |dd<   |                     |t          d                     t          d          |dd<   |                     |t          d                     d S )N1111000r:   1110001rJ   rL   11010000r&   r  r  11111100r  r  r   11011r  rB   s     r   test_bitarray_2zSetSliceTests.test_bitarray_2_  sU   V%!A#HY//000!A#HV,,---V&!!!A#HX..///!!!HUOO,,, X$!A#HY//000#!A#HW--.....r   c                 `   t          d          }t          d          }||dd<   |                     |t          d                     |                     t          |          t                     |                     |t          d                     t          d          }||d d d<   |                     |t          d                     |                     |           |                     t          |          t                     |                     |t          d                     d S )Nz11111111 1111r  rJ   r   z11000011 1111011100z01101011 0101)r   r   rU   r^   re   rg   s      r   r4  z!SetSliceTests.test_frozenbitarrays  s   _%%6""!A#H_55666a.111HV,,---8$$##A#H_55666qa.111HX../////r   c                    t          d          D ],}t          d          }t          |          }|                                }t          t	          d|                    }|                                }t	          d|t          |          z
            }|t          |          z   }|                     ||z
  t          |                     ||||<   ||||<   |                     |                                |           |                     t          |          |           |                     |           .d S )Nr  r   r   )r<   r   r3   rA   r	   rW   rU   re   )	rC   r>   r)   r+   lst_ard   lst_br   r  s	            r   )test_setslice_bitarray_random_same_lengthz7SetSliceTests.test_setslice_bitarray_random_same_length  s   s 	 	A#A!AHHJJE'!Q--((AHHJJE1s1vv:&&ACFF
AQUCFF+++AacFE!A#JQXXZZ///SVVQ'''NN1	 	r   c                    t          d          D ]}t          d          }t          |          }|                                }t          t          d                    }|                                }|                     |d          }|||<   |||<   |                     |                                |           |                     |           d S )Nr   r  r  r&   rN   )r<   r   r3   rA   rO   rU   re   rC   r>   r)   r+   r  rd   r  r  s           r   test_bitarray_random_step1z(SetSliceTests.test_bitarray_random_step1  s    r 
	 
	A#A!AHHJJE)C..))AHHJJE!!!!!,,AAaDE!HQXXZZ///NN1
	 
	r   c                 .   t          d          D ]}t          d          }t          |          }|                                }t          t          d                    }|                                }|                     |          }	 |||<   n# t
          $ r d }Y nw xY w	 |||<   n# t
          $ r d }Y nw xY w||                     |d u            |                     |                                |           |                     |           d S )Nr  r   )	r<   r   r3   rA   rO   r   rX   rU   re   r  s           r   test_bitarray_randomz"SetSliceTests.test_bitarray_random  s2   s 	" 	"A"A!AHHJJE)B--((AHHJJE!!!$$A!    a    y....  U333q!!!!+	" 	"s$   BB B $B**B98B9c                    t          d          }d|d d d<   |                     |t          d                     d|dd <   |                     |t          d                     d|dd <   |                     |t          d	                     d|d d<   |                     |t          d
                     d|d d <   |                     |t          d                     d|dd<   |                     |t          d                     d|dd d<   |                     |t          d                     d|ddd<   |                     |t          d                     d|dd<   |                     |t          d                     d|d d <   |                     |t          d                     d|ddd<   |                     |t          d                     d S )N11111111FrJ   01010101Tr  01011111rY  0101110011011100rL   11000111r&   r:   10000110r   1101011000000000rR   00011110r  rB   s     r   test_bool_explicitz SetSliceTests.test_bool_explicit  s   Z  ##A#HZ00111!##HZ00111"##HZ00111#1#HZ00111!!!HZ00111!A#HZ00111!$Q$HZ00111!Aa%HZ00111!A#HZ00111!!!HZ00111"Qr'
HZ0011111r   c                 |   t          d          D ]}t          d          }t          d|          }t          ||          }t          |          }d|||<   |                     |                    d          ||z
             t          |          }d|t          ||          <   |                     ||           d S )Nr  r;   r   r&   )r<   r   r	   r   rU   ra   )rC   r>   r)   r=   stopr+   rd   s          r   test_bool_step1zSetSliceTests.test_bool_step1  s    s 		# 		#A$AAqMME5!$$DAAeDjMQWWQZZ666A$%AeE4  !Q""""		# 		#r   c                    t          d          D ]}t          d          }t          |          }|                                }|                     |          }t          t          |          |                   }t          d          }|||<   ||gz  ||<   |                     |                                |           |                    d           d||<   |                     |	                    d          |           d S )Nr   r  r&   r   )
r<   r   r3   rA   rO   rW   r   rU   r'   ra   )rC   r>   r)   r+   rh  r  slicelengthre  s           r   test_setslice_bool_random_slicez-SetSliceTests.test_setslice_bool_random_slice  s    s 	6 	6A#A!AB!!!$$AeAhhqk**KAAAaD1#%BqEQXXZZ,,,HHQKKKAaDQWWQZZ5555	6 	6r   c           	         d}t          d          D ],}t          dd          }t          |          }|                                }t	          t          d          t          d|          t          dd                    }|                     |j        |j        z
  dk               ||j        |j        z
  dk    z  }t          t          |          |                   }|                     |dk               t          d          }|||<   ||gz  ||<   |                     |                                |           .|                     |d	k               d S )
Nr   r  i  i  r;   r&   r     r  )r<   r   r3   rA   rM   r	   rX   r  r=   rW   r   rU   )	rC   cntr>   r)   r+   rh  r  r  re  s	            r   test_setslice_bool_stepz%SetSliceTests.test_setslice_bool_step  s2   s 	- 	-A$%%A!ABiooyq'9'971c??KKAOOAFQW,122216AG#t++CeAhhqk**KOOK!O,,,AAAaD1#%BqEQXXZZ,,,,c	"""""r   c           	         t          d          }d|d d d<   |                     |t          d                     d|dd <   |                     |t          d                     |                    t          dd d           d           |                     |t          d	                     |                     t
          |j        t          d d d          d
           |                     t
          |j        t          d dd           d           |                     t          |j        t          d dd           d           d S )Nr  r   rJ   r  r&   r  r  rY  r  r:   rR   r   )r   rU   r   rM   r   r   r   rB   s     r   test_to_intzSetSliceTests.test_to_int  s#   Z  ##A#HZ00111!##HZ00111	eBd++Q///HZ00111*amU4q5I5I1MMM*amU4D5I5I2NNN)Q]E$44H4H#NNNNNr   c           
      "   t          d          }t          ddd           }|                     t          |j        |d           |                     t          |j        |d            |                     t          |j        |d           d||<   |                     |t          d                     |                     t          d|j        t          d d d          t          d	                     |                     t          d
|j        t          d d d          t          d	                     |                     t          d|j        t          d d d          t          d                     |                     |t          d                     d S )Nr  rJ   r   333333?0110F11000011z@attempt to assign sequence of size 3 to extended slice of size 4r  z@attempt to assign sequence of size 3 to extended slice of size 2r  z@attempt to assign sequence of size 7 to extended slice of size 8rR   0001000)r   rM   r   r   r   rU   rv   r   rC   r+   r  s      r   test_invalidzSetSliceTests.test_invalid  s{   Z  !Q)Q]As;;;)Q]At<<<)Q]Av>>>!HZ00111  NM5tQ//%	B 	B 	B 	  NM5tQ//%	B 	B 	B 	  NM5tR00(92E2E	G 	G 	G 	HZ0011111r   c                    t          g d          }t          d|          }|                     |j                   d|dd<   |                     |t          g d                     d|ddd	<   |                     |t          g d
                     t          d          |dd<   |                     |t          g d                     d S )Nrr  r/   rs  r&   rQ   rc  )rL      r  r:   r   rJ   )rL      r  r:   z11110000 0011rQ  )rL   r      r:   rv  rg   s      r   rw  zSetSliceTests.test_imported#  s    lll##HQ///$$$!B$I&8&8&899:::!Bq&	I&8&8&899:::?++!B$I&8&8&899:::::r   N)rj   rw   rx   r  rp  r  r  r	  r  r  r  r  r"   r   r  r  r  r4  r  r  r  r  r  r  r  r  r  rw  r   r   r   r  r    s       ; ; ;"2 2 2
2 
2 
2> > >    *0 0 0.2 2 2D D D VG__D D _D7 7 7,/ / /(0 0 0  "  " " "02 2 22
# 
# 
#6 6 6 # # #$O O O2 2 2. VG__
; 
; _
; 
; 
;r   r  c                   T    e Zd Zd Zd Zd Zd Zd Z ee	          d             Z
dS )DelSliceTestsc           	         t          d          }|dd= |                     |t          d                     |d d d= |                     |t          d                     t          d          }|ddd= |                     |t          d	                     t          d
          }|d dd= |                     |t          d                     |dd= |                     |t          d                     |                     t          |j        t          d d d                     |                     t          |          d           |d d = |                     |t                                 d S )Nz10101100 10110r:   r   10101100111z10101100 101101111rL   rZ  z1010100 0101111z10101100 1011011rY  z10101100 011r   r  )r   rU   r   r   r~  rM   rW   rB   s     r   r_  zDelSliceTests.test_explicit2  sm   %&&acFHY//000cccFHV,,---)**a1fIH%677888'((fr"fIH^44555acFH^44555*amU4q5I5IJJJQ$$$aaaDHJJ'''''r   c                 V   dD ]}t          |          }|                                }|d d= ||d = |                     ||           |dd = |                     ||d d                    |d d = |                     t          |          d           |                     |           d S )N)r   r&   r9   I   r   r9   r  r&  s       r   r  zDelSliceTests.test_specialE  s     
	 
	A!AA"1"!""Q""""##Q#2#'''!!!SVVQ'''NN1
	 
	r   c                    t          d          D ]}t          d          }t          |          }|                     |          }t	          t          |          |                   }|                                }||= |                     t	          |          ||z
             |                     |           |                                }||= | 	                    |t          ||j                             d S )Nr  r  rS   )r<   r   r3   rO   rW   r  rU   re   rA   rh   r   r*   )rC   r>   r)   r+   r  r  r  c_lsts           r   rp  zDelSliceTests.test_randomR  s    s 	B 	BA#A!A!!!$$AeAhhqk**KA!SVVQ_555NN1HHJJEaQqx @ @ @AAAA	B 	Br   c                 B   t          d          D ]}t          |          }t          d|          }t          dd          }|                                }||||z   = |                     ||d |         |||z   d          z              |                     |           d S r  )r<   r3   r	   r  rh   re   )rC   r)   r+   r  r   rd   s         r   r	  zDelSliceTests.test_range`  s    s 	 	A!A1A3AA!AE'
Q"1"!a%&&	 1222NN1	 	r   c                     d}t          | dz
  |          D ]`}|dk    r	t          |          }|                                }|d d |= |d d |= |                     |                                |           ad S )Nr   r&   r   )r<   r3   rA   rU   )rC   r)   rN   r+   r   s        r   test_range_stepzDelSliceTests.test_range_stepl  s    1"q&!$$ 	. 	.Dqyy!A((**C&&D&	FFdFQXXZZ----	. 	.r   c                 8   t          g d          }t          |          }|                     |j                   |                     t
          |j        t          dd                     |                     t
          |j        t          dd                     d S )Nrr  r   r:      )r   r   rb   r_   r   r  r~  rM   rg   s      r   rw  zDelSliceTests.test_importedw  s    lll##A$$$+q}eArllCCC+q}eAqkkBBBBBr   N)rj   rw   rx   r_  r  rp  r	  r  r"   r   rw  r   r   r   r  r  0  s        ( ( (&  B B B
 
 
	. 	. 	. VG__C C _C C Cr   r  c                        e Zd Zd Zd Zd ZdS )GetMaskedIndexTestsc                     t          d          }t          d          }|                     ||         t          d                     |                     t          |j        t          d                     d S )N10010011010111100011011r   rU   r   r\  r]  rC   r+   masks      r   rf  zGetMaskedIndexTests.test_basic  sf    	""	""4(7"3"3444*amXf5E5EFFFFFr   c                 >   |                                  D ]t                    }|                                                              t	          d          z             t          |          |                              t	                                 t          |          |                                         t          |          |                     t                             fdt          |          D                        d S )Nr  c                 0    g | ]}|         
|         S r   r   r   r   r+   r(  s     r   r   z3GetMaskedIndexTests.test_random.<locals>.<listcomp>  s&    @@@qQ@ad@@@r   )
r?   rW   rU   ra   r   r  r,   r3   r6  r<   )rC   r)   r+   r(  s     @@r   rp  zGetMaskedIndexTests.test_random  s   %%'' 	B 	BAAAQqT17799x}}#<===88DQtWhjj11177DQtWa(((Q<<DT!D']]@@@@@E!HH@@@B B B B	B 	Br   c                     t          d          D ]l}|                     |t          dd                    }t          |          }t	          |          }d||<   |                     ||         ||                    md S )Nr  r&   rL   r  )r<   rO   r	   r3   r  rh   )rC   r)   r  r+   r(  s        r   test_random_slice_maskz*GetMaskedIndexTests.test_random_slice_mask  s    s 	, 	,A!!!'!Q--!88A!A88DDGQtWad++++	, 	,r   N)rj   rw   rx   rf  rp  r-  r   r   r   r   r     sG        G G GB B B , , , , ,r   r   c                   f    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
 ee          d	             Zd
S )SetMaskedIndexTestsc                    t          d          }t          d          }t          d          }t          d          }|                     t          |j        |d           |                     t          |j        |d           |||<   |                     ||           t          d          }|                     t          d|j        ||           d S )	Nr"  r#  z0 1 1100011110r&   rJ   r  z6attempt to assign mask of size 5 to bitarray of size 4)r   r   NotImplementedErrorr   r   rU   rv   r\  )rC   r+   r(  valr   rd   s         r   rf  zSetMaskedIndexTests.test_basic  s    	""	""	""	""-q}dAFFF*amT1===$C   V  DM4	$ 	$ 	$ 	$ 	$r   c                     t          d          }t          d          }t          d          }|||<   |                     |t          d                     d S )N00000001100110z10  10 1000100r  r/  s       r   test_issue225z!SetMaskedIndexTests.test_issue225  sa    YYY!Y	! 	! 	! 	! 	!r   c                     |                                  D ]Y}|                                }t          t          |                    }t	                      ||<   |                     ||           Zd S r   )r?   r  r  rW   r   rU   rC   r+   rd   r(  s       r   test_zeros_maskz#SetMaskedIndexTests.test_zeros_mask  sk    %%'' 	# 	#AAQ==DjjAdGQ""""		# 	#r   c                     |                                  D ]J}t          |          }t          |          }t          |          }|||<   |                     ||           Kd S r   )r?   rW   r,   r3   rU   )rC   r+   r)   r(  r  s        r   test_ones_maskz"SetMaskedIndexTests.test_ones_mask  sj    %%'' 	# 	#AAA77D!AAdGQ""""	# 	#r   c                 V   |                                  D ]}|                                }t          t          |                    }t          |                                          }|||<   ||t          |                    d                    <   |                     ||           d S r%   )r?   r  r3   rW   ra   r6  searchrU   )rC   r+   rd   r(  others        r   test_random_mask_set_randomz/SetMaskedIndexTests.test_random_mask_set_random  s    %%'' 	# 	#AASVV$$Ddjjll++EAdG&+Ad4;;q>>""#Q""""	# 	#r   c                    t          d          D ]}|                     |t          dd                    }t          t          |          |                   }t	          |          }|                                }t          |          }d||<   t	          |          }|x||<   ||<   |                     ||           d S )Nr  r&   rL   )r<   rO   r	   rW   r3   r  r  rh   )rC   r)   r  r  r+   rd   r(  r@  s           r   r-  z*SetMaskedIndexTests.test_random_slice_mask  s    s 		# 		#A!!!WQ]]33AeAhhqk**K!AA88DDGk**E""AdGadQ""""		# 		#r   c                 h   |                                  D ]}t          t          |          |j                  }|                                }|                     t          d|j        |d           t          |	                                          ||<   || z  }| 
                    ||           d S )NrS   zQmask assignment to bool not implemented;
`a[mask] = 0` equivalent to `a &= ~mask`r   )r?   r3   rW   r*   r  rv   r2  r   r  ra   rU   rC   r+   r(  rd   s       r   test_random_mask_set_zerosz.SetMaskedIndexTests.test_random_mask_set_zeros  s    %%'' 
	# 
	#ASVVAH555DA$$#;tQ	( ( (
 DJJLL))AdG$JAQ""""
	# 
	#r   c                 f   |                                  D ]}t          t          |          |j                  }|                                }|                     t          d|j        |d           t          |	                                          ||<   ||z  }| 
                    ||           d S )NrS   zPmask assignment to bool not implemented;
`a[mask] = 1` equivalent to `a |= mask`r&   )r?   r3   rW   r*   r  rv   r2  r   r,   ra   rU   rD  s       r   test_random_mask_set_onesz-SetMaskedIndexTests.test_random_mask_set_ones  s    %%'' 
	# 
	#ASVVAH555DA$$#:tQ	( ( (
 4::<<((AdGIAQ""""
	# 
	#r   c                     t          ddg          }t          d|          }t          d          }t          d          ||<   |                     |t          ddg                     d S )	Nr   r  r0   rs  00001111 00110011z 1001   01  10r      )r   r   rU   r/  s       r   rw  z!SetMaskedIndexTests.test_imported  sn    q$i  E!,,,())())!Iz:&>??@@@@@r   N)rj   rw   rx   rf  r8  r;  r=  rA  r-  rE  rG  r"   r   rw  r   r   r   r/  r/    s        $ $ $! ! !# # ## # ## # #
# 
# 
## # ## # # VG__A A _A A Ar   r/  c                   Z    e Zd Zd Zd Zd Zd Zd Zd Z e	e
          d             ZdS )	DelMaskedIndexTestsc                     t          d          }t          d          }||= |                     |t          d                     |                     t          |j        t          d                     d S )Nr"  r#  r  101)r   rU   r   r\  r~  r'  s      r   rf  zDelMaskedIndexTests.test_basic  se    	""	""dGHTNN+++*amXe__EEEEEr   c                     |                                  D ]K}|                                }t          t          |                    }||= |                     ||           Ld S r   )r?   r  r  rW   rU   r:  s       r   r;  z#DelMaskedIndexTests.test_zeros_mask  se    %%'' 	# 	#AAQ==D$Q""""	# 	#r   c                     |                                  D ]C}t          t          |                    }||= |                     |t	                                 Dd S r   )r?   r,   rW   rU   r   r'  s      r   r=  z"DelMaskedIndexTests.test_ones_mask  s\    %%'' 	, 	,AA<<D$Q

++++		, 	,r   c                     |                                  D ]=}|                    d          }||= |                     |t          |                     >d S r   )r?   ra   rU   r  )rC   r+   cnt0s      r   test_self_maskz"DelMaskedIndexTests.test_self_mask  s^    %%'' 	- 	-A771::D !Qd,,,,	- 	-r   c           
      V   |                                  D ]t                    }                                }t          |          |= |                     |t          fdt          |          D                                  |                     |                     d S )Nc              3   8   K   | ]}|         
|         V  d S r   r   r+  s     r   	<genexpr>z7DelMaskedIndexTests.test_random_mask.<locals>.<genexpr>*  s0      %L%LqDG%Lad%L%L%L%L%L%Lr   )r?   rW   r  r3   rU   r   r<   )rC   r)   rd   r+   r(  s      @@r   test_random_maskz$DelMaskedIndexTests.test_random_mask#  s    %%'' 		* 		*AAAAQ<<D$Q%%L%L%L%L%LE!HH%L%L%LLLN N N Q4%))))		* 		*r   c                     t          d          D ]j}|                     |          }t          |          }|                                }t	          |          }d||<   ||= ||= |                     ||           kd S Nr  r&   )r<   rO   r3   r  r  rh   )rC   r)   r  r+   rd   r(  s         r   r-  z*DelMaskedIndexTests.test_random_slice_mask/  s    s 	# 	#A!!!$$A!AA88DDG$1Q""""	# 	#r   c                 4   t          ddg          }t          |          }|                     |j                   |                     t
          |j        t          d                     |                     t
          |j        t          d                     d S )NrL   r:   r   rI     r  rg   s      r   rw  z!DelMaskedIndexTests.test_imported9  s    q!fA$$$+q}"#677	9 	9 	9 	+q}hrllCCCCCr   N)rj   rw   rx   rf  r;  r=  rS  rW  r-  r"   r   rw  r   r   r   rL  rL    s        F F F# # #, , ,- - -
* 
* 
*# # # VG__D D _D D Dr   rL  c                       e Zd Zd ZdS )CommonSequenceIndexTestsc                 *   t          ddg          dfddfD ]{\  }}t          d          }|                     t          ||j        |           |                     t          ||j        |d           |                     t          ||j        |           |d S )Nr&   rJ   z!multiple dimensions not supported)NzFbitarray indices must be integers, slices or sequences, not 'NoneType')gQ?zCbitarray indices must be integers, slices or sequences, not 'float'r  )r   r   rv   r   r]  r   r~  )rC   itemrq   r+   s       r   test_type_messagesz+CommonSequenceIndexTests.test_type_messagesG  s    1v CD41	
 
	J 
	JID# !!A$$YQ]DIII$$YQ]D!LLL$$YQ]DIIII
	J 
	Jr   N)rj   rw   rx   r`  r   r   r   r]  r]  E  s(        J J J J Jr   r]  c                   &    e Zd Zd Zd Zd Zd ZdS )GetSequenceIndexTestsc                 
   t          d          }|                     |g d         t          d                     |                     |dg dz           dt          d          z             |                     |dg         t          d                     |                     |g          t                                 |                     t          |j        d	d
g           |                     t          |j        dg           d S )N00110101 00)rJ   r  rZ  r   r  G   )rJ   r  r   rN  rR   r   r&   r9   ir&  rB   s     r   rf  z GetSequenceIndexTests.test_basicV  s    ]##===)8F+;+;<<<2			>*B%,@AAAB4(3--0002

+++*amaW===*amcU;;;;;r   c                    t          d          }g d}|t          j        d|          fD ]+}|                     ||         t          d                     ,|dxx         t          |          z  cc<   |                     |t	          |                   t          d                     |                     |t          |                   t          d                     |                     t          |j        ddg           |                     t          |j        ddg           |                     t          |j        t          |                     d S )Nz11001101 01)r&   r:   rY  r   r|  rJ   Br  )
r   r   rU   rW   r   r`   r   r   r]  r   )rC   r+   r   rd   s       r   
test_typesz GetSequenceIndexTests.test_types_  s&   ]##jjek#s+++ 	4 	4AQqT8E??3333A#a&&9S>>*HUOO<<<5::888)Q]QH===)Q]QH===)Q]E#JJ?????r   c                 D   |                                  D ]t                    }t          t          |          |dz            }|         }|                     |t          fd|D                                  |                     |j        j                   d S )NrJ   r   c              3   (   K   | ]}|         V  d S r   r   r   r   r+   s     r   rV  z4GetSequenceIndexTests.test_random.<locals>.<genexpr>q  s'      (;(;!1(;(;(;(;(;(;r   )r?   rW   r   r<   rU   r   r*   )rC   r)   r   rd   r+   s       @r   rp  z!GetSequenceIndexTests.test_randoml  s    %%'' 	1 	1AAA%((ad+++C#AQ(;(;(;(;s(;(;(; ; ;<<<QXqx0000	1 	1r   c                     t          d          D ]]}|                     |          }t          |          |         }t          |          }|                     ||         ||                    ^d S Nr  )r<   rO   r3   rh   )rC   r)   r  rr+   s        r   r	  z GetSequenceIndexTests.test_ranget  so    s 	) 	)A!!!$$AaA!AQqT1Q4((((		) 	)r   N)rj   rw   rx   rf  rh  rp  r	  r   r   r   rb  rb  T  sS        < < <@ @ @1 1 1) ) ) ) )r   rb  c                   `    e Zd Zd Zd Zd Zd Zd Zd Zd Z	 e
e          d             Zd	S )
SetSequenceIndexTestsc                    t          d          }d|g d<   |                     |t          d                     d|g <   |                     |t          d                     d|dg<   |                     |t          d                     d|d	dg<   |                     |t          d
                     |                     t          |j        ddgd           |                     t          |j        dgd           |                     t          |j        dgd           |                     t          |j        d           |                     t          |j        |           d S )Nr9   r&   rJ   r:   rL   r   rd  TrR   00110101 01r   r:   z00100101 00rJ   r=  )r:   rR   )r  rU   r   r   r\  r   r   r   rB   s     r   test_bool_basicz%SetSequenceIndexTests.test_bool_basic}  sI   "II,,,H]33444"H]334442$H]334441b'
H]33444*amaWa@@@*amaS!<<<)Q]QC===)Q]G<<<)Q]A66666r   c                 $   |                                  D ]z}t          |          }t          t          |          |dz            }|                                }t          d          }|||<   |D ]}|||<   |                     ||           {d S )NrJ   rj  r&   )r?   rW   r   r<   r  r   rU   )rC   r+   r)   r   rd   re  r   s          r   test_bool_randomz&SetSequenceIndexTests.test_bool_random  s    %%'' 	# 	#AAA%((ad+++CAAAAcF  !Q""""	# 	#r   c                    t          d          D ]|}|                     |          }t          |          |         }t          |          }|                                }t	          d          x||<   ||<   |                     ||           }d S rY  )r<   rO   r3   r  r   rh   rC   r)   r  ro  r+   rd   s         r   test_bool_rangez%SetSequenceIndexTests.test_bool_range  s    s 	# 	#A!!!$$AaA!AA%a..(AaD1Q4Q""""	# 	#r   c           	         t          d          }t          d          |g d<   |                     |t          d                     t                      |g <   |                     |t          d                     t          d          |ddg<   |                     |t          d                     |                     t          |j        d	dgt          d                     |                     t          |j        d	gt                                 d
}|                     t          ||j        d	dgt          d                     d S )Nr9   r  rs  z00110001 0011rL   rR   rt  r&   z:attempt to assign sequence of size 2 to bitarray of size 3rJ   001)r  r   rU   r   r\  r   r   rv   )rC   r+   rq   s      r   test_bitarray_basicz)SetSequenceIndexTests.test_bitarray_basic  s'   "II"6**,,,H]33444

"H]33444d^^1b'
H]33444*amaWhtnnMMM*amaS(**EEEJ  S!"A	I 	I 	I 	I 	Ir   c                 j   |                                  D ]}t          |          }t          t          |          |dz            }t	          t          |                    }|                                }|||<   t          |          D ]\  }}||         ||<   |                     ||           d S )NrJ   rj  )r?   rW   r   r<   r3   r  rd  rU   )rC   r+   r)   r   r  rd   r   r  s           r   r  z*SetSequenceIndexTests.test_bitarray_random  s    %%'' 		# 		#AAA%((ad+++C#c((##AAAcF!#  1t!Q""""		# 		#r   c                 8   t          d          D ]}|                     |          }t          |          |         }t          |          }|                                }t          t	          |                    x||<   ||<   |                     ||           d S rn  )r<   rO   r3   r  rW   rh   ry  s         r   test_bitarray_rangez)SetSequenceIndexTests.test_bitarray_range  s    s 	# 	#A!!!$$AaA!AA#CFF+++AaD1Q4Q""""	# 	#r   c                 j   |                                  D ]}t          t          t          |                              }t	          |           |                                }|                                }|||<   t          |          D ]\  }}||         ||<   |                     ||           d S r   )r?   r6  r<   rW   r
   r  rd  rU   )rC   r+   r   rd   r  r   r  s          r   test_bitarray_random_selfz/SetSequenceIndexTests.test_bitarray_random_self  s    %%'' 		# 		#AuSVV}}%%CCLLLAAAcF!#  1t!Q""""		# 		#r   c                 |   t          g d          }t          d|          }|                     |j                   d|t	          ddd          <   |                     |t          g d                     t          d	d
          |t	          dd          <   |                     |t          g d                     d S )Nr   r&   rJ   r:   r0   rs  r&   r       rQ   )            z00001111 01r/   r9   )r   r   r  r  )r   r   rb   r_   r<   rU   rg   s      r   rw  z#SetSequenceIndexTests.test_imported  s    lll##E!,,,$$$%2q//I&>&>&>??@@@"=(;;%2,,I&>&>&>??@@@@@r   N)rj   rw   rx   ru  rw  rz  r~  r  r  r  r"   r   rw  r   r   r   rq  rq  {  s        7 7 7 	# 	# 	## # #I I I
# 
# 
## # #
# 
# 
# VG__A A _A A Ar   rq  c                   T    e Zd Zd Zd Zd Zd Zd Z ee	          d             Z
dS )DelSequenceIndexTestsc                 H   t          d          }|g d= |                     |t          d                     |g = |                     |t          d                     |dg= |                     |t          d                     t          d          }|g d= |                     |t          d                     |                     t          |j        ddg           |                     t          |j        dg           |                     t
          |j        d	           d S )
Nrd  )rJ   r  r   r   001100rJ   00100)r   r   rJ   rJ   r  r   r&   r9   )r&   r:   )r   rU   r   r\  r~  r   rB   s     r   rf  z DelSequenceIndexTests.test_basic  s   ]##lllOHX..///bEHX..///qcFHW--...]##   !HX..///*amaW===*ambT:::)Q]F;;;;;r   c                     |                      d          D ]O}|                                }t          t          |                    }||= ||g= |                     ||           Pd S rn  )r?   r  r   rW   rU   rC   r+   rd   r   s       r   test_delete_onez%DelSequenceIndexTests.test_delete_one  st    %%A%.. 	# 	#AA#a&&!!A!afQ""""		# 	#r   c           
         t          d          D ]}t          |          }t          t          |          t          d|                    }|                                }||= |                     t          |          |t          t          |                    z
             t          t          |          d          D ]}||= |                     ||           d S )Nr  r   rj  Tr  )	r<   r3   r   r	   r  rU   rW   r7  sorted)rC   r)   r+   r   rd   r   s         r   rp  z!DelSequenceIndexTests.test_random  s    s 	# 	#A!A%((gamm444CA#SVVQSXX%6777CHHd333  aDDQ""""	# 	#r   c                     |                                  D ]`}t          t          t          |                              }t	          |           ||= |                     t          |          d           ad S r   )r?   r6  r<   rW   r
   rU   )rC   r+   r   s      r   test_shufflez"DelSequenceIndexTests.test_shuffle  sq    %%'' 	( 	(AuSVV}}%%CCLLL#SVVQ''''		( 	(r   c                     t          d          D ]k}|                     |          }t          |          |         }t          |          }|                                }||= ||= |                     ||           ld S rn  )r<   rO   r3   r  rh   ry  s         r   r	  z DelSequenceIndexTests.test_range  s    s 	# 	#A!!!$$AaA!AA!adQ""""	# 	#r   c           	      8   t          g d          }t          |          }|                     |j                   |                     t
          |j        t          ddd                     |                     t
          |j        t          d                     d S )Nr  r   r   r  rQ   )r   r   rb   r_   r   r  r~  r<   rg   s      r   rw  z#DelSequenceIndexTests.test_imported  s    lll##A$$$+q}eAr1ooFFF+q}eAhh?????r   N)rj   rw   rx   rf  r  rp  r  r	  r"   r   rw  r   r   r   r  r    s        < < <"# # #	# 	# 	#( ( (# # # VG__@ @ _@ @ @r   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	 e
e          d             Z e
ed	k    pe          d
             Zd Zd ZdS )	MiscTestsc                     t          d          }|                     |t                      |                     t          |t                               d S )Nr2  )r   rT   rb   
isinstancero   rB   s     r   test_instancecheckzMiscTests.test_instancecheck  sG    UOOa***As++,,,,,r   c                 &   |                      t          t          d                    d           |                      t          t          d                    d           |                      t          t          d                    d           d S )Nr   Fr   Tr  )rU   r   r   r}   s    r   test_booleannesszMiscTests.test_booleanness$  st    hrll++U333hsmm,,d333hsmm,,d33333r   c                     |                                  D ]A}g }t          |          D ]}|                    |           |                     ||           Bd S r   )rD   r   r^  rU   )rC   r   accrd   s       r   test_iteratezMiscTests.test_iterate)  sk    ##%% 	' 	'CCc]]  

1S#&&&&		' 	'r   c                 P   t          t          d                    }|                     |d           dD ]O}t          |          }|                     t          |          t                     |                     ||           P|                     t          t          |           d S )Nr2  bitarrayiterator)r   r&   r&   )	r   r   rl   nextrU   r^   r   r   StopIteration)rC   itr   r_  s       r   r   zMiscTests.test_iter10  s    (5//"""0111 	( 	(C88DT$ZZ---T3''''-r22222r   c                    |                                  D ]i}|                                }|                     t          |          |           |                     t          t	          |                    |           jd S r   )r?   rA   rU   r6  r   rC   r+   rh  s      r   r   zMiscTests.test_iter29  su    %%'' 	0 	0ABT!WWb)))T$q'']]B////	0 	0r   c                     t          d          }|dd         |dd<   |d d         |dd <   t          d          }|                     ||           d S )N00110111001r   r   r&   r:   rR   01010111000r  rg   s      r   test_assignmentzMiscTests.test_assignment?  sb    ]##1Q3!A#2A2"##]##Ar   c                      G d dt                     }|                                 D ]R} ||d          }t          t          |                    D ]'}|                     ||         ||dz                       (Sd S )Nc                        e Zd Zd Zd Zd ZdS )8MiscTests.test_subclassing.<locals>.ExaggeratingBitarrayc                 ,    t          j        | |          S r   )r   __new__)clsdataoffsets      r   r  z@MiscTests.test_subclassing.<locals>.ExaggeratingBitarray.__new__I  s    'T222r   c                     || _         d S r   )r  )rC   r  r  s      r   __init__zAMiscTests.test_subclassing.<locals>.ExaggeratingBitarray.__init__L  s    $r   c                 <    t          j        | || j        z
            S r   )r   r]  r  )rC   r   s     r   r]  zDMiscTests.test_subclassing.<locals>.ExaggeratingBitarray.__getitem__O  s    +D!dk/BBBr   N)rj   rw   rx   r  r  r]  r   r   r   ExaggeratingBitarrayr  G  sF        3 3 3% % %C C C C Cr   r  i  )r   r?   r<   rW   rU   )rC   r  r+   rd   r   s        r   test_subclassingzMiscTests.test_subclassingF  s    		C 		C 		C 		C 		C8 		C 		C 		C %%'' 	4 	4A$$Q--A3q66]] 4 4  1qT{33334	4 	4r   c                    t          d          }dD ]I}d|z   }|                     t          |j        |           |                     t          t           |           Jt          d          }|                     t          |j        d           d S )Nr&   r   r&               r   l          )r   r   OverflowError__imul__)rC   r+   r   r)   s       r   test_overflowzMiscTests.test_overflowW  s    QKK 	: 	:AAAmQZ;;;mXq9999W-W=====r   r  c                 J   t          d          }|                     t          |j        d           dD ]&}|                     t          t           d|z              '	 t          d          }n# t          $ r Y d S w xY w|                     t          t           j        |d           d S )Ni@B iC  r  l        iT)r   r   r  r  MemoryErrorr^  rC   r+   r   s      r   test_overflow_32bitzMiscTests.test_overflow_32bitb  s    X-U;;; 	F 	FAmX1}EEEE	''AA 	 	 	FF	-!TBBBBBs   A+ +
A98A9c                     t                      }|                     t          t          |           |                     t          t          |dfg           d S )Nr   )r   r   r   hashr8  rB   s     r   test_unhashablezMiscTests.test_unhashablen  sG    JJ)T1---)TQJ<88888r   c                    ddl m} t          d          }|                     ||j                   |                     ||j                   |                     ||j                   |                     ||j                   t          j	        d d         dk    r|                     ||j
                   t          j        dk    r*|                     t          ||j                             d S d S )Nr   )abcr}  rJ   )r:   r  win32)collectionsr  r   rT   IterableSizedSequenceMutableSequencer   r   Bufferplatformrb   r  Hashable)rC   r  r+   s      r   test_abczMiscTests.test_abcs  s    ######UOOa...a+++a...a!4555BQB7**!!!SZ000<7""Z3<8899999 #"r   N)rj   rw   rx   r  r  r  r   r   r  r  r"   r   r  r   r  r  r  r   r   r   r  r    s        - - -
4 4 4
' ' '3 3 30 0 0  4 4 4" VG__> > _> VGqL#G$$	C 	C %$	C9 9 9
: : : : :r   r  c                   r    e Zd Zd Zd Zd Zd Zd Z ee	          d             Z
d Zd Zd	 Zd
 Zd ZdS )PickleTestsc                 $   t          d          }d|_        d|_        t          j        t          j        |                    }|                     ||           |                     |j        d           |                     |j        d           d S )N00110barbaz)r   r   ypickleloadsdumpsrU   rg   s      r   test_attributeszPickleTests.test_attributes  s    7##La))Ae$$$e$$$$$r   c                 z   t          d          }|                     |j                   |                     t	          |          t                      t          j        t          j        |                    }|                     |j                   |                     t	          |          t                      d S )Nr   r   )r   rX   r_   rU   r^   r  r  r  rg   s      r   test_readonlyzPickleTests.test_readonly  s    D!!!
###a(+++La))
###a(+++++r   c                     dD ]S}t          |          }t          j        t          j        |                    }|                     |j        |           Td S r)  )r   r  r  r  rU   r*   )rC   r*   r+   rd   s       r   r   zPickleTests.test_endian  s]    % 	/ 	/F'''AV\!__--AQXv....	/ 	/r   c                     t          dd          }d|_        t          t           ddddfddif}|                     |                                |           d S )Nz11001111 01001r/   r  s   r:   r&   quux)r   r  r   rU   
__reduce__rC   r+   r   s      r   test_reduce_explicitz PickleTests.test_reduce_explicit  s^    +X66&Xq!<| 	-----r   c                 t   	 |j         }n# t          $ r d }Y nw xY wt          t          |          |                                |j        |j        t          |j                  f|f}| 	                    |
                                |           t          |d          }| 	                    ||           | 	                    t          |          t          |                     | 	                    |j        |j                   | 	                    |j        |j                   |                     |           d S r%   )__dict__AttributeErrorr   r^   r   r*   rY   r   r_   rU   r  re   )rC   r+   attrsr   rd   s        r   check_reducezPickleTests.check_reduce  s%   	JEE 	 	 	EEE	 $Q			AJ 	 	---#SV,Aa$q''***18,,,QZ000qs   
 c                     |                                  D ]W}|                     |           t          |          }|                     |           d|_        |                     |           Xd S )N*   )r?   r  r   r   rg   s      r   test_reduce_randomzPickleTests.test_reduce_random  sz    %%'' 	! 	!Aa   q!!Aa   AEa    	! 	!r   c                    t          t          dddd          }|                     t          |          d           |                     |j        d           |                     |           t          t          dddd          }|                     |t          d                     |                     |j        d           |                     |           d S )Nr   r/   r      r0   r&   0000111)r   r   rU   rW   r*   re   rB   s     r   test_reconstructor_explicitz'PickleTests.test_reconstructor_explicit  s    #Hc8QBBQ###8,,,q#HguaCCHY//0005)))qr   c           
         |                      t          dt          ddddd           |                      t          dt          t          dddd           |                      t          dt          t          dddd           |                     t          t          t          d	dd
d           |                      t          dt          t          dddd           |                     t          t          t          d	ddd           |                      t          dt          t          dddd           |                      t          dt          t          ddd
d           |                     t          t          t          d	dd
d           d S )Nz/first argument must be a type object, got 'str'r   r   r0   r   z#'list' is not a subtype of bitarrayz(second argument must be bytes, got 'int'{   r  r&   z<bit-endianness must be either 'little' or 'big', not 'small'smallr<  zinvalid number of pad bits: 8r   rQ   zinvalid number of pad bits: 1)rv   r   r   r6  r   r   r   r}   s    r   test_reconstructor_invalid_argsz+PickleTests.test_reconstructor_invalid_args  s     H#UC1	> 	> 	> 	  <#T3q!	= 	= 	=
 	  A#XsE1a	A 	A 	A
 	)%<"GS!Q	8 	8 	8  J#XsGQ	C 	C 	C 	)%<"GUC	< 	< 	<  7#XtUAq	B 	B 	B 	  7#XsE1a	A 	A 	A 	)%<"GUAu	> 	> 	> 	> 	>r   c                    t           j                            t           j                            t                    |          }t          |d          5 }t          j        |          }d d d            n# 1 swxY w Y   t          g d          D ]S\  }\  }}|d|z           }| 	                    |
                                |           | 	                    |j        |           | 	                    t          |          t                     |                     |j                   |                     |           |d|z           }	| 	                    |	
                                |           | 	                    |	j        |           | 	                    t          |	          t"                     |                     |	j                   |                     |	           Ud S )Nrb))110r/   )r2  r0   )1110000001001000000000000000001r/   )0010011110000000000000000000001r0   zb%dzf%d)r1   pathr  dirname__file__openr  loadrd  rU   r   r*   r^   r   rb   r_   re   r   rX   )
rC   fnr  fir   r   r  endrd   r   s
             r   
check_filezPickleTests.check_file  s   w||BGOOH55r::$ 	 BA	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  % 	&
 	&
 	&
 	 	 	 	KAx3 %!)AQVVXXq)))QXs+++T!WWh///QZ(((NN1%!)AQVVXXq)))QXs+++T!WWn555OOAJ'''NN1-	 	s   A44A8;A8c                 0    |                      d           d S )Nztest_281.pickle)r  r}   s    r   	test_loadzPickleTests.test_load  s    )*****r   c                 8   |                                  D ]}t          j        t          j        |                    }|                     |j                   |                     ||u            |                     ||           |                     |           d S r   )r?   r  r  r  rb   r_   rh   re   rg   s      r   rp  zPickleTests.test_random  s    %%'' 	 	AV\!__--AQZ(((Q!V$$$Q"""NN1	 	r   N)rj   rw   rx   r  r  r   r  r  r"   r   r  r  r  r  r  rp  r   r   r   r  r    s        	% 	% 	%, , ,/ / /. . .  2 VG__! ! _!	 	 	$> $> $>L  :+ + +    r   r  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
RichCompareTestsc                 X   t                      }dD ]}|                     |                    |          t                     |                     |                    |          t                     |                     |                    |          t                     |                     |                    |          t                     |                     |                    |          t                     |                     |                    |          t                     d S )N)Nr   r=  )	r   rU   __eq__NotImplemented__ne____ge____gt____le____lt__rC   r+   r   s      r   test_wrong_typesz!RichCompareTests.test_wrong_types'  s    JJ 	: 	:AQXXa[[.999QXXa[[.999QXXa[[.999QXXa[[.999QXXa[[.999QXXa[[.9999	: 	:r   c                 B   dD ]\  }}}t          ||                                           }t          ||                                           }t          |          }|                     ||k    |d                    |                     ||k    |d                    |                     ||k    |d                    |                     ||k    |d                    |                     ||k    |d                    |                     ||k     |d                    d S )N))r   r   101010)r   r   r  )r  r  r  )r   r   r  )r  r   r  )r  r   r  )r|  rl  r  )r  r  r  )r   r  r  )r   r   r  )r   r  r  r   r&   rJ   r:   r  rL   )r   r7   rU   )rC   sasbr   r+   rd   ro  s          r   r_  zRichCompareTests.test_explicit1  s   
 	+ 	+KBC T//1122AT//1122AAQ!VQqT***Q!VQqT***Q!VQqT***Q!VQqT***Q!VQqT***Q!VQqT****+	+ 	+r   c                 v   t          d          D ]h}|                     t          d          t          d          k               |                     t          d          t          d          k               it          dd          D ]}t	          ||                                           }t          ||                                           }|                     ||k               |                     ||k               d|d<   |                     ||k               |                     ||k               d S )NrL   r   r&   rQ  rR   )r<   rX   r3   rb   r,   r7   r   r  s        r   
test_eq_nezRichCompareTests.test_eq_neI  s!   q 	; 	;AOOIaLLIaLL8999Yq\\Yq\\9::::q" 	% 	%AQ**,,--AD..0011AOOAF###Q!V$$$AbEOOAF###Q!V$$$$	% 	%r   c                    |                      d          D ]}t          ||                                           }|                     ||k               |                     ||k               |                    t          t          |                               |                     ||k               |                     ||k               d S rn  )r?   r   r7   rX   rb   invertr   rW   rg   s      r   test_eq_ne_randomz"RichCompareTests.test_eq_ne_randomW  s    %%A%.. 	% 	%AD..0011AOOAF###Q!V$$$HHYs1vv&&'''OOAF###Q!V$$$$	% 	%r   c                 n   |                      ||k    ||k               |                      ||k    ||k               |                      ||k    ||k               |                      ||k     ||k                |                      ||k    ||k               |                      ||k    ||k               d S r   )rU   rC   r+   rd   r  r   s        r   checkzRichCompareTests.check`  s    aa(((aa(((aa(((aa(((aa(((aa(((((r   c                 *   |                      d          D ]{}t          |          }t          ||                                           }t	          |          }|                    |           |                     ||||         ||                    |d S rn  )r?   rW   r   r7   r   r  r   r  s        r   test_invert_random_elementz+RichCompareTests.test_invert_random_elementh  s    %%A%.. 	) 	)AAAD..0011A!AHHQKKKJJq!QqT1Q4((((	) 	)r   c           	      J   t          d          D ]}t          t          d          |                                           }t          t          d          |                                           }|                     ||t          |          t          |                     d S )Nr9   rQ  )r<   r   r   r7   r   rW   )rC   r>   r+   rd   s       r   	test_sizezRichCompareTests.test_sizep  s    r 	- 	-A2(:(:(<(<==A2(:(:(<(<==AJJq!SVVSVV,,,,	- 	-r   c                    |                                  D ]}|                                }t          d          rt          |          }|                                  D ]d}|                                }t          d          rt          |          }|                     ||||           |                     ||||           ed S r%   )r?   rA   r   r   r   )rC   r+   rh  rd   bbs        r   rp  zRichCompareTests.test_randomv  s    %%'' 		) 		)AB1~~ &"1%%))++ ) )XXZZq>> *&q))A

1aR(((

1aR(((()			) 		)r   N)rj   rw   rx   r  r_  r  r  r   r"  r$  rp  r   r   r   r
  r
  %  s        : : :+ + +0% % %% % %) ) )) ) )- - -
) 
) 
) 
) 
)r   r
  c                   B    e Zd Zd Zd Z ee          d             ZdS )SpecialMethodTestsc                    t          t                                }|                     |d           |                     t          |          t                     t          t          d                    }|                     |d           |                     t          |          t                     |                                 D ]}|                     t          |          t	          |                     t          t          |                    }|                     ||u            |                     ||           |                     |           d S )Nz
bitarray()r  zbitarray('10111'))	rk   r   rU   r^   ro   r?   evalrb   re   )rC   ro  r+   rd   s       r   	test_reprzSpecialMethodTests.test_repr  s(   L)))a#&&&'""##/000a#&&&%%'' 	 	AT!WWc!ff---T!WWAQ!V$$$Q"""NN1	 	r   c                    |                                  D ]}|                                }|                     ||u            |                     ||           t          j        |          }|                     ||u            |                     ||           t          j        |          }|                     ||u            |                     ||           d S r   )r?   r  rb   rh   deepcopyrg   s      r   	test_copyzSpecialMethodTests.test_copy  s    %%'' 	# 	#AAQ!V$$$Q"""	!AQ!V$$$Q"""a  AQ!V$$$Q""""	# 	#r   c                    t                      }t          j        |          }|                     ||                                           |                     t          |          t                     |                     |dk                t          d          }|                     t          j        |          dk               d S )Nr   @  r;   )r   r   	getsizeofrU   
__sizeof__r^   r   rX   )rC   r+   sizes      r   test_sizeofzSpecialMethodTests.test_sizeof  s    JJ}Qq||~~...dS)))s
###TNNa((4/00000r   N)rj   rw   rx   r+  r.  r"   r   r4  r   r   r   r(  r(    sU           # # # VG__1 1 _1 1 1r   r(  c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )SequenceTestsc                     t          d          D ]4}t          |          }|                     t          |          |           5d S rn  )r<   r   rU   rW   r   s      r   test_lenzSequenceTests.test_len  sK    s 	( 	(AASVVQ''''	( 	(r   c           
         t          d          }|t          d          z   }|                     |t          d                     |g dz   }|                     |t          d                     |dz   }|                     |t          d                     |dz   }|                     |t          d	                     |                     t          |j        d
           |                     |t          d                     |                     t
          |j        d           |                     t          |j        d           |                                 D ]}|                                }|                                 D ]}|                                }||z   }|                     |t          |	                                |	                                z                        |                     |j
        |j
                   |                     |           |                     ||           |                     ||           ǌd S )Nr}  r  001110r   r&   T001011r|  r  r&   r   T001101r   r  s   1101)r   rh   r   r   __add__r   r?   r  rU   rA   r*   re   )rC   r+   rd   rh  r&  r  s         r   test_concatzSequenceTests.test_concat  s   UOOHX..///HX..///IHX..///HX..///*ai;;;HUOO,,,)QY333*ai999%%'' 
	( 
	(AB))++ ( (VVXXE  HQXXZZ!((**-D$E$EFFF  18444q!!!  B'''  B''''(
	( 
	(r   c                 .   t          d          }|t          d          z  }|                     |t          d                     |g dz  }|                     |t          d                     |dz  }|                     |t          d                     |dz  }|                     |t          d	                     t          d          }|                     t          |j        g d
           |                     |t          d                     |                     t
          |j        d           |                     t          |j        d           |                                 D ]}|                                 D ]}t          |          }|}||z  }|                     |||z              |                     ||u            |                     ||           |                     |j	        |j	                   | 
                    |           d S )Nr}  r  r:  r;  	001110011r|  001110011100r=  001110011100101r   r  s   101)r   rU   r   r   __iadd__r   r?   rX   rh   r*   re   r  s        r   test_inplace_concatz!SequenceTests.test_inplace_concat  s   UOO	Xe__HX..///	\\\H[11222	U
H^44555	\H%677888UOO*aj)))<<<HUOO,,,)QZ444*aj&999%%'' 		" 		"A))++ " "QKKQ  AE***Q'''  A&&&  18444q!!!!"		" 		"r   c                 F   dD ]\  }}}t          |          }|                     ||z  t          |                     |                     ||z  t          |                     |                                }||z  }|                     |t          |                     d S )N))r   r   r   )r   1001111r   )rR   r{  r   )r  r   r   )r&   r  r  )rJ   r  r   )rL   r  11111)r   rU   r  )rC   r   r  ro  r+   r  s         r   test_repeat_explicitz"SequenceTests.test_repeat_explicit  s    
 	- 	-GAq! AQUHQKK000QUHQKK000AFAQ,,,,	- 	-r   c                 *   t                      }|                     t          |j        d            |                     t          |j        d           |                     t          |j        d            |                     t          |j        d           d S )N       @g      @)r   r   r   __mul__r  rB   s     r   test_repeat_wrong_argsz$SequenceTests.test_repeat_wrong_args  sy    JJ)QY555)QY444)QZ666)QZ55555r   c           
         |                                  D ]A}|                                }t          t          dd                    t	          dd          gz   D ]}t          ||                                z  |j                  }|                     t          |          t          |          t          d|          z             |                     ||z  |           |                     ||z  |           |                                }||z  }|                     ||           |                     |           |                     ||           Cd S )NrZ  rL   r   rS   r   )r?   r  r6  r<   r	   r   r   r*   rU   rW   r  rh   re   )rC   r+   rd   r   r   r  s         r   test_repeat_randomz SequenceTests.test_repeat_random  s@   %%'' 	# 	#AA%A,,''71c??*;; 
" 
"q16688|AH===  S3q66C1II+=>>>  Q,,,  Q,,,FFHHQ  C(((q!!!!Q""""	# 	#r   c                 L   t                      }|                     d|v            |                     d|v            |                     t                      |v            |                    d           |                     d|v            |                     d|v            t          dg          }|                     d|v            |                     d|v            |                    d           |                     d|v            |                     d|v            d S Nr   r&   )r   rb   rX   r^  rB   s     r   test_contains_simplez"SequenceTests.test_contains_simple  s   JJa   a   

a(((	Qa   aSMMQa   	QQr   c                    t                      }|                     |                    d          d           |                    d           |                     |                    d          d           t          d          }|                     |                    t          d                    d           |                     |                    t          d                    d           |                     t
          |j        d           |                     t          |j        d           |                     t          |j        d	           d S )
Nr&   FT0011r  rl  asdfrJ   rR   )r   rU   __contains__r^  r   r   r   rB   s     r   test_contains_errorsz"SequenceTests.test_contains_errors(  s   JJ**E222	**D111V77>>>77???)Q^V<<<*ana888*anb99999r   c                 0   t          dd          D ]}t          |          }|                     d|v            |                     d|v            d|t	          |          <   |                     d|v            |                     d|v            |                    d           |                     d|v            |                     d|v            d|t	          |          <   |                     d|v            |                     d|v            d S )NrJ   r   r   r&   TF)r<   r  rX   rb   r   r'   r   s      r   test_contains_rangez!SequenceTests.test_contains_range4  s   q" 	( 	(AaAOOAF###Q!V$$$AillOOOAF###OOAF###HHQKKKOODAI&&&UaZ(((AillOOODAI&&&OOEQJ''''	( 	(r   c                     t          d          }dD ]-\  }}t          |          |v }|                     ||u            .d S )N011010000001))r   Tr  T)r|  T)r  F)r2  T)0001T)00011F)r   rX   )rC   r+   r  ro  r  s        r   test_contains_explicitz$SequenceTests.test_contains_explicitC  sZ    ^$$F 	$ 	$DAq q AOOAF####		$ 	$r   N)rj   rw   rx   r8  r@  rF  rJ  rN  rP  rS  rX  rZ  r`  r   r   r   r6  r6    s        ( ( (
( ( (8" " ":- - -"6 6 6# # #"     
: 
: 
:( ( ($ $ $ $ $r   r6  c                       e 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ed             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ee          d             ZdS )NumberTestsc                 X   |                                  D ]}| }||z  }|                     |                                d           |                     |||z             ||z  }|                     |                                d           ||z  }|                     | |           d S )NFT)r?   rU   r   allr  s        r   	test_misczNumberTests.test_miscO  s    %%'' 	$ 	$AAAAQUUWWe,,,QA&&&AAQUUWWd+++FAaR####	$ 	$r   c                 N   t                      }|                     t          |          du            |                    d           |                     t          |          du            |                    d           |                     t          |          du            d S )NFr   Tr&   )r   rX   r   r^  rB   s     r   	test_boolzNumberTests.test_boolZ  s    JJQ5()))	Q4(((	Q4(((((r   c                    t          d          t          d          |                     t          fd           |                     t          fd           |                     t          fd           j        j        j        j        j        j        fD ]}|                     t          |           d S )N11001100111c                       z  S r   r   r+   rd   s   r   r   z-NumberTests.test_size_error.<locals>.<lambda>e      a!e r   c                       z  S r   r   rl  s   r   r   z-NumberTests.test_size_error.<locals>.<lambda>f  rm  r   c                       z  S r   r   rl  s   r   r   z-NumberTests.test_size_error.<locals>.<lambda>g  rm  r   	r   r   r   __and____or____xor____iand____ior____ixor__rC   r   r+   rd   s     @@r   test_size_errorzNumberTests.test_size_errorb  s    WX*mmmmm444*mmmmm444*mmmmm444)QXqy*ai5 	0 	0Aj!Q////	0 	0r   c                    t          dd          t          dd          |                     t          fd           |                     t          fd           |                     t          fd           j        j        j        j        j        j        fD ]}|                     t          |           d S )Nri  r0   10011r/   c                       z  S r   r   rl  s   r   r   z3NumberTests.test_endianness_error.<locals>.<lambda>o  rm  r   c                       z  S r   r   rl  s   r   r   z3NumberTests.test_endianness_error.<locals>.<lambda>p  rm  r   c                       z  S r   r   rl  s   r   r   z3NumberTests.test_endianness_error.<locals>.<lambda>q  rm  r   rp  rw  s     @@r   test_endianness_errorz!NumberTests.test_endianness_errorl  s    We$$Wh''*mmmmm444*mmmmm444*mmmmm444)QXqy*ai5 	0 	0Aj!Q////	0 	0r   c                    t          d          t          d          }|z  }|                     |t          d                     |                     |           |                     t          fd           |                     t          fd           |                     t          d                     |                     |t          d                     d S )Nri  rz  r$  c                       dz  S r%   r   r+   s   r   r   z&NumberTests.test_and.<locals>.<lambda>}      QU r   c                      d z  S r%   r   r  s   r   r   z&NumberTests.test_and.<locals>.<lambda>~  r  r   r   rU   re   r   r   rC   rd   r  r+   s      @r   test_andzNumberTests.test_andv      WWEHW--...q)]]]]333)]]]]333HW--...HW--.....r   c                    t          d          t          d          }|z  }|                     |t          d                     |                     |           |                     t          fd           |                     t          fd           |                     t          d                     |                     |t          d                     d S )Nri  rz  r  c                       dz  S r%   r   r  s   r   r   z%NumberTests.test_or.<locals>.<lambda>  r  r   c                      d z  S r%   r   r  s   r   r   z%NumberTests.test_or.<locals>.<lambda>  r  r   r  r  s      @r   test_orzNumberTests.test_or  r  r   c                    t          d          t          d          }|z  }|                     |t          d                     |                     |           |                     t          fd           |                     t          fd           |                     t          d                     |                     |t          d                     d S )Nri  rz  r  c                       dz  S r%   r   r  s   r   r   z&NumberTests.test_xor.<locals>.<lambda>  r  r   c                      d z  S r%   r   r  s   r   r   z&NumberTests.test_xor.<locals>.<lambda>  r  r   )r   rh   re   r   r   rU   r  s      @r   test_xorzNumberTests.test_xor  r  r   c                    t          d          }t          d          }||z  }|                     |t          d                     |                     |t          d                     |                     |           |                     |           	 |dz  }n# t          $ r d}Y nw xY w|                     |d           d S )N	110010110	100110011	100010010r&   )r   rU   re   r   rC   r+   rd   errors       r   	test_iandzNumberTests.test_iand  s    [!![!!	QH[11222H[11222qq	FAA 	 	 	EEE	"""""s   B B*)B*c                 6   t          d          }t          d          }||z  }|                     |t          d                     |                     |t          d                     	 |dz  }n# t          $ r d}Y nw xY w|                     |d           d S )Nr  r  	110110111r&   r   rh   r   rU   r  s       r   test_iorzNumberTests.test_ior      [!![!!	QH[11222H[11222	FAA 	 	 	EEE	"""""   +A1 1B ?B c                 6   t          d          }t          d          }||z  }|                     |t          d                     |                     |t          d                     	 |dz  }n# t          $ r d}Y nw xY w|                     |d           d S )Nr  r  	010100101r&   r  r  s       r   	test_ixorzNumberTests.test_ixor  r  r  c           	      ^   |                                  D ]}|                                }|                     ||z  |           |                     ||z  |           |                     ||z  t          t	          |          |j                             |                     ||           d S r   )r?   r  rh   r  rW   r*   r  s      r   test_bitwise_selfzNumberTests.test_bitwise_self  s    %%'' 	$ 	$ABQUB'''QUB'''QUE#b''29$=$=>>>Q####	$ 	$r   c           	      >   |                                  D ]}|                                }||z  }|                     ||           ||z  }|                     ||           ||z  }|                     |t	          t          |          |j                             d S r   )r?   r  rh   rU   r  rW   r*   r  s      r   test_bitwise_inplace_selfz%NumberTests.test_bitwise_inplace_self  s    %%'' 	; 	;ABFAQ###FAQ###FAQc"ggry 9 9::::	; 	;r   c                 ^   t          d          }| }|                     |t          d                     |                     |t          d                     |                     ||u            |                     |           |                                 D ]}t          |          }|                                 t          t          |                    D ]%}|                     ||         ||                     &|                     |           |                     | |           d S )Nr  r  )	r   rh   rb   re   r?   r  r<   rW   rU   r  s       r   test_invertzNumberTests.test_invert  s$   WBHW--...HW--...a   q%%'' 	$ 	$AAHHJJJ3q66]] 1 1  11Q4x0000NN1aR####	$ 	$r   c                 H   |t          |           k    r"t          t          |           | j                  S |dk    r0t          || j                  | d t          |           |z
           z   S |dk    r | |d          t          || j                  z   S t          d|z            )Nrightleftzinvalid direction: %s)rW   r  r*   r   )r+   r)   	directions      r   shiftzNumberTests.shift  s    A;;Q***AH%%)3q66!8)44&  QRR55AH----4y@AAAr   c           	         t          d          dz  }|                     |t          d                     |                     t          fd           |                     t          j        d           |                     t
          fd           |                     t          j        d           |                                 D ]                                }t          t                    dz             }|z  }|                     t          |          t                               |                     ||                     |d	                     |                     |           d S )
Nr  rJ   01100c                       dz  S Nr  r   r  s   r   r   z)NumberTests.test_lshift.<locals>.<lambda>      Q#X r   r  c                       dz  S NrR   r   r  s   r   r   z)NumberTests.test_lshift.<locals>.<lambda>      a2g r   r  r  r  )r   rh   r   r   
__lshift__r   r  r?   r  r   rW   rU   r  rC   rd   r  r)   r+   s       @r   test_lshiftzNumberTests.test_lshift  sZ   WFHW--...)%5%5%5%5666)Q\3777*oooo666-w???%%'' 	# 	#AA#a&&1*%%AQASVVSVV,,,Q

1a 8 8999Q""""	# 	#r   c           	         t          d          dz	  }|                     |t          d                     |                     t          fd           |                     t          j        d           |                     t
          fd           |                                 D ]                                }t          t                    dz             }|z	  }| 
                    t          |          t                               |                     ||                     |d                     |                     |           d S )	N1101101r&   0110110c                       dz	  S r  r   r  s   r   r   z)NumberTests.test_rshift.<locals>.<lambda>	  r  r   r  c                       dz	  S r  r   r  s   r   r   z)NumberTests.test_rshift.<locals>.<lambda>	  r  r   r  r  )r   rh   r   r   
__rshift__r   r?   r  r   rW   rU   r  r  s       @r   test_rshiftzNumberTests.test_rshift  s@   YFHY//000)%5%5%5%5666)Q\3777*oooo666%%'' 	# 	#AA#a&&1*%%AQASVVSVV,,,Q

1a 9 9:::Q""""	# 	#r   c           	      L   t          d          }|dz  }|                     |t          d                     |                     t          |j        d           |                     t
          |j        d           |                                 D ]}|                                }t          t          |          dz             }||z  }| 
                    t          |          t          |                     |                     ||                     ||d                     d S )N	110110101r   	010000000r  rZ  r  r  )r   rh   r   r   __ilshift__r   r?   r  r   rW   rU   r  rC   r+   rd   r)   s       r   test_ilshiftzNumberTests.test_ilshift	  s   [!!	aH[11222)Q]C888*amR888%%'' 	: 	:AA#a&&1*%%A!GASVVSVV,,,Q

1a 8 89999	: 	:r   c           	      L   t          d          }|dz  }|                     |t          d                     |                     t          |j        d           |                     t
          |j        d           |                                 D ]}|                                }t          t          |          dz             }||z  }| 
                    t          |          t          |                     |                     ||                     ||d                     d S )Nr  r:   	000110110r  r}  r  r  )r   rh   r   r   __irshift__r   r?   r  r   rW   rU   r  r  s       r   test_irshiftzNumberTests.test_irshift	  s   [!!	aH[11222)Q]C888*amR888%%'' 	; 	;AA#a&&1*%%A!GASVVSVV,,,Q

1a 9 9::::	; 	;r   c                    t          ||          }|                     t          |          |           |                                }|dk    r||z  }n||z  }|                     ||                     |||                     d S )Nr  )r3   rU   rW   r  rh   r  )rC   r)   r*   n_shiftr  r+   rd   s          r   check_randomzNumberTests.check_random+	  s    a  Q###FFHH'MAA'MADJJq'9==>>>>>r   c                    dD ]}dD ]~}t          dd          D ]@}|                     ||d|           |                     ||t          d|          |           At          dd          D ]}|                     d|||           d S )NrF   )r  r  r   r   r&   r  )r<   r  r	   )rC   r*   r  r)   r  s        r   test_shift_rangezNumberTests.test_shift_range6	  s    % 	G 	GF, G G	q# K KA%%aI>>>%%aA	JJJJ$Q}} G GG%%c67IFFFFG	G	G 	Gr   c                 ,   |                                  D ]~}|                                }|                     |dz  |           |                     |dz	  |           |dz  }|                     ||           |dz  }|                     ||           d S r   )r?   r  rh   r  s      r   test_zero_shiftzNumberTests.test_zero_shift?	  s    %%'' 	$ 	$ABQ!VR(((Q!VR(((!GAQ###!GAQ####	$ 	$r   c                    |                                  D ]}|                                }t          t          |          |j                  }t          t          |          t          |          dz             }|                     ||z  |           |                     ||z	  |           |                     ||           ||z  }|                     ||           t          |          }||z  }|                     ||           d S Nr9   )r?   r  r  rW   r*   r	   rh   r   )rC   r+   r  zr)   s        r   test_len_or_larger_shiftz$NumberTests.test_len_or_larger_shiftI	  s    %%'' 	# 	#AAc!ffah''AAA,,AQ!VQ'''Q!VQ'''Q"""!GAQ"""A!GAQ""""	# 	#r   c                     t          d          }|                     |dz  t          d                     |dz  }|                     |t          d                     d S )N0010011r:   0011000r  0000001r  rB   s     r   test_shift_examplezNumberTests.test_shift_exampleX	  s^    Ya)!4!4555	aHY//00000r   c                    t          d          }|dz  }|                     |t          d                     |                     t          |          t                      |                     t
          |j        d           d S )Nr  r:   r  r  )r   rU   r   r^   r   r   r  rg   s      r   r4  zNumberTests.test_frozenbitarray^	  sr    9%%FHY//000a.111)Q]A66666r   c                    t          g d          }t          |          }|                     |j                   |ddxx         dz  cc<   |                     |t          g d                     |ddxx         t          d	          z  cc<   |                     |t          g d
                     |dd xx         t          d          z  cc<   |                     |t          g d                     |dd xx         t          d          z  cc<   |                     |t          g d                     |dz  }|                     |t          g d                     d S )N)   r&   rJ   r   r   rQ      r:   )r  rQ   r[  r   r   r   z0000 1100 1)      r[  r      z1 1110 1110)r  r        r[  z1111 0000 1111 0000)r  r  r[     )r   r  r  r[  rv  rg   s      r   rw  zNumberTests.test_importede	  s   ...//A$$$	!B$AI&>&>&>??@@@	!A#(=)))I&>&>&>??@@@	"##(=)))I&>&>&>??@@@	"##(0111I&>&>&>??@@@	aI&>&>&>??@@@@@r   N)rj   rw   rx   re  rg  rx  r~  r  r  r  r  r  r  r  r  r  ry   r  r  r  r  r  r  r  r  r  r  r4  r"   r   rw  r   r   r   rb  rb  M  s       	$ 	$ 	$) ) )0 0 00 0 0
/ 
/ 
/
/ 
/ 
/
/ 
/ 
/# # #
# 
# 
#
# 
# 
#$ $ $; ; ;$ $ $  	B 	B \	B# # #"# # # : : :; ; ;	? 	? 	?G G G$ $ $# # #1 1 17 7 7 VG__A A _A A Ar   rb  c                   b    e 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S )ExtendTestsc                    t                      }|                     t          |j                   dD ]#}|                     t          |j        |           $|                     t          |          d           |                     |           d S )N)Nr&   Tr  g      ?r   )r   r   r   extendrU   rW   re   r  s      r   r?  zExtendTests.test_wrong_argsz	  s    JJ)QX...' 	6 	6Ai15555Q###qr   c                 l   t                      }|                    t                                 |                     |t                                 |                    t          d                     |                     |t          d                     |                    t          d                     |                     |t          d                     t          dd          }|                    t          dd                     |                     |t          d	                     d S )
Nr  1110z110 1110r   r/   rS   00100111r0   z00001111 00100111)r   r  rU   rB   s     r   test_bitarrayzExtendTests.test_bitarray	  s    JJ	HJJ'''	%!!!HUOO,,,	&!!"""HZ00111Z111	*U333444H%899:::::r   c           	         |                                  D ]0}|                                }|                                  D ]}|                                }t          |          }|                    |           |                     |                                ||                                z              |                     |j        |j                   |                     t          |          t          |          t          |          z              |                     |           | 	                    ||           2d S r   )
r?   r   r  r   r  rU   r*   rW   re   rh   )rC   r+   r  rd   r&  r  s         r   r  z ExtendTests.test_bitarray_random	  s   %%'' 	( 	(AB))++ 	( 	(VVXXQKK  2		>:::  18444  QQ#a&&999q!!!  B''''	(	( 	(r   c                    t                      }|                    g            |                     |t                                 |                    g d           |                     |t          d                     |                     t          |j        g d           |                     t
          |j        g d           |                     |t          d                     |                                 D ]}}|                                 D ]f}t          |          }|                    |           |                     |                                ||z              |                     |           g~d S )N)r   r&   TFr  r   )r   r&   r+   )	r   r  rU   r   r   r   rD   rA   re   r/  s       r   r   zExtendTests.test_list	  s[   JJ	HJJ'''	$$$%%%HV,,---*ah			:::)QX{{{;;;HV,,---!!## 	" 	"A%%'' " "QKK  QU333q!!!!	"	" 	"r   c                     t                      }|                    t          d                     |                     |t          d                     |                     |           d S )NrJ   r  )r   r  r<   rU   re   rB   s     r   r	  zExtendTests.test_range	  sW    JJ	qHTNN+++qr   c                 X   g d}|t          |          t          |          t          |          t          j        d|          fD ]}|                     t          |          d           t                      }|                    |           |                     |t          d                     |                     |           |	                    d           |t          |          t          |          t          |          t          j        d|          fD ]}|                     t          |          d           t                      }| 
                    t          |j        |           |                     t          |          d           |                     |           d S )N)r   r&   r   r&   r&   rd   rL   01011rJ   r   r   )r   r`   r   r   rU   rW   r   r  re   r^  r   r   r   s       r   r   zExtendTests.test_sequence	  sq   oouSzz5::y~~+c3'') 	 	ASVVQ'''

AHHQKKKQ 1 1222NN1

1uSzz5::y~~+c3'') 	 	ASVVQ'''

Aj!(A666SVVQ'''NN1	 	r   c                    d }t          d                               |g d                     |                     t          d                     |                     t          j         |g d                     |                     t
          j         |g d                     |                     t          d                     t                                           |g d                     |                     d           |                     t          j         |g d	                     |                     t
          j         |g d                     |                     d           |                                 D ]ofd
}t                      }|                     |                       |                     |                                           | 	                    |           pd S )Nc              3      K   | D ]}|V  d S r   r   )r   r   s     r   genz)ExtendTests.test_generator_1.<locals>.gen	  s*         r   rU  )r   r&   FTr   z
0011 01010r   )r&   r   N)r   r&   r  s    )r   r&      c               3      K   D ]} | V  d S r   r   )ru   r+   s    r   r   z)ExtendTests.test_generator_1.<locals>.foo	  s+        AGGGG r   )
r   r  rU   r   r   r   r   rD   rA   re   )rC   r  r   rd   r+   s       @r   test_generator_1zExtendTests.test_generator_1	  s   	 	 	 V	+++,,---H\22333*ahIII???)QXss<<</@/@AAAH\22333KK	[[[!!"""O,,,*ahKKK0@0@AAA)QXss<<</@/@AAAO,,,!!## 	 	A     

AHHSSUUOOOQXXZZ+++NN1	 	r   c                     d }t                      g fD ]P}|                     t          |j         |                       |                     t          |          g d           Qd S )Nc               3   V   K   t          d          D ]} | dk    rt          | dz  V  d S )Nr9   r  rJ   )r<   r   )r   s    r   r  z)ExtendTests.test_generator_2.<locals>.gen	  sB      2YY  66"N!e r   )r   r&   r   r&   )r   r   r   r  rU   r6  )rC   r  r+   s      r   test_generator_2zExtendTests.test_generator_2	  sw    	 	 	 R 	4 	4Ah##%%888T!WWlll3333	4 	4r   c                    t                      }|                    t          g                      |                     |t                                 |                    t          g d                     |                     |t          d                     |                     t
          |j        t          g d                     |                     |t          d                     |                                 D ]}|                                 D ]s}t          |          }|                    t          |                     |                     |                                ||z              |                     |           td S )N)r&   r&   r   TF11010)r&   r&   r   r   rJ   )	r   r  r   rU   r   r   rD   rA   re   r/  s       r   test_iterator_1zExtendTests.test_iterator_1	  s_   JJ	bHJJ'''	,,,--...HW--...*ah___0E0EFFFHW--...!!## 	" 	"A%%'' " "QKKa!!!  QU333q!!!!	"	" 	"r   c                     t                      }|                    t          j        dd                     |                     |t          d                     |                     |           d S )NTr  11111111111111111111111)r   r  r  r  rU   re   rB   s     r   test_iterator_2zExtendTests.test_iterator_2	  s`    JJ	!$++,,,HX..///qr   c                     t          d          }d}t          |          D ]$\  }}|dk    r|                                 |dz  }%|                     |d           |                     |           d S )Nr;   r   r9   r&   r  )r   rd  r   rU   re   )rC   r+   r  r   r   s        r   test_iterator_changez ExtendTests.test_iterator_change
  sz    TNNaLL 	 	DAqBww			FAABqr   c           	         t                      }|                    t                                 |                    d           |                     |t                                 |                    d           |                     |t          d                     |                     t
          |j        d           |                     |t          d                     t                      }|                     t
          |j        d           |                     t
          |j        d           |                     |t                                 |                                 D ]}|                                 D ]~}t          |          }|                    d                    d |D                                  |                     |t          ||z                        |                     |           d S )Nr   01101110011201z01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101.z01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 c              3   4   K   | ]}t          |          V  d S r   ro   r  s     r   rV  z,ExtendTests.test_string01.<locals>.<genexpr> 
  s(       3 3AQ 3 3 3 3 3 3r   )	r   r  ro   rU   r   r   rD   r  re   r/  s       r   r  zExtendTests.test_string01
  s   JJ		HJJ'''	HY//000*ah	:::HY//000JJ*ah0@AAA*ah0ABBBHJJ'''!!## 	" 	"A%%'' " "QKK 3 3 3 3 333444  HQUOO444q!!!!	"	" 	"r   c                    t                      }|                    t                     |                     t	          |          d           |                    d           |                     |t          d                     |dz  }|                     |t          d                     |                     |           d S )Nr   z0 1
01	01_010101z
_ 1
01	0z010101 1010)r   r  r   rU   rW   re   rB   s     r   r  z$ExtendTests.test_string01_whitespace$
  s    JJ	Q###	#$$$HX..///	H]33444qr   c                 N   dD ]L}t          |          }|                    |           |                     |t          d|z                       M|                                 D ]}|j        }|                                }|                    |           |                     |                                d|z             |                     |j        |           |                     t          |          dt          |          z             |                     |           d S )N)r   r  r  00110111rJ   )r   r  rU   r?   r*   r   rW   re   )rC   r  r+   r*   s       r   r  zExtendTests.test_self.
  s   + 	1 	1AAHHQKKKQQ0000%%'' 	 	AXFAHHQKKKQVVXXq1u---QXv...SVVQQZ000NN1	 	r   N)rj   rw   rx   r?  r  r  r   r	  r   r  r  r  r  r  r  r  r  r   r   r   r  r  x	  s          ; ; ;( ( (" " ""    &  6	4 	4 	4" " "     " " ".      r   r  c                       e Zd Zd Zd ZdS )AllAnyTestsc                 p   t                      }|                     |                                           dD ];\  }}|                     t          |                                          |u            <|                                 D ]8}|                     |                                t          |          u            9t	          dd          }t          |          }|                     |                                           d||dz
  <   |                     |                                           d S )N)r   Fr]  )r  Fr;     r   r&   )r   rX   rd  r?   r	   r,   rb   rC   r+   r  ro  Ns        r   test_allzAllAnyTests.test_allA
  s   JJ   < 	4 	4DAqOOHQKKOO--23333%%'' 	/ 	/AOOAEEGGs1vv-....D$GG   !a%!!!!!r   c                 p   t                      }|                     |                                           dD ];\  }}|                     t          |                                          |u            <|                                 D ]8}|                     |                                t          |          u            9t          dd          }t          |          }|                     |                                           d||dz
  <   |                     |                                           d S )N)r  r]  )r  Tr;   r  r&   )r   rb   r   rX   r?   r	   r  r  s        r   test_anyzAllAnyTests.test_anyP
  s
   JJ!!!; 	4 	4DAqOOHQKKOO--23333%%'' 	/ 	/AOOAEEGGs1vv-....D$!HH!!!!a%     r   N)rj   rw   rx   r  r  r   r   r   r	  r	  ?
  s2        " " "! ! ! ! !r   r	  c                        e Zd Zd Zd Zd ZdS )AppendTestsc                    t                      }|                    d           |                    d           |                    d           |                     |t          d                     |                    d           |                    d           |                     |t          d                     |                     |           d S )NTFr|  r   r&   r$  )r   r^  rh   re   rB   s     r   r  zAppendTests.test_simplea
  s    JJ			HUOO,,,		HW--...qr   c                 Z   t          d          }|                     t          |j        d           |                     t          |j        d            |                     t          |j        d           |                     |t          d                     |                     |           d S )Nr$  rJ   r   )r   r   r   r^  r   rh   re   rB   s     r   r?  zAppendTests.test_wrong_argsl
  s    W*ah222)QXt444)QXr222HW--...qr   c                 .   t          d          }t          |j                  }t          t	          |                    D ]>}|                    ||                    |                     ||d |dz                       ?|                     |           d S )Nr;   rS   r&   )r3   r   r*   r<   rW   r^  rh   re   r  s       r   rp  zAppendTests.test_randomt
  s    dOOAH%%%s1vv 	) 	)AHHQqTNNNQ$1Q3$((((qr   N)rj   rw   rx   r  r?  rp  r   r   r   r  r  _
  sA        	 	 	      r   r  c                       e Zd Zd Zd ZdS )BufferInfoTestsc                    t          dd          ddft          dd          d	d
ft          dd          ddffD ]\  }}}i }t          |          D ]}t          |          ||<   |                     t          |          |           |                                }|                     |dd         |           |                     |j        |j                   |                     |j        |j                   |                     |j	        |j	                   |                     |j
        |j
                   |                     |j        |           d S )Nr  r/   rS   r   )rJ   r/   rL   rJ   FFr   r0   r   rs  rJ   )r:   r0   r   r   TTrJ   r  rL   )r&   r0   r:   r&   TFrL   r&   rQ   )r   r   r<   r  rU   rW   rZ   rV   r*   rY   r_   exports)rC   r+   viewsr   r   r   rc   s          r   test_valueszBufferInfoTests.test_values~
  sk    "X...57 v66602  //13

 	2 	2MAuc A5\\ % %!!}}!SVVU+++==??DT!A#Y,,,T[!(333T[!(333T\19555T]AJ777T\51111-	2 	2r   c                    t          d          }|                                }|                     t          |t                               |                     t          |          t                     |                     t          |          d           t          |j
        t          f|j        t          f|j        t          f|j        t          f|j        t          f|j        t$          f|j        t$          f|j        t          fg          D ]H\  }\  }}|                     t          |          |           |                     ||         |u            Id S )N9   rQ   )r3   rZ   rX   r  r   rU   r^   r   rW   rd  r]   r   rV   r*   ro   rY   r\   r_   r   r[   r  )rC   r+   rc   r   r_  tps         r   rh  zBufferInfoTests.test_types
  s)   bMM}}
4//000dZ000TA&&&&s#c"c"s#S!%%s#	(
 	 	 	- 	-MAzb T$ZZ,,,OODGtO,,,,	- 	-r   N)rj   rw   rx   r  rh  r   r   r   r  r  |
  s2        2 2 22- - - - -r   r  c                        e Zd Zd Zd Zd ZdS )InsertTestsc                 z   t          d          }|                    dd           |                     |t          d                     |                    dd           |                     |t          d                     |                    dd           |                     |t          d                     d S )N00111r   r&   z1 00111z01 00111rJ   z	011 00111)r   insertrU   rB   s     r   rf  zInsertTests.test_basic
  s    W	AHY//000	AHZ00111	AH[1122222r   c                    t          d          }|                     t          |j        dd           |                     t          |j        dd            |                     t          |j                   |                     t          |j        d            |                     |t          d                     |                     |           d S )N111100r   rJ   )r   r   r   r$  r   rU   re   rB   s     r   test_errorszInsertTests.test_errors
  s    X*ah1555)QXq$777)QX...)QXt444HX..///qr   c                    |                                  D ]}|                                }t          d          D ]n}t          d          }t	          t          |           dz
  t          |          dz             }|                    ||           |                    ||           o|                     |                                |           |                     |           d S )NrQ  r&   rL   )	r?   rA   r<   r   r	   rW   r$  rU   re   )rC   r+   rh  r>   r_  poss         r   rp  zInsertTests.test_random
  s    %%'' 	 	AB2YY % %"1~~s1vvgk3q66A:66d###		#t$$$$QXXZZ,,,NN1	 	r   N)rj   rw   rx   rf  r'  rp  r   r   r   r!  r!  
  sA        3 3 3  	 	 	 	 	r   r!  c                        e Zd Zd Zd Zd ZdS )	FillTestsc                 z   t          |                                           }|                     |                                d           |                     t	          |          d           t          d|                                           }|                     |                                d           |                     |t          d                     |                     |                                d           |                     |t          d                     |                     |           d S )NrS   r   rN  rL   10100000)r   r7   rU   fillrW   re   rB   s     r   r  zFillTests.test_simple
  s   D..001111%%%Q###UD..00111%%%HZ001111%%%HZ00111qr   c                    t          d          }t          |          }t          |          }|                     |                                d           |                     ||           |                     |j        d           d S )Nr  r   r:   r&   )r   r  rU   r.  rV   rC   r+   rd   re  s       r   test_exportedzFillTests.test_exported
  s|    WAqMM1%%%A1%%%%%r   c                    |                                  D ]}|                                }|                                }|                     d|cxk    odk     nc            |                     |j        dk               |                     t          |          dz  d           |                     ||t          |          z              |                     |j        |j                   | 	                    |           d S )Nr   rQ   )
r?   r  r.  rX   rY   rU   rW   r  r*   re   )rC   r+   rd   r   s       r   rp  zFillTests.test_random
  s    %%'' 	 	AA&&((COOALLLLqLLLL)))OOAIN+++SVVaZ+++QE#JJ///QXqx000NN1	 	r   N)rj   rw   rx   r  r1  rp  r   r   r   r+  r+  
  sA        
 
 
& & &	 	 	 	 	r   r+  c                   Z    e Zd Zd Zd Zd Zd Zd Zd Z e	e
          d             ZdS )	InvertTestsc                    t                      }|                                 |                     |t                                 |                     |           t          d          }|                                 |                     |t          d                     dD ]B\  }}|                    |           |                     |                                |           Cd S )Nr  r  ))r   10100)r  10101)rJ   r$  )rR   10000)rK   00000)r   r  rh   re   rU   r   )rC   r+   r   r   s       r   r  zInvertTests.test_simple
  s    JJ	


HJJ'''qW	


HW--...& 	, 	,FAs
 HHQKKKQVVXXs++++	, 	,r   c                    t          d          }|                     t          |j        d           |                     t          |j        d           |                     t          |j        d           |                     t          |j        dd           |                     |                                           |                     |           d S )NrL   r  r=  r   r&   )r   r   r\  r  r   rb   r   re   rB   s     r   r'  zInvertTests.test_errors
  s    QKK*ah222*ah333)QXs333)QXq!444!!!qr   c                 >   |                      d          D ]}t          |          }|                                }t          | |dz
            }||          ||<   |                    |           |                     ||           |                     |           d S rn  )r?   rW   r  r	   r  rh   re   r  s        r   rp  zInvertTests.test_random  s    %%A%.. 	 	AAAAAE""At8AaDHHQKKKQ"""NN1	 	r   c                 v   |                                  D ]}|                                }|                                 |                     |t	          d |D                                  |                     |j        |j                   |                     |           |                     ||            d S )Nc                     g | ]}| S r   r   r   re  s     r   r   z(InvertTests.test_all.<locals>.<listcomp>  s    );););Aa%);););r   )r?   r  r  rU   r   r*   re   rh   rg   s      r   r  zInvertTests.test_all  s    %%'' 	$ 	$AAHHJJJQ););););); < <===QXqx000NN1Q####	$ 	$r   c                 p   |                                  D ]}t          |          }|                                }t          d          D ]k}t	          d|          }t	          ||          }|                    t          ||                     |||          |||<   |                     ||           ld S )Nr9   r   )r?   rW   r  r<   r	   r  rM   rU   )rC   r+   r)   rd   r>   r   r  s          r   	test_spanzInvertTests.test_span  s    %%'' 	' 	'AAAA2YY ' 'AqMMAqMMq!%%%AaC&!A#  A&&&&'	' 	'r   c                 6   |                                  D ]}t          |          }|                                }t          d          D ]N}|                     |          }|                    |           ||          ||<   |                     ||           Od S r  )r?   rW   r  r<   rO   r  rh   )rC   r+   r)   rd   r>   r  s         r   test_random_slicezInvertTests.test_random_slice%  s    %%'' 	' 	'AAAA2YY ' '%%a((!u!  A&&&&	'	' 	'r   c                     t          g d          }t          |          }|                     |j                   |                                 |                     |t          g d                     d S )N)r   r&   rJ   r:   r  r  r   )r        r     r   )r   r   rb   r_   r  rU   rg   s      r   rw  zInvertTests.test_imported/  st    +++,,A$$$	


I&B&B&BCCDDDDDr   N)rj   rw   rx   r  r'  rp  r  r@  rB  r"   r   rw  r   r   r   r4  r4  
  s        , , ,"    $ $ $	' 	' 	'' ' ' VG__E E _E E Er   r4  c                   B    e Zd Zd Zd Z ee          d             ZdS )	SortTestsc                    t          d          }|                                 |                     |t          d                     |                     |           t          d          }|                    d           |                     |t          d                     |                    d           |                     |t          d                     |                    d           |                     |t          d                     |                    d           |                     |t          d                     |                     t
          |j        d           d S )N1101000r  Tr  1110000Fr=  )r   sortrU   re   r   r   rB   s     r   r  zSortTests.test_simple:  s7   Y	HY//000qY	tHY//000	uHY//000	tHY//000	uHY//000)QVS11111r   c                    dD ]}|                                  D ]}|                                }|)|                                 |                                 n,|                    |           |                    |           |                     |t	          |                     |                     |           d S )N)FTr   r&   r   rR   rb  Nr  )r?   rA   rL  rU   r   re   )rC   revr+   r   s       r   rp  zSortTests.test_randomL  s    5 
	" 
	"C))++ 	" 	"hhjj;HHJJJFFHHHHHHSH)))FF3F'''  HSMM222q!!!!	"
	" 
	"r   c                 @   t          ddg          }t          d|          }|                     |j                   |                                 |                     |                                d           |                     |t          ddg                     d S )No      r0   rs  r9   r:   r  )r   r   rb   r_   rL  rU   ra   rg   s      r   rw  zSortTests.test_importedY  s    tTl##E!,,,$$$	B'''ItTl3344444r   Nr  r   r   r   rH  rH  8  sU        2 2 2$" " " VG__5 5 _5 5 5r   rH  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )	PackTestsc                    t                      }|                    t                                 |                     |t                                 |                    d           |                     |t          d                     |                    d           |                     |t          d                     |                    d           |                     |t          d                     |                    t	          g d                     |                     |t          d                     |                     |           d S )	N    r      r  s    z01101)r&   r   r     z
01101 1011)r   packr`   rh   r   re   rB   s     r   test_pack_simplezPackTests.test_pack_simpleg  s   JJ	uwwHJJ'''	wHSMM***	wHTNN+++	HW--...	y11122333H\22333qr   c                 n   t                      }|                    d           |                     |t          d                     |                    t          ddg                     |                     |t          d                     |                    t	          d                     |                     |t          d                     |                    t          j        dg d	                     |                     |t          d
                     |                     |           d S )N    r  r   rJ   z01 01s    z01 01 10rg  )r   r     z01 01 10 011)r   rY  rU   r   r  r   re   rB   s     r   test_pack_typeszPackTests.test_pack_typesu  s   JJ	yHTNN+++	y!Q  !!!HW--...	z)$$%%%HZ00111	u{3..///H^44555qr   c                     t          d          }t                      }|                    t          |                     |                     |t          d                     |                     |           d S )Nz,00000000 00000001 10000000 11111111 00000000r   )r   rY  rU   re   rC   rd   r+   s      r   test_pack_bitarrayzPackTests.test_pack_bitarray  sg    CDDJJ	x{{HW--...qr   c                 f    t                      }|                     t          d|j        |           d S N0cannot resize bitarray that is exporting buffers)r   rv   r  rY  rB   s     r   test_pack_selfzPackTests.test_pack_self  s:    JJ  >FA	 	 	 	 	r   c                     t                      }|                    t          t          d                               |                     |                                d           |                     |           d S )Nr     0111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111)r   rY  r   r<   rU   r   re   rB   s     r   test_pack_allbyteszPackTests.test_pack_allbytes  sa    JJ	ys$$%%%?333qr   c                     t                      }|                     t          |j        d           |                     t          |j        d           |                     t          |j        ddg           d S )Nr   r  r&   r:   )r   r   r   rY  rB   s     r   test_pack_errorszPackTests.test_pack_errors  sc    JJ)QVQ///)QVS111)QVaV44444r   c                    t          d          }|                     t          |                                          t                     |                     |                                d           |                     |                    d          d           |                     |                    dd          d           |                     |                    d	          d
           |                     |                    d          d           |                     |                    dd          d           d S )Nr  r\  r   s   A   0   1s   01rV  ones    zero   t   fro  rq  s   ft)r   rU   r^   unpackr`   rB   s     r   test_unpack_simplezPackTests.test_unpack_simple  s	   TNNahhjj))5111[111$222$--u555g..<<<t,,h777d66>>>>>r   c                    |                                  D ]H}|                     |                    dd          |                                                                           t                      }|                    |                                           |                     ||           t                      }|                    |                    dd                     |                                 |                     ||           t                      }|                    |                                           |                     ||           Jd S )Nrl  rm  r   rU  )	r?   rU   ru  r   encoder   rY  r  r  rg   s      r   test_unpack_randomzPackTests.test_unpack_random  s   %%'' 	# 	#AQXXdD1116688??3D3DEEE

AFF188::Q"""

AFF188GW--...HHJJJQ"""

AHHQXXZZ   Q""""	# 	#r   c                 D   t          d          }|                     t          |j        d           |                     t          |j        dd           |                     t          |j        dd           |                     t          |j        d           |                     t          |j        dd	           |                     t          |j        d
           |                     t          |j        d           |                     t          |j        dd           d S )Nr  r   rl     a   brp  r   s   aart  r   r+   rn  r  )r   r   r   ru  rB   s     r   test_unpack_errorszPackTests.test_unpack_errors  s    TNN)QXs333)QXtS999)QXt$???)QX4888)QX5tDDD)QXs333)QX3777)QXtS99999r   N)rj   rw   rx   rZ  r^  ra  re  rh  rj  rv  ry  r~  r   r   r   rS  rS  e  s                  5 5 5? ? ?# # #"	: 	: 	: 	: 	:r   rS  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )PopTestsc                    t          d          }|                     t          d|j        d           |                     |                                d           |                     |                                d           |                     |t                                 |                     t          d|j                   d S )Nr  zpop index out of rangerJ   TFzpop from empty bitarray)r   rv   r\  poprU   rB   s     r   rf  zPopTests.test_basic  s    TNN  -E!"	+ 	+ 	+$'''%(((HJJ'''  -FNNNNNr   c                     dD ]x\  }}}}t          |          }|                     |                    |          |u            |                     |t          |                     |                     |           yd S )N))r  r   r&   r   )r   rR   r   r   )0011100r:   r&   r  )r   rX   r  rU   re   )rC   r   r)   ro  r  r+   s         r   r  zPopTests.test_simple  s    8 	 	JAq!Q AOOAEE!HHM***Q,,,NN1	 	r   c                 f   |                                  D ]}|                                }t                      }|r)|                    |                                           |)|                     |t                                 |                                 |                     ||           d S r   )r?   r  r   r^  r  rU   r  )rC   r+   r  rd   s       r   r  zPopTests.test_reverse  s    %%'' 	# 	#AA

A "!!!  "Q

+++IIKKKQ""""	# 	#r   c                    |                                  D ]}|                     t          |j        t	          |                     |                     t          |j        t	          |           dz
             t	          |          dk    rv|                                }|j        }|                     |                                |d                    |                     |           |                     |j        |           d S )Nr&   r   rR   )	r?   r   r\  r  rW   rA   r*   rU   re   )rC   r+   rh  endas       r   test_random_1zPopTests.test_random_1  s    %%'' 		- 		-Aj!%Q888j!%#a&&1===1vv{{B8DQUUWWbf---NN1QXt,,,,		- 		-r   c                 .   |                      d          D ]}t          t          |           t          |                    }|                                }|                    |          }|                     |||                    |                     t          |          t                     |                    |          }|                     |t          |                     |                     ||           | 	                    |           d S rn  )
r?   r   rW   rA   r  rU   r^   r   r   re   )rC   r+   r)   rh  r   r  s         r   test_random_2zPopTests.test_random_2  s    %%A%.. 		 		A3q66'3q66**ABaAQ1&&&T!WWc***q		AQ---Q"""NN1		 		r   N)rj   rw   rx   rf  r  r  r  r  r   r   r   r  r    sb        O O O  # # #
- 
- 
-
 
 
 
 
r   r  c                   H    e Zd Zd Zd Zd Z ee          d             ZdS )ReverseTestsc                     dD ]`\  }}t          |          }|                                 |                     |t          |                     |                     |           ad S )N)
r   r   )r  r  )rl  r  )r}  r|  )r  r  )11100r#  )011000000110)11011000011011)11110000r   )1111100001111000011111)r   r  rh   re   rC   r   r  r+   s       r   r_  zReverseTests.test_explicit  sl    5 	 	DAq
 AIIKKKQ,,,NN1	 	r   c                 f    t          d          }|                     t          |j        d           d S )Nr:   r  )r   r   r   r  rB   s     r   test_argumentzReverseTests.test_argument  s-    QKK)QY33333r   c           	         |                                  D ]}|                                }|                                 |                     |                                |                                d d d                    |                     |t          t          |          |j                             |                     ||d d d                    | 	                    |           d S )NrR   rS   )
r?   r  r  rU   r   rh   r   reversedr*   re   rg   s      r   rp  zReverseTests.test_random
  s    %%'' 	 	AAIIKKKQVVXXqvvxx"~666Q!QX F F FGGGQ$$B$(((NN1	 	r   c                     t          g d          }t          |          }|                     |j                   |                                 |                     |t          g d                     d S )Nr   r&   rJ   r:   r  r   )r  r]  @   r  r   )r   r   rb   r_   r  rU   rg   s      r   rw  zReverseTests.test_imported  st    '''((A$$$			I&<&<&<==>>>>>r   N)	rj   rw   rx   r_  r  rp  r"   r   rw  r   r   r   r  r    sd        	 	 	4 4 4   VG__? ? _? ? ?r   r  c                        e Zd Zd Zd Zd ZdS )RemoveTestsc                     t          d          }dD ]R\  }}|                    |           |                     |t          |                     |                     |           Sd S )Nr  ))F110110)T10110)r&   r  )r&   r  )r   rl  )r   r  )r&   r   )r   removerh   re   )rC   r+   r3  r   s       r   r_  zRemoveTests.test_explicit  sp    Y, 	 	HC HHSMMMQ...NN1	 	r   c                    t          d          }|                    d           |                     |t          d                     |                     t          |j        d           |                     t
          |j        d           |                     |t          d                     t                      }dD ]#}|                     t
          |j        |           $t          d          }|                     t
          |j        d           |                    d           |                     t
          |j        d           d S )Nr  r&   000011r=  r  TFr&   r   r   )r   r  rh   r   r   r   r  r'   r  s      r   r'  zRemoveTests.test_errors'  s   Y	HX..///)QXs333*ah333HX..///JJ$ 	7 	7Aj!(A6666"II*ah222	*ah22222r   c                 R   |                                  D ]}|                                }t          d          }||vr*|                    |           |                    |           |                     |                                |           |                     |           d S r%   )r?   rA   r   r  rU   re   r0  s       r   rp  zRemoveTests.test_random8  s    %%'' 	 	A

AAAzzHHQKKKHHQKKKQXXZZ+++NN1	 	r   N)rj   rw   rx   r_  r'  rp  r   r   r   r  r    sA          3 3 3"	 	 	 	 	r   r  c                   H    e Zd Zd Zd Zd Z ee          d             ZdS )SetAllTestsc                    t          d          }|                    d           |                     t          |j        d           |                     t          |j        d            |                     |                                d           |                    d           |                     |                                d           |                     |           d S )NrL   TrR   rI  r   r9  )r3   r'   r   r   r   rU   r   re   rB   s     r   r_  zSetAllTests.test_explicitE  s    aLL	*ah333)QXt4447+++	7+++qr   c                     t                      }dD ]O}|                    |           |                     t          |          d           |                     |           Pd S )Nr  r   )r   r'   rU   rW   re   rC   r+   re  s      r   
test_emptyzSetAllTests.test_emptyO  sd    JJ 	 	AHHQKKKSVVQ'''NN1	 	r   c                 t   |                                  D ]}|j        }t          d          }|                    |           |                     |                                t          |          t          |          z             |                     |j        |           |                     |           d S r%   )	r?   r*   r   r'   rU   r   rW   ro   re   )rC   r+   r*   r3  s       r   rp  zSetAllTests.test_randomV  s    %%'' 	 	AXFa..CHHSMMMQVVXXs1vvC'8999QXv...NN1	 	r   c                     t          g d          }t          |          }|                     |j                   |                    d           |                     |t          g d                     d S )Nr  r   r&   )r  r  r  r  )r   r   rb   r_   r'   rU   rg   s      r   rw  zSetAllTests.test_imported_  ss    lll##A$$$	I&>&>&>??@@@@@r   N)	rj   rw   rx   r_  r  rp  r"   r   rw  r   r   r   r  r  C  si               VG__A A _A A Ar   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )	To01Testsc           
         t                      }|                     |                    d          d           t          d          }|                                |                    d          |                    dd          |                    dd          |                    d          |                    d          |                    dd	          fD ]p}|                     t          |          t                     |                     t          |          t          |                     |                     |d           qd S )
Nr&   r   	100011110r   XgroupseprJ   r  r  )r   rU   r   r^   ro   rW   r
  s      r   test_no_groupingzTo01Tests.test_no_groupingj  s   JJB'''[!!&&((AFF1IIqvva~~qvva}}&&q&//166c6??AFFF4K4KM 	- 	-AT!WWc***SVVSVV,,,Q,,,,		- 	-r   c                    t          d          }|                     |                    dd          d           |                     |                    dd          d           |                     |                    d	          d
           |                     |                    dd          d           |                     |                    dd          d           |                     |                    d          d           |                     |                    d          d           |                     |                    dd          d           |                     |                    dd          d           d S )Nz0000 1111 0011 0101r&   -z0-0-0-0-1-1-1-1-0-0-1-1-0-1-0-1rJ   +r  z00+00+11+11+00+11+01+01r:   z000 011 110 011 010 1r  r>   r  0000_1111_0011_0101rL   .z00001.11100.11010.1r   r  z000011 110011 0101r   z0000111 1001101 01rQ   z, z00001111, 00110101r   ABC000011110ABC0110101r"  rB   s     r   test_exampleszTo01Tests.test_examplesu  s[   *++3)JKKKs++-FGGG$;<<<aS113HIIIaS113HIIIa*>???$89994*>???5))+@AAAAAr   c                 t   t          d          }|                     t          |j        d            |                     t          |j        d           |                     t          |j        d           |                     t          |j        dd            |                     t          |j        dd           d S )Nr  rR   r  r}  rJ      _)r   r   r   r   r   rB   s     r   r?  zTo01Tests.test_wrong_args  s    Y)QVT222*afb111)QV333)QVQ555)QVQ55555r   c           	         |                                  D ]}d                    d t          t          d                    D                       }|                     |                    d|          |                    d |D                                  t          d          }|                    dd          }|                     |d	           d S )
Nr   c              3   P   K   | ]!}t          t          d d                    V  "dS )r  ~   N)chrr	   )r   r>   s     r   rV  z%To01Tests.test_sep.<locals>.<genexpr>  sH       9 9 gb#..// 9 9 9 9 9 9r   r9   r&   c              3   4   K   | ]}t          |          V  d S r   r  r>  s     r   rV  z%To01Tests.test_sep.<locals>.<genexpr>  s(      5H5Hc!ff5H5H5H5H5H5Hr   11100111r:   u   ★u   111★001★11)r?   r  r<   r   rU   r   r   )rC   r+   r  r  s       r   test_sepzTo01Tests.test_sep  s    %%'' 	J 	JA'' 9 9#(2#7#79 9 9 9 9CQVVAs^^SXX5H5Ha5H5H5H-H-HIIIIZ  FF1h233333r   c                    |                                  D ]}t          |          }t          d          }t          d          }|                    ||dz            }|                     |t          |                     |                    d          }|                     t          |          ||z              |                     ||r|r||dz
  |z  z  nd           d S )Nr9   r    r&   r   )r?   rW   r   r   rU   r   ra   )rC   r+   r)   r  nsepr  nspaces          r   rp  zTo01Tests.test_random  s    %%'' 		N 		NAAAbMMEQ<<DudSj))AQ,,,WWS\\FSVVQZ000V:?LALTa!e%5661N N N N		N 		Nr   N)rj   rw   rx   r  r  r?  r  rp  r   r   r   r  r  h  sg        	- 	- 	-
B 
B 
B6 6 6	4 	4 	4
N 
N 
N 
N 
Nr   r  c                   Z    e Zd Zd Zd Zd Zd Zd Zd Z e	e
          d             ZdS )	ByteReverseTestsc                     dD ]K\  }}t          |          }|                                 |                     |t          |                     Ld S )N)r  )1110110110110111)r  r!  )z11011111 00100000 00011111z11111011 00000100 11111000)r   r.  rU   r  s       r   test_explicit_allz"ByteReverseTests.test_explicit_all  sZ    5 	- 	-DAq
 AMMOOOQ,,,,	- 	-r   c                 H   t          d          }|                    dd           |                     |t          d                     |                    dd           |                     |t          d                     |                    d           |                     |t          d                     |                    d           |                     |t          d	                     |                    d
d           |                     |t          d	                     |                    dd           |                     |t          d                     |                    d           |                     |t          d                     |                     t          |j        d           |                     t          |j        dd           |                     t          |j        d           |                     t          |j        dd           d S )Nz#11100000 00000011 00111111 11111000r   r&   z#00000111 00000011 00111111 11111000rR   z#00000111 11000000 11111100 11111000rJ   z#00000111 11000000 00111111 00011111z#00000111 11000000 00111111 11111000r:   r  z#11100000 00000011 11111100 00011111rY  rK   rL   )r   r.  rU   r   r\  rB   s     r   test_explicit_rangez$ByteReverseTests.test_explicit_range  s   :;;	aH%JKKLLL	aH%JKKLLL	aH%JKKLLL	bH%JKKLLL	aH%JKKLLL	aH%JKKLLL	bH%JKKLLL*amR888*amQ;;;*amQ777*amQ:::::r   c                    t          d          D ]}t          t          |g                    }|                     t	          |          d           |                                }|                                 |                     ||d d d                    |                                 |                     ||           |                     |           d S )Nr  rQ   rR   )	r<   r   r   rU   rW   r  r.  r  re   )rC   r   r+   rd   s       r   r$  zByteReverseTests.test_byte  s    s 	 	AA3((ASVVQ'''AMMOOOQ$$B$(((IIKKKQ"""NN1	 	r   c                     |                                  D ]T}|                                }|                                 |                                 |                     ||           Ud S r   )r?   r  r.  rh   rg   s      r   test_consecutivez!ByteReverseTests.test_consecutive  si    %%'' 	# 	#AA MMOOOMMOOOQ""""	# 	#r   c                    t          t          t          d                    |                                           }|                                 |                                }|                     |d d         d           t          d          D ]}t          d|z            }t          d|          }t          d|          }|	                                }|                                ||         
                    |          t          |          ||<   |                    ||           |                     ||           |                     |           d S )Nr  r   s	    @ `r  rQ   r   )r   r   r<   r7   r.  r   rU   r3   r	   r  	translater  rh   re   )rC   rG   tabler)   r+   r   r  rd   s           r   rp  zByteReverseTests.test_random  s-   YuSzz**D,>,>,@,@AA			rr$KLLLs 	 	A!a%  A1A1AA!"QqS!1!;!;E!B!BJqMM!A#MM!QQ"""NN1	 	r   c                 b   t          d          D ]}t          d|z            }|                                }|                                 t	          ||                     |j                            }|                     |                                |                                           d S )NrQ  rQ   )	r<   r3   r  r.  r   rH   r*   rU   r   r&  s       r   r   zByteReverseTests.test_endian  s    r 	7 	7A!a%  AAMMOOOD00::;;AQYY[[!))++6666	7 	7r   c                     t          g d          }t          |          }|                     |j                   |                                 |                     |t          g d                     d S )Nr  r   )r   r  r  r]  r  )r   r   rb   r_   r.  rU   rg   s      r   rw  zByteReverseTests.test_imported  st    '''((A$$$	I&<&<&<==>>>>>r   N)rj   rw   rx   r  r  r$  r  rp  r   r"   r   rw  r   r   r   r  r    s        - - -; ; ;,	 	 	# # #   7 7 7 VG__? ? _? ? ?r   r  c                        e Zd Zd Zd Zd ZdS )ToListTestsc                 r    t                      }|                     |                                g            d S r   )r   rU   rA   rB   s     r   r  zToListTests.test_empty  s/    JJR(((((r   c                 &   t          d          }|                                }|                     t          |          t                     |                     |g d           |D ]*}|                     t          |          t
                     +d S )Nr  )r&   r&   r   )r   rA   rU   r^   r6  r   )rC   r+   r   r_  s       r   r  zToListTests.test_simple  s    UOOhhjjcD)))iii((( 	. 	.DT$ZZ----	. 	.r   c                    |                                  D ]k}|                                }|                     |t          |                     |                     |d |                                D                        ld S )Nc                 ,    g | ]}t          |          S r   )r   r>  s     r   r   z+ToListTests.test_random.<locals>.<listcomp>	  s    "<"<"<a3q66"<"<"<r   )r?   rA   rU   r6  r   r  s      r   rp  zToListTests.test_random  s    %%'' 	> 	>A((**CS$q''***S"<"<16688"<"<"<====	> 	>r   N)rj   rw   rx   r  r  rp  r   r   r   r  r    sA        ) ) ). . .> > > > >r   r  c                       e Zd Zd Zd ZdS )
ClearTestsc                     t          d          }|                                 |                     t          |          d           d S )N1110000001001000011111r   )r   r   rU   rW   rB   s     r   r  zClearTests.test_simple  s?    -..				Q#####r   c                 :   |                                  D ]}|j        }|                                 |                     |           |                     t          |          d           |                     |j        |           |                     |           d S r   )r?   r*   r   rb   rU   rW   re   r3  s      r   rp  zClearTests.test_random  s    %%'' 	 	AXFGGIIIQSVVQ'''QXv...NN1	 	r   N)rj   rw   rx   r  rp  r   r   r   r  r    s2        $ $ $
    r   r  c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )
CountTestsc                    t          d          }|                     |                                d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    dddd	          d           |                     |                    t          d
                    d           |                     |                    t          d                    d           |                     t          |j        d           |                     t          |j        dddd           |                     t
          |j        d           |                     t
          |j        d           |                     t
          |j        dd           |                     t
          |j        ddd           |                     t
          |j        dd           |                     t
          |j        ddd           d S )Nrz  r:   TFrJ   r&   r   rL   rR   r   r  r   r=  rL  g      @)r   rU   ra   r   r   r   rB   s     r   rf  zCountTests.test_basic  s   WA&&&***+++Q'''Q'''Aq"--q111#//333$00!444*agq111*agq!Q:::)QWb111)QWc222)QWa555)QWaC888)QWa555)QWaC88888r   c                    t          d          }|                     t          |          d           |                     |                    t          d                    d           |                     |                    t          d                    d           |                     |                    t          d                    d           |                     |                    t          d	                    d           |                     |                    t          d	          d
          d           |                     |                    t          d	          d          d           |                     |                    t          d	          d          d           |                     |                    t          d	          dd          d           |                     |                    t          d          d          d           |                     |                    t          d          d          d           |                     t
          |j        t          d          ddd           |                     t
          |j        t          d          ddd           |                     t
          |j        t          d          ddd           d S )Nz10011000 1110000r   r   r[  r  r  r|  rJ   r  rQ   r&   rZ  r}  rR   r   )r   rU   rW   ra   r   r   rB   s     r   test_subzCountTests.test_sub2  sB   '((Q$$$"..333$00!444$00!444%111555%!44a888%"55q999%"55q999%!R88!<<<$44a888$44a888*agx||QAFFF*agx~~q"aHHH*agx~~r1bIIIIIr   c           	         t          d          D ]}t          d          }t          |          }|                                }t          t          d                    }|                                }t	          | dz
  |dz             }t	          | dz
  |dz             }|                     |                    |||          |                    |||                     d S )Nr;   r  rQ   r9   )r<   r   r3   r   r	   rU   ra   )	rC   r>   r)   r+   r  rd   rG   r   r  s	            r   test_random_subzCountTests.test_random_subC  s    t 	A 	AA#A!AA)A,,''AARR((ARR((AQWWQ1--qwwq!Q/?/?@@@@	A 	Ar   c                 J   t          d          D ]}t          t          |g                    }|                     t	          |          d           |                     |                                t          |          dd                              d                     d S )Nr  rQ   rJ   r  )r<   r   r   rU   rW   ra   bin)rC   r   r+   s      r   r$  zCountTests.test_byteN  s    s 	? 	?AA3((ASVVQ'''QWWYYAqrr
(8(8(=(=>>>>	? 	?r   c           
      p   t          d          D ]}t          |          }|                                }dD ]}}|                    t	          |                    }|                     |                    |          |           |                     |                    ||| dz
  d          |           ~d S )Nr  r  r&   rR   )r<   r3   r   ra   ro   rU   )rC   r)   r+   r  re  refs         r   test_whole_rangezCountTests.test_whole_rangeT  s    s 	A 	AA!AA A Aggc!ffoo  S111  ArAvr!:!:C@@@@A	A 	Ar   c                    d}t          |          }t          t          t          |          d                    }d|t	          |          <   |                     |                    d          t          |                     |                     |                    d          |t          |          z
             t          d          D ]}t          |          t          |          t          fd|D                       }|                     |                    d          |           |                     |                    d          z
  |z
             d S )N   r  rj  r&   r   r  c              3   <   K   | ]}|cxk    rk     n nd V  dS r&   Nr   )r   r   r   r  s     r   rV  z)CountTests.test_sparse.<locals>.<genexpr>h  s7      77AAJJJJQJJJJJaJJJJ77r   )
r   r7  r   r<   r6  rU   ra   rW   r   sum)rC   r)   r+   indicesr>   r  r   r  s         @@r   test_sparsezCountTests.test_sparse]  sH   QKKgeAhh#...//$w--S\\222QW%5666s 	< 	<A!A!QA7777777777CQWWQ1--s333QWWQ1--q1us{;;;;	< 	<r   c                    d}t          |          }|                                }t          d          D ]$}t          |          }t          ||          }|||         }|                    d          }|                    d          }	|                     ||	z   ||z
             |                     |                    d||          |           |                     |                    d||          |	           |||         }
|                     |
                    d          |           |                     |
                    d          |	           &d S )Nr  r;   r   r  r   r&   )r3   r   r<   r   ra   rU   )rC   r)   r+   r  r>   r   r  rG   c0c1rd   s              r   
test_step1zCountTests.test_step1l  s;   aLLFFHHt 	- 	-A!A!QA!A#ABBR"Wa!e,,,QWWQ1--r222QWWQ1--r222!A#AQWWQZZ,,,QWWQZZ,,,,	- 	-r   c                    t          d          }|                     |                                d           |                     |                    dd          d           |                     |                    dddd          d	           |                     |                    dddd          d           |                     |                    dd
dd          d           |                     |                    dd          d           |                     |                    ddd          d           |                     |                    dd	d          d           |                     |                    ddd          d           |                     |                    ddd          d           |                     |                    ddd          d           d S )Nz01001100 01110011 01r   r   r  r:   r&      rJ   r   r   r  rZ  rK   r  r   r  rR   rQ   r   )r   rU   ra   rB   s     r   r_  zCountTests.test_explicit  s   +,,A&&&B+++Ar1--q111Ar1--q111B2..222B+++Ar**A...Ar**A...Ar**A...Ar**A...B++Q/////r   c           	      8   t          d          D ]}t          |          }t          d          }|                     |          }|                     |                    ||j        |j        |j                  ||                             |                     d S )Nr  rJ   )	r<   r3   r   rO   rU   ra   r=   r  rN   )rC   r)   r+   re  r  s        r   rB  zCountTests.test_random_slice  s    s 	, 	,A!A!A!!!$$AQWWQ@@qTZZ]], , , ,		, 	,r   c           	         d}t          d          D ]w}t          |d          }t          t          |          |d          d          }|                     |                                |                    dd|z                       xd S )Nr  rQ  r/   r   r&   rQ   )r<   r3   r   r  rU   ra   )rC   r  r   r+   rd   s        r   test_offest_bufferzCountTests.test_offest_buffer  s    r 	; 	;A!X&&A
1abb 1(CCCAQWWYY1q5(9(9::::	; 	;r   N)rj   rw   rx   rf  r  r  r$  r  r  r  r_  rB  r  r   r   r   r  r    s        9 9 9&J J J"	A 	A 	A? ? ?A A A< < <- - -(0 0 0, , ,; ; ; ; ;r   r  c                   `    e Zd Zd Zd Zedej        dfd            Zd Z	d Z
d Zd Zd	 Zd
S )
IndexTestsc                    t                      }dD ]L}|                     |                    |          d           |                     t          |j        |           Mt          d          }|                     t          |j                   |                     t          |j        dd           |                     t          |j        ddd           |                     t          |j        dddd           |                     |                    dd          d           |                     t          |j        d           |                     t          |j                   |                     t          |j        dd           |                     t          |j        ddd           |                     t          |j        dddd           d S )	Nr  rR   r  r&   r+   r   Tr  )r   rU   findr   r   indexr  r   r  s      r   r'  zIndexTests.test_errors  s   JJ" 	6 	6AQVVAYY+++j!'15555#JJ)QV,,,)QVQ444)QVQ3777)QVQ3<<<..333*agt444)QW---)QWa555)QWaC888)QWaC=====r   c                 N   t          d          }dddddddd	d
|                                ddddff
D ]\  }}}}}t          ||                                           }|                     |                    ||||          |           |dk    r-|                     |                    ||||          |           n#|                     t          |j        |||           t          |          dk    r2|                     |                    |d         |||          |           d S )Nz10011000 101000)r   r   r  r   r   )r   r   r  r   rR   )r   r   r  r   r&   )r  rQ   r  r&   r9   )r  ir}  r&   rQ   )r|  r   r  r   r:   )r|  r  r  r   rR   )r  r   r  r&   rR   )rN  r   r  r&   rQ   r   r  r&   )	r   r   r7   rU   r  r  r   r   rW   )rC   r+   subr=   r  r  r   rd   s           r   r_  zIndexTests.test_explicit  s>   &''(((((((((1b!a(-
 	H 	H(CeS d002233AQVVAudE::C@@@axx  E4!?!?EEEE!!*agudEJJJ1vv{{  !eT5!A!A3GGG)	H 	Hr   r   c                     || k    rdS t          ||d          }|                    |           \  }}}||k    rdS |r|n|S )z
        Return first (or rightmost (right=1)) index of an empty sequence
        inside a sequence S of length n with S[start:stop], or -1 when no
        empty sequence is found.
        rR   r&   )rM   r  )r)   r=   r  r  r  strides         r   
find_emptyzIndexTests.find_empty  sV     1992%q!!iilltV4<<2'tt%'r   c                    t          dg          ddfD ]Z}d|z  }|                     t          |          d           t          d          D ]}t	          dd          }||z  }|                     t          |          |           |                     t          |          t          |          cxk    ot          |          k    nc            |                     |                    |          |                     |                     |                     |	                    |          |                     |d                     t	          dd          }|                     |                    ||          |                     ||                     |                     |	                    ||          |                     ||d                     t	          dd          }|                     |                    |||          |                     |||                     |                     |	                    |||          |                     |||d                      \d S )	Nr   rU  r=  r   rL   r&   r  rK   )
r   rU   rW   r<   r	   rX   r^   r  r  rfind)rC   r   emptyr>   r)   r  r=   r  s           r   test_find_emptyzIndexTests.test_find_empty  s[   A3+ 	E 	EAEESZZ+++2YY E EAqMME  Q+++Q4;; A A A A$q'' A A A ABBB  0B0BCCC  !1L1LMMMA  u!5!5!%E!:!:< < <  !6!6!%E!C!CE E E r1~~  ud!;!;!%E4!@!@B B B  t!<!<!%E4!C!CE E E E%E	E 	Er   c           
      n   t                      }t          d          D ]}t          dd          }t          |          }t          d          }|                     |                    ||          |                     ||                     t          dd          }|                     |                    |||          |                     |||                     t          dd          }|                     |                    ||||          |                     ||||                     d S )Nr   r   rL   r&   r  rK   )r   r<   r	   r   rU   r  r  )rC   r  r>   r)   r  r  r=   r  s           r   r  zIndexTests.test_empty  s<    

r 	E 	EA1AANNEQVVEV77!__Qe_<<> > > BNNEQVVE5V>>!__QU_CCE E E 2q>>DQVVE5$>>!__QtUCCE E E E	E 	Er   c                 (   d}t          |          }t          |          D ]o}|                    d           |                     t          |j        d           |                     |                    d          d           d||<   |                     |                    d          |           |                     |                    d          |           |                    d           |                     t          |j        d           |                     |                    d          d           d||<   |                     |                    d          |           |                     |                    d          |           qd S )N   r   r&   rR   )r   r<   r'   r   r   r  rU   r  )rC   r)   r+   r   s       r   test_range_explicitzIndexTests.test_range_explicit	  sX   QKKq 	+ 	+AHHQKKKj!'1555QVVAYY+++AaDQWWQZZ+++QVVAYY***HHQKKKj!'1555QVVAYY+++AaDQWWQZZ+++QVVAYY****	+ 	+r   c           	      8   t          d          D ]}t          dd          }t          |          }t          t	          t          |          d                    }d||<   |                     |                    dd          |d                    |                     |                    dd          |d                    t          d|          t          d|          fd	|D             }|rf|                     |                    dd          |d                    |                     |                    dd          |d                    Kt          d          }|                     |                    d|          d           d S )
Nr  r&   r   r   rj  r   r  rR   c                 4    g | ]}|cxk    rk     n n|S r   r   )r   r   r=   r  s     r   r   z5IndexTests.test_random_start_stop.<locals>.<listcomp>'  s:    :::1(9(9(9(9T(9(9(9(9(9Q(9(9(9r   )	r<   r   r  r  r   rU   r  r	   r   )	rC   r>   r)   r+   plstplst2r  r=   r  s	          @@r   test_random_start_stopz!IndexTests.test_random_start_stop  s   s 	D 	DA!S!!AaA'%((a00011DAdGQVVAQV//a999QVVAQV//b:::AqMME1a==D::::::::E D  5$!:!:E!HEEE  5$!:!:E"IFFFF#A  5$!>!>CCCC#	D 	Dr   c           	         t          d          D ]V}t          dd          }t          |          }|                                }|                     |                    |          d           t          |          }t          t          d          |                                           }|                                }|                     |                    |          |                    |                     t          | dz
  |dz             }t          | dz
  |dz             }|                    |||          }	|
                    |||          }
|                     |	dk    |
dk               |                     |                    |||d          |	           |                     |                    |||d          |
           t          |          dk    r|d         }|                     |t          d          v            |                     |                    |||d          |	           |                     |                    |||d          |
           Xd S )	Nr   r&   r  r   r9   rL   rR   rJ   )r<   r   r3   r   rU   r  rW   r   r7   r	   r  rX   )rC   r>   r)   r+   r  rd   rG   r   r  ref_lref_rre  s               r   r  zIndexTests.test_random_sub/  s   s 	< 	<A!S!!A!AAQVVAYY***AA2(:(:(<(<==AAQVVAYYq		222QA&&AQA&&AFF1aOOEGGAq!$$EUb[%2+666QVVAq!Q//777QVVAq!Q//7771vv{{aDU1XX...  1a!3!3U;;;  1a!3!3U;;;1	< 	<r   N)rj   rw   rx   r'  r_  ry   r   r   r  r  r  r  r  r  r   r   r   r	  r	    s        > > >&H H H0 CKq ( ( ( \(E E E4E E E&+ + +$D D D(< < < < <r   r	  c                   P    e 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S )SearchTestsc                 d    t                      }|                     t          |j        d           d S )N
itersearchr   r   r  __getattribute__rB   s     r   test_no_itersearchzSearchTests.test_no_itersearchN  ,    JJ.!*<lKKKKKr   c                    t                      }ddddt          d          t          d          fD ]8}|                     t          |                    |                    g            9t          d          }ddt          d          t          d          fD ]9}|                     t          |                    |                    d	g           :d
t          d          z  }|                     t          |                    d                    g            |                     t          |                    d                    t          t	          d
                               |                     t          |j        d           d S )Nr   r&   FTr   r  r  rl  rJ   r  r  )r   rU   r6  r?  r<   r   r   r
  s      r   r  zSearchTests.test_simpleS  sJ   JJAudHSMM8C==@ 	4 	4AT!((1++..3333WD(3--$7 	5 	5AT!((1++..4444(3--ahhqkk**B///ahhqkk**Ds,<,<===)QXu55555r   c                 b   t          d          }|                     t          |j        d           |                    d          }|                     |d           |                     t          |          d           |                     t          |          d           |                     t          |          d           |                     t          t          |           t          d          }|                    |          }~~|                     t          |          d           d S )	Nrz  r   r&   searchiteratorr   r:   r  r|  )r   r   r   r?  rl   rU   r  r  )rC   r+   r  r   s       r   test_search_nextzSearchTests.test_search_nextb  s    W)QXr222XXa[[".///b1%%%b1%%%b1%%%-r222TNNXXa[[qb1%%%%%r   c                    t          d          }t                      }|                     t          |                    |                    g d           dddg dfdddg dfd	d
dddgfdddg fddddgfdddg fddddgfdddg ffD ]@\  }}}}|                     t          |                    ||||                    |           Ad S )Nrz  )r   r&   rJ   r:   r  rL   r  r   r   r&   r  )r&   rJ   r:   r  rZ  rY  rJ   r:   rR   r   rU   r6  r?  )rC   r+   r  r=   r  r  r   s          r   test_search_emptyzSearchTests.test_search_emptyp  s   W

ahhuoo..0B0B0BCCCa.../aLLL)RQF#aBaQC aBaQC aB	(
 	" 	"#E4 T!((5%u"E"EFF " " " "	" 	"r   c                 Z   t          d|                                           }dddgfdg dfddgfdd	gfd
g fddgfddgfddgfddgfdg ff
D ]]\  }}t          ||                                           }|                     t          |                    |                    |           ^d S )Nrz  r   r&   rJ   r  )r   r:   r  r  r|  r:   r  1001r   r2  rU  rj  )r   r7   rU   r6  r?  rC   r+   r  r   rd   s        r   test_explicit_1zSearchTests.test_explicit_1  s    Wd002233!Q(C+;!~D1#;}FQC=!~FQC=!~Hb>	; 	5 	5FAs
 D..0011AT!((1++..4444	5 	5r   c                     t          d          }dg dfdg dfdddgfd	g d
ffD ]J\  }}t          |          }|                     t          |                    |                    |           Kd S )Nz10010101 11001111 1001011r2  )r   r  rQ  r  )r   r  r  r   r%  rL      r|  )r   r   r[  r0  r4  s        r   test_explicit_2zSearchTests.test_explicit_2  s    011{{{+/B(zzz*, 	5 	5FAs AT!((1++..4444	5 	5r   c                    |                                  D ],}|                                }|                    d           d|t          |                    d                    <   |                     ||           |                    d           d|t          |                    d                    <   |                     ||           t          |                    d                    t          |                    d                    z  }|                     t          |          t          |                     .d S rR  )	r?   r  r'   r6  r?  rh   r7  rU   rW   )rC   r+   rd   r  s       r   rw  zSearchTests.test_bool_random  s	   %%'' 	- 	-AAHHQKKK#$Ad188A;; Q"""HHQKKK#$Ad188A;; Q"""AHHQKK  3qxx{{#3#33ASVVSVV,,,,	- 	-r   c                 :   |                                  D ]rp|                     t                                                  dg           |                     t                              d                    dg           dD ]}t	          ||                                           fdt          t                              D             }|                     t                                                  |                                         D ]0}|                     ||t                    z                       1|                     t                                                  |                               d          D ]0}|                     ||t                    z                       1|                     t                              d                    |d d d                    d S )Nr   r&   r  )r   r  r  r  r|  rN  r  r  c                 P    g | ]"}||t                    z            k     |#S r   rW   )r   r   r+   rd   s     r   r   z+SearchTests.test_random.<locals>.<listcomp>  s5    IIIaAaCFF
lOq4H4H4H4H4Hr   rR   )r?   rU   r6  r?  r   r7   r<   rW   )rC   r  r  r  r+   rd   s       @@r   rp  zSearchTests.test_random  s   %%'' 	I 	IA B  ahhqkk!2!2QC888  ahhqh&:&:!;!;aSAAAI I IS$"4"4"6"677IIIII5Q==III  ahhqkk!2!2D999! 9 9A$$QqSVV|_a8888  ahhqkk!2!2D999!1-- 9 9A$$QqSVV|_a8888  ahhqh&:&:!;!;T$$B$ZHHHHI	I 	Ir   c                   	 t          d          D ]}t          dd          }t          |          }t          t          d                    t          |          	t          |          }|	|         r+	fdt          t                              D             }n t	          t          	|dz                       }|                     t          |          |           |                     t	          |                    	|                    |           t                    dk    r>|                     t	          |                    d         	|                    |           |rd|                     |                    	|d          |d                    |                     |                    	|d          |d                    |	                                 |                     t	          |                    	|d                    |           t                    dk    r?|                     t	          |                    d         	|d                    |           |                     v rt          |          nd           |s;t          d          }|                     |                    	||          d           d S )	Nr  r&   r   r9   c                 V    g | ]%}||t                    z            k     |z   &S r   r<  )r   r   rh  rd   r   s     r   r   z2SearchTests.test_search_random.<locals>.<listcomp>  sD     2 2 2!aCFF
l+q00 A000r   r   rR   T)r<   r   r3   rW   r6  rU   r  r?  r  r  r   r   )
rC   r>   r)   r+   r  r  r  rh  rd   r   s
          @@@r   test_search_randomzSearchTests.test_search_random  s   s #	= #	=A!R  A!A)B--((A!A!A1Q3B -2 2 2 2 2 2uSWW~~ 2 2 2 E!QUOO,,VD\\4000T!((1a"3"344d;;;1vv{{  ahhqtQ&:&:!;!;TBBB ?  1a!3!3T!W===  1a!3!3T"X>>>LLNNNT!((1aA"6"677>>>1vv{{  ahhqtQ1&=&=!>!>EEE Q"WA&?d4jjj4@@@ =#A  1a!7!7<<<G#	= #	=r   c                    dD ]}t          d          }t          d          }d}t          |                    ||                    D ]$\  }}|dk    r|                                 |dz  }%|                     |d           d S )	Nr  r  r9   r   r  (   r&   )   )r  rd  r?  r   rU   rC   r  r+   rd   r  r   r   s          r   r  z SearchTests.test_iterator_change  s     	$ 	$Ec

Ab		AA!!((1E(":":;;  177GGIIIQQ####	$ 	$r   c                    dD ]}t          d          }t          d          }d}t          |                    ||                    D ]%\  }}|dk    r|                    d           |dz  }&|                     |d           d S )Nr  r  r   r  rQ  r&   r  )r  rd  r?  r^  rU   rC  s          r   test_iterator_change_subz$SearchTests.test_iterator_change_sub  s     	$ 	$Ec

AaAA!!((1E(":":;;  177HHQKKKQQ####	$ 	$r   N)rj   rw   rx   r)  r  r.  r1  r5  r8  rw  rp  r?  r  rE  r   r   r   r$  r$  L  s        L L L
6 6 6& & &" " ""5 5 55 5 5- - -I I I($= $= $=L	$ 	$ 	$	$ 	$ 	$ 	$ 	$r   r$  c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )
BytesTestsc                 
   t          dd          }|                    d           |                     |t          d                     |                    d           |                     |t          dd                     d S )Nr  r0   r   z110 01000001s   BCz110 01000001 01000010 01000011rS   )r   	frombytesrU   rh   rB   s     r   test_frombytes_simplez BytesTests.test_frombytes_simple  s    UE""	DH^44555	EH%E,13 3 3 	4 	4 	4 	4 	4r   c                 t   t          d          }|                    d           |                     |t          d                     |                    t          dg                     |                     |t          d                     |                    t	          d                     |                     |t          d                     |                                 t          j        d	d
dg          }|                     |j        d           t          j	        dk    r|
                                 |                    |           |                     |t          d                     |                     |           dddddd g fD ]#}|                     t          |j        |           $d S )Nr0   rS   r   01000001rD  z01000001 11111110   Cz01000001 11111110 01000011Hi  r  rJ   z#00001111 00000001 11111111 00000000r   r   r&   FT)r   rI  rU   r   r  r   r   itemsizer   r   byteswapre   r   r   )rC   r+   arrr   s       r   test_frombytes_typeszBytesTests.test_frombytes_types  s   E"""	DHZ00111	Ise$$%%%H%899:::	Jt$$%%%H%ABBCCC				k#~..q)))=E!!LLNNN	CH%JKKLLLqQ5$b0 	9 	9Aia8888	9 	9r   c                    t          d|                                           }|                    d           t          dd          }|                    t          |                     |                     |j        d           |                     |                                d           |                     |           d S )Nr   r   r0   )r   r7   rI  rU   r*   r   re   r`  s      r   test_frombytes_bitarrayz"BytesTests.test_frombytes_bitarray  s     Q**,,--	FQ	HQKK   5)))f---qr   c                 f    t                      }|                     t          d|j        |           d S rc  )r   rv   r  rI  rB   s     r   test_frombytes_selfzBytesTests.test_frombytes_self   s:    JJ  KK	 	 	 	 	r   c                 L   |                                  D ]}|                                }|                    d           |                    t                                 |                     ||           |                     ||u            |                     |           d S Nr   )r?   r  rI  r   rh   rb   re   rg   s      r   test_frombytes_emptyzBytesTests.test_frombytes_empty&  s    %%'' 	 	AAKKKK	$$$Q"""Q!V$$$NN1	 	r   c                    t                      }|                     t          |j                   |                     t          |j        dd           |                     t          |j        d           |                     |           d S )Nr   r&   )r   r   r   rI  re   rB   s     r   test_frombytes_errorsz BytesTests.test_frombytes_errors/  sq    JJ)Q[111)Q[#s;;;)Q[!444qr   c                 Z   t          d          D ]}t          j        |          }t          d|                                           }|                    |           |                     t          |          d|z             |                                 D ]}t          ||j	                  }|                    |           |                     t          |          t          |          d|z  z              |                     |||z              | 
                    |           d S )NrQ  r   rQ   )r<   r1   r2   r   r7   rI  rU   rW   r?   r*   re   )rC   r)   r  rd   r+   r  s         r   test_frombytes_randomz BytesTests.test_frombytes_random6  s   r 
	" 
	"A
1AD..0011AKKNNNSVVQU+++))++ " "Q))A  QQ!a%888  AE***q!!!!"
	" 
	"r   c                 r    t                      }|                     |                                d           d S rX  )r   rU   r   rB   s     r   test_tobytes_emptyzBytesTests.test_tobytes_emptyC  s/    JJc*****r   c                    t          |                                           }|                    d           |                     |                                d           t          d          D ]}t          j        |          }t          ||                                           }|                     t          |          d|z             |                     |                                |           | 	                    |           d S )NrS   s   foorQ  rQ   )
r   r7   rI  rU   r   r<   r1   r2   rW   re   )rC   r+   r)   r  s       r   test_tobytes_endianzBytesTests.test_tobytes_endianG  s    D..00111	Ff---r 	 	A
1A4#5#5#7#7888ASVVQU+++QYY[[!,,,NN1	 	r   c                     dD ]>\  }}t          |d          }|                     |                                |           ?d S )N))r&   r   )rJ      )r:      )r  r  )rL      )r      ?)r      )rQ   rV  )r  s   )r   s   )r[  s   )r  s   )r  s   r/   rS   )r,   rU   r   )rC   r)   r  r+   s       r   test_tobytes_explicit_onesz%BytesTests.test_tobytes_explicit_onesS  sW    C 	- 	-DAq Qx(((AQYY[[!,,,,	- 	-r   N)rj   rw   rx   rJ  rR  rT  rV  rY  r[  r]  r_  ra  rh  r   r   r   rG  rG    s        4 4 49 9 9*
 
 
      " " "+ + +
 
 
- - - - -r   rG  c                        e Zd Zd Zd Zd ZdS )DescriptorTestsc                     dD ]Z}t          d|          }|                     |j        |           |                     t          |j                  t                     [d S )NrF   r  )r   rU   r*   r^   ro   r   s      r   r   zDescriptorTests.test_endian_  sc    % 	2 	2FF++AQXv...T!(^^S1111	2 	2r   c                    t          d          D ]}t          |          }|                     |j        t	          |                     |                     t          |j                  t                     |                     |j        d|j        z  |z
             |                     d|j        cxk    odk     nc            |                     t          |j                  t                     d S )Nr   rQ   r   )	r<   r   rU   rV   r   r^   r   rY   rX   r   s      r   test_nbytes_padbitsz#DescriptorTests.test_nbytes_padbitse  s    r 	3 	3AAQXz!}}555T!(^^S111QYAHq(8999OOA....Q....///T!)__c2222	3 	3r   c                 ^   t          d          }|                     |j                   |                     t	          |j                  t
                     t          |          }|                     |j                   |                     t	          |j                  t
                     d S )Nr  )r   rb   r_   rU   r^   r   r   rX   rg   s      r   r  zDescriptorTests.test_readonlyp  s    UOO$$$aj))40001
###aj))400000r   N)rj   rw   rx   r   rm  r  r   r   r   rj  rj  ]  sA        2 2 2	3 	3 	31 1 1 1 1r   rj  c                   0   e Zd Zd Zd Zd Zd Zd Z ee	          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 ee          d             Z ee	pe          d             Z ee          d             ZdS )	FileTestsc                     t          j                    | _        t          j                            | j        d          | _        d S )Ntestfile)tempfilemkdtemptmpdirr1   r  r  tmpfnamer}   s    r   setUpzFileTests.setUp}  s/    &((T[*==r   c                 8    t          j        | j                   d S r   )shutilrmtreeru  r}   s    r   tearDownzFileTests.tearDown  s    dk"""""r   c                     t          | j        d          5 }|                                cd d d            S # 1 swxY w Y   d S )Nr  )r   rv  read)rC   r  s     r   	read_filezFileTests.read_file  s    $-&& 	"7799	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   7;;c                 v    |                      t          j                            | j                  |           d S r   )rU   r1   r  getsizerv  )rC   r3  s     r   assertFileSizezFileTests.assertFileSize  s.    77>>>>>r   c                    d t          |                                           D             }t          | j        d          5 }t	          j        ||           d d d            n# 1 swxY w Y   t          | j        d          5 }t	          j        |          }d d d            n# 1 swxY w Y   |                                D ]$}|                     ||         ||                    %d S )Nc                     i | ]\  }}||	S r   r   rl  s      r   
<dictcomp>z)FileTests.test_pickle.<locals>.<dictcomp>  s    AAAtq!aAAAr   wbr  )	rd  r?   r   rv  r  dumpr  keysrh   )rC   d1for  d2r   s         r   test_picklezFileTests.test_pickle  sR   AAy)=)=)?)?@@AAA$-&& 	 "KB	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 $-&& 	!"RB	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!7799 	/ 	/CRWbg....	/ 	/s$   A##A'*A'B$$B(+B(c                    t          j        | j                  }g }t          |                                           D ]0\  }}t          |          }|||<   |                    ||f           1|                                 t          j        | j                  }|D ]!\  }}|                     ||         |           "|                                 d S r   )	shelver   rv  rd  r?   ro   r^  closerh   )	rC   r  storedr   r+   r   r  r   re  s	            r   test_shelvezFileTests.test_shelve  s    [''d224455 	$ 	$DAqa&&CBsGMM3(####



['' 	' 	'DAqRUA&&&&





r   c                    t          | j        d          5 }	 d d d            n# 1 swxY w Y   |                     d           t                      }t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   |                     |t                                 |                     |           d S )Nr  r   r  )r   rv  r  r   fromfilerU   re   rC   r  r+   r  s       r   test_fromfile_emptyzFileTests.test_fromfile_empty  s+   $-&& 	"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	AJJ$-&& 	"JJrNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	HJJ'''qs   $(('B		BBc                    t          | j        d          5 }|                    d           d d d            n# 1 swxY w Y   |                     d           t	          d          }t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   |                     |t	          d                     t	          d          }t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   |                     |t	          d	                     d S )
Nr     Foor:   r0   rS   r  z01000110 01101111 01101111r/   01100010 11110110 11110110)r   rv  writer  r   r  rU   r  s       r   test_fromfile_FoozFileTests.test_fromfile_Foo  s   $-&& 	"HHV	 	 	 	 	 	 	 	 	 	 	 	 	 	 	AE"""$-&& 	"JJrNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	H%ABBCCCH%%%$-&& 	"JJrNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	H%ABBCCCCCs0   8<<=BB#&B#2DDDc                 
   t                      }|                     t          |j                   |                     t          |j        d           |                     t          |j        d           t          | j        d          5 }|                    d           d d d            n# 1 swxY w Y   t          | j        d          5 }|                     t          |j        |d            d d d            d S # 1 swxY w Y   d S )Nr  r  r  r   r  )r   r   r   r  r  r   rv  r  )rC   r+   r  r  s       r   test_fromfile_wrong_argsz"FileTests.test_fromfile_wrong_args  s\   JJ)QZ000.!*b999.!*e<<<$-&& 	"HHV	 	 	 	 	 	 	 	 	 	 	 	 	 	 	$-&& 	?"iR>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s$   B((B,/B,#C88C<?C<c                    t          | j        d          5 }|                    d           d d d            n# 1 swxY w Y   |                     d           t	                      }t          | j        d          5 }|                     t          d|j        |           d d d            n# 1 swxY w Y   t          | j        d          5 }|                     t          d|j        |           d d d            d S # 1 swxY w Y   d S )Nr  s
   0123456789r9   r}  ro  z).read() did not return 'bytes', got 'str')	r   rv  r  r  r   rv   r   r  r   r  s       r   test_fromfile_erroszFileTests.test_fromfile_erros  s   $-&& 	$"HH]###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$BJJ$-&& 	5"$$%96%&Z5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 $-%% 	K$$Y 1:;<:rK K K	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks0   8<<;#B**B.1B.
#C::C>C>c                      G d d          }t                      } |            }|                     t          d|j        |           d S )Nc                       e Zd Zd ZdS )7FileTests.test_frombytes_invalid_reader.<locals>.Readerc                     dS )Nr  r   )rC   r)   s     r   r}  z<FileTests.test_frombytes_invalid_reader.<locals>.Reader.read  s    rr   N)rj   rw   rx   r}  r   r   r   Readerr    s#            r   r  z).read() did not return 'bytes', got 'int')r   rv   r   r  )rC   r  r+   r   s       r   test_frombytes_invalid_readerz'FileTests.test_frombytes_invalid_reader  su    	 	 	 	 	 	 	 	 JJFHH   -678z1	F 	F 	F 	F 	Fr   c                 x   t          dd          D ]'}t          j        |          }t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   t                      }t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   |                     t          |          d|z             |                     |j
        |           |                     |                                |           |                     |           )d S )N    r  r  rQ   )r<   r1   r2   r   rv  r  r   r  rU   rW   rV   r   re   )rC   r  r  r  r+   r  s         r   test_from_large_fileszFileTests.test_from_large_files  s   ue$$ 	 	A:a==DdmT** b               

AdmT** b

2              SVVQU+++QXq)))QYY[[$///NN1	 	s#   AA#	&A#	B//B3	6B3	c                    t          | j        d          5 }|                    d           d d d            n# 1 swxY w Y   d}t          d          D ]}t	          |dz  d          }t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   |                     |t	          |dz  |z                        |                     |           d S )	Nr  r  r  rQ  r  r/   rS   r  )r   rv  r  r<   r   r  rU   re   )rC   r  foo_ler)   r+   r  s         r   test_fromfile_extend_existingz'FileTests.test_fromfile_extend_existing  sc   $-&& 	"HHV	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 .r 	 	AS222AdmT** b

2              QS6)9 : :;;;NN1	 	s   8<<?B!!B%	(B%	c                     t          d          }t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   |                     d           t          | j        d          5 }t                      }|                    |d           |                     |                                d           |                    |d           |                     |                                d           |                    d           |                    |d           |                     |                                d	           t                      }|                    |d
           |                     |                                d           |                    |d           |                     |                                d           |                    |d           |                     |                                d           |                    |           |                     |                                d           |                    |           |                     |                                d           | 	                    |           d d d            n# 1 swxY w Y   t                      }t          | j        d          5 }|                    d           | 
                    t          |j        |d           d d d            n# 1 swxY w Y   |                     |                                d           t                      }t          | j        d          5 }|                    |d           |                     |                                d           | 
                    t          |j        |d           d d d            d S # 1 swxY w Y   d S )Ns
   ABCDEFGHIJr  r9   r  r   r   r&   r   s   ACrJ   s   DEs   DEFs   DEFGHIJs	   BCDEFGHIJrR   )r   r   rv  tofiler  r  rU   r   r}  re   r   EOFError)rC   r+   r  r   s       r   test_fromfile_nzFileTests.test_fromfile_n  s/   ]##$-&& 	"HHRLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	B$-&& 	!

AJJq!t//		SAAAJJq!t//		TBBBFF1IIIJJq!t//		UCCC

AJJq!t//		UCCCJJq!t//		VDDDJJq!t//		VDDDJJqMMMt//		ZHHHJJqMMMt//		ZHHHNN1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 JJ$-&& 	;!FF1IIIh
Ar:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	l333JJ$-&& 	:!JJq"QYY[[-888h
Aq999		: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:sI   AAA<H5J==KK+8L//L36L3A!O33O7:O7c                    t          d          }t                      }|                    |d           |                     t	          |          d           |                     |                                d           |                    |           |                     t	          |          d           |                     |                                d           |                     |           d S )Ns   somedatar  r  s   somer  )r   r   r  rU   rW   r   re   )rC   r   r+   s      r   test_fromfile_BytesIOzFileTests.test_fromfile_BytesIO  s    K  JJ	

1aQ$$$g...	

1Q$$$k222qr   c                     t                      }t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   |                     d           d S )Nr  r   )r   r   rv  r  r  )rC   r+   r   s      r   test_tofile_emptyzFileTests.test_tofile_empty(  s    JJ$-&& 	!HHQKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	As   AA
A
c                 z   t          dd          }|                                }t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   |                     ||           |                     d           |                     |                                 d           d S )Nz0100011 001101111 01101111r0   rS   r  r:   r  )	r   r  r   rv  r  rh   r  rU   r~  )rC   r+   rd   r   s       r   test_tofile_FoozFileTests.test_tofile_Foo/  s    1%@@@FFHH$-&& 	!HHQKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	AA))622222s   AA!$A!c                    |                                  D ]}t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   |j        }|                     |           |                                 }|                     t          |          |           |                     ||	                                           d S )Nr  )
r?   r   rv  r  rV   r  r~  rU   rW   r   )rC   r+   r  r)   raws        r   test_tofile_randomzFileTests.test_tofile_random9  s   %%'' 	/ 	/AdmT** b              A"""..""CSXXq)))S!))++....	/ 	/s   AA	A	c                    d}t          d|z            }|                     t          |j                   t	          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   |                     |           |                     t          |j        |           t	          | j        d          5 }|                     t          |j        |           d d d            n# 1 swxY w Y   t	          | j        d          5 }|                     t          |j        |           d d d            d S # 1 swxY w Y   d S )Nr  rQ   r  wr  )	r   r   r   r  r   rv  r  r   rI  )rC   r)   r+   r   s       r   test_tofile_errorszFileTests.test_tofile_errorsC  s   QUOO)QX...$-&& 	!HHQKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	A*ah222$-%% 	6i1555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 $-&& 	6!i1555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s6   
A,,A03A0"C00C47C4"D??EEc                    d}t          d|z            }d|dd d<   t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   |                     |           |                                 }|                     t          |          |           |                     ||                                           d S )Ni rQ   r&   rJ   %   r  )	r  r   rv  r  r  r~  rU   rW   r   )rC   r)   r+   r   r  s        r   test_tofile_largezFileTests.test_tofile_largeT  s    !a%LL!%R%$-&& 	!HHQKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	AnnS1%%%aiikk*****s   AAAc                    t          d          D ]}|t          dd          z  }t          | j        d          5 }|                    |           d d d            n# 1 swxY w Y   |                                 }|                     t          |          |j                   |	                                 t          |d          }|                     ||           d S )NrQ  r  r/   rS   r  )
r<   r   r   rv  r  r~  rU   rW   rV   r.  )rC   r)   r+   r  r  rd   s         r   test_tofile_oneszFileTests.test_tofile_ones`  s   r 
	# 
	#AHS2222AdmT** b               ..""CSXXqx000FFHHHX...AQ""""
	# 
	#s   AA!	$A!	c                    t          t          d                    t          t          dd                    z   D ]}t          j        |          }t	          |d          }|                     |j        |           t                      }|                    |           |                     |	                                |           d S )Nr9   r  r  r0   )
r6  r<   r1   r2   r   rU   rV   r   r  getvalue)rC   r)   r  r+   r   s        r   test_tofile_BytesIOzFileTests.test_tofile_BytesIOm  s    eBii4eU(;(;#<#<< 	1 	1A:a==Du%%AQXq)))		AHHQKKKQZZ\\40000	1 	1r   c                    t          | j        d          5 }|                    d           d d d            n# 1 swxY w Y   t          | j        d          5 }t          j        |                                d          5 }t          |d          }|                                }|                     |j                   | 	                    |j
                   |                     |t          d                     d|d d d	<   ~d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |                                 d
           d S )Nr  s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          r+br   r/   r   r0  TrJ   s  UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU)r   rv  r  mmapfilenor   rZ   rb   r_   rX   r[   rU   r  r~  )rC   r  r   mappingr+   rc   s         r   	test_mmapzFileTests.test_mmapv  s   $-&& 	#"HH\"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# $-'' 
	1188::q)) 	WGH===}}  ///...  E$KK000##A# 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 	))>:::::sC   8<<(D) BDD)D	D)D	D))D-0D-c                    t          | j        d          5 }|                    d           d d d            n# 1 swxY w Y   t          | j        d          5 }t          t	          j        |                                d          d          }|                                }|                     |j                   | 	                    |j
                   |                     |dt          d          z             d	|d d d
<   d d d            n# 1 swxY w Y   |                     |                                 d           d S )Nr  s  """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""r  r   r/   r   r;   z	0100 0100r&   r  s  3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333)r   rv  r  r   r  r  rZ   rb   r_   rX   r[   rU   r~  )rC   r  r   r+   rc   s        r   test_mmap_2zFileTests.test_mmap_2  s   $-&& 	%"HH^$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% $-'' 	1	!((**a 8 8JJJA==??DT]+++OODM***Qx'<'< <===AcccF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	))>:::::s   8<<B-DDDc                     t          | j        d          5 }|                    d           d d d            n# 1 swxY w Y   t          | j        d          5 }t          j        |                                dt          j                  }t          |d          }|                                }|                     |j	                   |                     |j
                   |                     t          d|j        dd	           |                     |d d
         dt          d          z             |                     |d
d                                          d           d d d            d S # 1 swxY w Y   d S )Nr  s  Veedonr  r   )accessr0   r   zcannot modify read-only memoryr&   i  i  z	1000 1001s   Veedon)r   rv  r  r  r  ACCESS_READr   rZ   rX   r_   r[   rv   r   r   rU   r   )rC   r  r  r   r+   rc   s         r   test_mmap_readonlyzFileTests.test_mmap_readonly  s   $-&& 	0"HH.///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 $-&& 
	?"	"))++q1ABBBA%000A==??DOODM***OODM***$$Y%E%&]Aq: : : Qxx[#0E0E*EFFFQwxx[0022I>>>
	? 
	? 
	? 
	? 
	? 
	? 
	? 
	? 
	? 
	? 
	? 
	? 
	? 
	? 
	? 
	? 
	? 
	?s   8<<DE33E7:E7N)rj   rw   rx   rw  r{  r~  r  r  r"   pyodider  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r   r   r   rp  rp  {  s       > > ># # #  ? ? ?/ / / VG__  _	 	 	D D D	? 	? 	?K K KF F F     :  :  :D	 	 	  3 3 3/ / /6 6 6"
+ 
+ 
+# # #1 1 1 VG__; ; _;& VGw; ;  ; VG__? ? _? ? ?r   rp  r  r}  r  0101010r+   r  rd   0001100r  r  r   r  ru   r  r   010100g101000hr9  r   r%  r  
0111101111r   00011010lr   r   r  r)   r3  or  10100100001001101r  1100rA  0001000111100011111
0000100011r  00011011110)r  qro  r  rG   ure  r  r   r  r  c                       e Zd Zd Zd Z ee          d             Zd Zd Z	d Z
d Z ee          d             Zd	S )
DecodeTreeTestsc                    t          t                    }|                     t          |          t                      |                     t
          t           d            |                     t
          t           d           t          t                    }t                      |d<   |                     t          t           |           d S )Nr   r  )	r   alphabet_coderU   r^   r   r   r8  r   r   )rC   dtr   s      r   test_createzDecodeTreeTests.test_create  s    &&b:...)Z666)Z777#*j!44444r   c                    t          d          t          d          t          d          dt          d          t          d          t          d          dt          d          t          d          dt          d          t          d          t          d          dfD ]#}|                     t          t          |           $d S Nr   r  r+   rd   r  r  rl  r|  r  )r   r   r   r   )rC   r   s     r   test_ambiguous_codez#DecodeTreeTests.test_ambiguous_code  s    3--hsmm(3--HH4..x~~HSMMJJ3--htnn553--htnn8E??KK	
 	9 	9A j*a8888	9 	9r   c                 >   t          dt          d          i          }|                     dt          j        |          cxk     odk     nc            t          dt          d          i          }|                     t          j        |          dk               d S )Nr  r  r   r  r+   rQ  r   )r   r   rX   r   r1  r  rC   r  s     r   r4  zDecodeTreeTests.test_sizeof  s    hsmm,--CM"--33333333444eBii())b))C/00000r   c                 d   t          dd          D ]r}t          dt          |          i          }|                     |                                |dz              |                     |                                           st          t          d          t          d          t          d          t          d          d          }|                     |                                d	           t          t                    }|                     |                                d
           d S )Nr&   rQ  r+   r  r  r}  r  Ir  r+   r)   r   F   )	r<   r   r  rU   nodesrb   completer   r  )rC   r)   r  s      r   
test_nodeszDecodeTreeTests.test_nodes  s    q" 	, 	,AS%((O,,BRXXZZQ///R[[]]++++hsmmHTNN&uooHUOOE E F FQ'''&&R(((((r   c                    t          dt          d          i          }|                     t          |                                          t
                     |                     |                                           t          t          d          t          d          d          }|                     |                                           t          t          d          t          d          d          }|                     |                                           t          t          d          t          d          t          d          d          }|                     |                                           d S )Nr  r  r   rl  r|  rl  r  )r   r   rU   r^   r  r   rb   rX   r  s     r   test_completezDecodeTreeTests.test_complete  s;   hsmm,--bkkmm,,d333'''hsmm&smm- - . .&&&hsmm&tnn. . / /'''hsmm&tnn&tnn. . / / 	&&&&&r   c                     t          t                    }|                                }|                     t	          |          t
                     |                     |t                     d S r   )r   r  todictrU   r^   r8  )rC   rG   r   s      r   test_todictzDecodeTreeTests.test_todict  sT    }%%HHJJa$'''M*****r   c                    t          t                    }t          d          }|                     t	          |                    |                    g d           |                     d                    |                    |                    d           t                      }|                     t	          |                    |                    g            |                     |           d S )Nz1011 01110 0110 1001)r   r  r+   r)   r   ilan)r   r  r   rU   r6  decoder  re   )rC   rG   r+   s      r   test_decodezDecodeTreeTests.test_decode  s    }%%+,,ahhqkk**,@,@,@AAA!--v666JJahhqkk**B///qr   c                    d t          d          D             }t          |          }|                     |                                |           |                     |                                d           |                     |                                           |                     t          j        |          dk               d S )Nc           	      b    i | ]+t          fd t          d          D                       ,S )c              3   B   K   | ]}t          d |z  z            V  dS r  )r   )r   r  r   s     r   rV  z8DecodeTreeTests.test_large.<locals>.<dictcomp>.<genexpr>  s3      ??qAvl++??????r   r9   )r   r<   )r   r   s    @r   r  z.DecodeTreeTests.test_large.<locals>.<dictcomp>  sN     # # # ????U2YY????? # # #r   r   i  '  )	r<   r   rU   r  r  rX   r  r   r1  )rC   r   rG   s      r   
test_largezDecodeTreeTests.test_large  s    # #Dkk# # #qMMQ'''D)))

%%%a((5011111r   N)rj   rw   rx   r  r  r"   r   r4  r  r  r  r  r  r   r   r   r  r    s        5 5 59 9 9 VG__1 1 _1
) 
) 
)' ' '$+ + +   VG__2 2 _2 2 2r   r  c                       e 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dS )PrefixCodeTestsc                    t                      }|                    t          d           |                     |t                                 |                    t          d           |                     |t          d                     d S )Nr   r+   r  r   rx  r  rU   rB   s     r   test_encode_stringz"PrefixCodeTests.test_encode_string  sq    JJ	###HJJ'''	$$$HV,,-----r   c                    t                      }|                    t          g            |                     |t                                 |                    t          dg           |                     |t          d                     d S )Nru   r  r  rB   s     r   test_encode_listz PrefixCodeTests.test_encode_list  sq    JJ	###HJJ'''	&&&HUOO,,,,,r   c                 L   t                      }t          d          t          d          d}|                    |t          g d                     |                     |t          d                     d }|                                 |                    | |                       |                    |t          d                     |                     |t          d                     |                     |t          d          t          d          d           d S )	Nr   r  r  )r   r&   r&   r   r  c               3      K   dD ]} | V  d S )N)r&   r&   r   r   r&   r&   r   )r  s    r   r   z-PrefixCodeTests.test_encode_iter.<locals>.foo(  s*      %   r   rJ   11001101)r   rx  r   rU   r   r<   )rC   r+   r   r   s       r   test_encode_iterz PrefixCodeTests.test_encode_iter"  s   JJ(3--00	D&&'''HV,,---	 	 	 	
				CCEE	E!HHHZ00111(3--@@AAAAAr   c                 N   t          t                    }t                      }|                    |d           |                     |t          d                     |                     t          |j        |d           d}|                     t          ||j        |d dg           d S )Nisz	1011 1100ilAnz'symbol not defined in prefix code: NonerJ   )r8  r  r   rx  rU   r   r   rv   )rC   r   r+   rq   s       r   test_encode_symbol_not_in_codez.PrefixCodeTests.test_encode_symbol_not_in_code2  s    JJ	DH[11222*ah6:::7  S!(AayIIIIIr   c                    t          d          t          d          d}t                      }|                    |d           |                     t          |j        |d           |                     t          |j        |d           |                     t          |j        |d            |                     |t          d                     d S )Nr   r  rl  abbar  g?r  )r   rx  r   r   rU   rC   r   r+   s      r   test_encode_not_iterablez(PrefixCodeTests.test_encode_not_iterable;  s    3--hsmm44JJ	F)QXq"555)QXq#666)QXq$777HV,,-----r   c                    t                      }|                     t          |j        d d           |                     t          |j        i d           |                     t          |j        ddid           |                     t          |j        dt                      id           |                     t          |          d           d S )Nr   r+   rd   r   )r   r   r   rx  r   rU   rW   rB   s     r   test_check_codedict_encodez*PrefixCodeTests.test_check_codedict_encodeD  s    JJ)QXtR888*ahB777)QXSz3???*ahhjj0A3GGGQ#####r   c                    t          d          }|                     t          |j        d           |                     t          |j        i            |                     t          |j        ddi           |                     t          |j        dg i           |                     t          |j        dt                      i           |                     |t          d                     d S )N1100101r   r+   r  )r   r   r   r  r   rU   rB   s     r   test_check_codedict_decodez*PrefixCodeTests.test_check_codedict_decodeL  s    Y)QXq111*ah333)QXRy999)QXRy999*ahhjj0ABBBHY//00000r   c                 d    t                      }|                     t          |j        d           d S )N
iterdecoder'  rB   s     r   test_no_iterdecodez"PrefixCodeTests.test_no_iterdecodeU  r*  r   c                    t          d          t          d          t          d          t          d          d}t          |          }t          d          }t          d          }|                     t          |                    |                    |           |                     ||           |                     |t          d                     d S )Nr  r  r}  r  r  	101001000Ilan)r   r8  r6  rU   r  )rC   r   dcopyr+   r   s        r   test_decode_simplez"PrefixCodeTests.test_decode_simpleZ  s    3--5//9 9Q[!!6llahhqkk**C000E"""H[1122222r   c                     t          d          }|                    t                    }|                     |d           |                     t          |          dg           d S )Nr  decodeiteratorr+   )r   r  r  rl   rU   r6  )rC   r+   r  s      r   test_decode_typez PrefixCodeTests.test_decode_typed  s[    VXXm$$".///bC5)))))r   c                    t          d          t          d          t          d          t          d          d}t          |          }t          d          }|                    |          }~|                     d                    |          d           |                    |          }~|                     d                    |          d           d S )	Nr  r  r}  r  r  r!  r   r"  )r   r   r  rU   r  )rC   r   rG   r+   r  s        r   test_decode_removez"PrefixCodeTests.test_decode_removej  s    3--5//9 9qMM[!!XXa[[f---XXa[[f-----r   c                 @   dt          d          i}t                      }|                     t          |                    |                    g            |                     |dt          d          i           |                     t	          |          d           d S )Nr+   r  r   )r   rU   r6  r  rW   r  s      r   test_decode_emptyz!PrefixCodeTests.test_decode_emptyw  s    (3-- JJahhqkk**B///S(3--0111Q#####r   c                    t          d          t          d          d}t          d          }d}|                     t          |t          |                    |                     |                    |          }|                     |d           |                     t          |t          |           t          |          }|                     t          |t          |                    |                     |                     |t          d                     |                     |t          d          t          d          d           |                     |                                |           d S )Nr   r  rl  r_  z$incomplete prefix code at position 3r&  )	r   rv   r   r6  r  rl   r   rU   r  )rC   r   r+   rq   r  rG   s         r   test_decode_incompletez&PrefixCodeTests.test_decode_incomplete~  s,   3--huoo66W4  S$DDDXXa[[".///  S$;;;qMM  S$DDDHW--...(3--huooFFGGGQ'''''r   c                    t                      }|                    t          d           t          |          }|                    d           d|z  }|                     t          |t          |                    t                               d S )Nznow we riser  z%incomplete prefix code at position %d)	r   rx  r  rW   r  rv   r   r6  r  )rC   r+   r   rq   s       r   test_decode_incomplete_2z(PrefixCodeTests.test_decode_incomplete_2  s    JJ	...FF	59  S!%qxx'>'>	@ 	@ 	@ 	@ 	@r   c                 \   t          d          t          d          d}t          d          }|                    |          }|                     t          |          d           |                     t
          dt          |           |                     |t          d                     d S )Nr   r  rl  r2  r+   z$incomplete prefix code at position 1)r   r  rU   r  rv   r   rC   r   r+   r  s       r   test_decode_no_termz#PrefixCodeTests.test_decode_no_term  s    3--huoo66UOOXXa[[b3'''  !G!%r	+ 	+ 	+ 	HUOO,,,,,r   c                    t          t                    }t          d          }d}|                     t          |t
          |                    |                     t          |          }|                     t          |t
          |                    |                     |                     |           | 	                    |
                                |           d S )Nz!1011 1100 0100 011110111001101001z9prefix code unrecognized in bitarray at position 12 .. 21)r8  r  r   rv   r   r6  r  r   re   rU   r  )rC   r   r+   rq   rG   s        r   test_decode_buggybitarrayz)PrefixCodeTests.test_decode_buggybitarray  s    899I  S$DDDqMM  S$DDDqQ'''''r   c                 B   dt          d          i}t          d          }|                    |          }|                     t          t          |           |                     |t          d                     |                     |dt          d          i           d S )Nr+   r   r  )r   r  r   r   r  rU   r1  s       r   test_decode_buggybitarray2z*PrefixCodeTests.test_decode_buggybitarray2  s    (3-- SMMXXa[[*dB///HSMM***S(3--011111r   c                 L   t          d          t          d          d}t          d          }|                     t          t          |                    |                     t          |          }|                     t          t          |                    |                     |                     |t          d                     |                     |t          d          t          d          d           |                     |                                |           d S )Nr  r  rl  r  )r   r   r   r  r  r   rU   r  )rC   r   r+   rG   s       r   test_decode_buggybitarray3z*PrefixCodeTests.test_decode_buggybitarray3  s    4..x~~66SMM*dAHHQKK888qMM*dAHHQKK888HSMM***(4..x~~FFGGGQ'''''r   c                 &   t          j        d          }t          j        d          }t          t                    }|                                 D ]>}	 |                    |           # t          $ r}t          |          }|                    |          }|                    |          }| 	                    |o|           |r"t          |                    d                    }	|rzt          |                    d                    t          |                    d                    }
}	| 	                    ||	|
         t                                          v            |d |	                             |           Y d }~8d }~ww xY wd S )Nzincomplete prefix code.+\s(\d+)z0prefix code unrecognized.+\s(\d+)\s*\.\.\s*(\d+)r&   rJ   )recompiler   r  r?   r  r   ro   matchrb   r   r  values)rC   pat1pat2rG   r+   ru   rq   m1m2r   r  s              r   test_decode_randomz"PrefixCodeTests.test_decode_random  sm   z<==zMNN}%%%%'' 	  	 A  
  
  
 !ffZZ__ZZ__  +++ )BHHQKK((A Grxx{{++S!-=-=qA$$QqsV}/C/C/E/E%EFFF"1"Q
 	  	 s   A++F6DF		Fc                    t          d          t          d          t          d          dt          d          t          d          t          d          dt          d          t          d          dt          d          t          d          t          d          dfD ]F}t                      }|                     t          |j        |           |                     |           Gd S r  )r   r   r   r  re   r  s      r   test_decode_ambiguous_codez*PrefixCodeTests.test_decode_ambiguous_code  s    3--hsmm(3--HH4..x~~HSMMJJ3--htnn553--htnn8E??KK	
 	 	A 

Aj!(A666NN1	 	r   c                 f   t          d          t          d          t          d          t          d          t          d          d}t                      }|                    |g d           |                     |t          d                     |                     t          |                    |                    g d           |                    |          }|                     t          |          d u            |                     t          |          d           |                     t          |          d	           |                     t          |          d
           |                     t          |          d           |                     t          t          |           d S )Nr  r  r  r  r2  )Nr   r&   r   rJ   00110111010011r   r&   r   rJ   )	r   rx  rU   r6  r  rX   r  r   r  r1  s       r   test_miscitemszPrefixCodeTests.test_miscitems  si   TNNUOOUOOUOOUOO	% %
 JJ	'''(((H%566777ahhqkk**,?,?,?@@@XXa[[RD()))b1%%%b1%%%b2&&&b1%%%-r22222r   c                    t                      }d}|                    t          |           |                     |t          d                     |                     d                    |                    t                              |           t          t                    }|                     d                    |                    |                    |           |                     |           d S )Nz,the quick brown fox jumps over the lazy dog.a	  0100 00000 111 001 00001001101 000100 1011 000011 00011010 0010001100 1101 1000 011111 1001 001 010100 1000 0000100011 0010111101111 000100 000111 101001 1100 001 1000 0111100 111 1101001 0100 00000 111 001 01110 0110 00011011110 101010 00101011 1000 101000 0101010r   )r   rx  r  rU   r  r  r   re   )rC   r+   messagerG   s       r   test_quick_examplez"PrefixCodeTests.test_quick_example  s    JJ@	(((H(
) 
) 
	* 
	* 
	* 	-!8!8997CCC}%%!--w777qr   N)rj   rw   rx   r	  r  r  r  r  r  r  r  r$  r'  r)  r+  r-  r/  r2  r4  r6  r8  rB  rD  rG  rJ  r   r   r   r  r    sj       . . .- - -B B B J J J. . .$ $ $1 1 1L L L
3 3 3* * *. . .$ $ $( ( (@ @ @- - -
( 
( 
(2 2 2
( 
( 
(     &	 	 	3 3 3&    r   r  c                   (   e Zd Zd Z ee          d             Z ee          d             Zd Zd Z	 ee          d             Z
d Zd Zd	 Zd
 Z ee          d             Z ee          d             Z ee          d             ZdS )BufferImportTestsc                    d}t          |          }|                                }|                     |j        d           |                     |j                   |                     |j                   |                     t          |j	        d           |                     t          |j
                   |                     |t          d                     |                     |           d S )Nsd                                                                                                       r   r   r&      )r   rZ   rU   r\   rX   r_   r[   r   r   r'   r   r  re   rC   rd   r+   rc   s       r   
test_byteszBufferImportTests.test_bytes	  s    A}}Q'''&&&&&&)QXq111)QW---E#JJ'''qr   c           	      d   t          ddgz            }t          |d          }|                                }|                     |j        d           |                     |j                   |                     |j                   d|d<   |                     |d         d           d|d<   |                     |d         d           d|d d <   |                     |t          ddgz                       | 	                    t          |j                   t          d	d
          |dd<   |                     |t          ddgddgz  z                        |                     |                                |           dD ]?}| 	                    t          |j        t          dd          t          |                     @dx|d<   |d<   |                     |t          ddgz                       |                     |dt          d          z             |                     |           d S )Nr  r   r/   r   r&   r   r  r  10000010r0   rS   rQ   r[  r   b   )r   r   rJ   rN  r  )r   r   rZ   rU   r\   rb   r_   rX   r[   r   r  r  r   r   rM   re   )rC   rd   r+   rc   r)   s        r   test_bytearrayz BufferImportTests.test_bytearray  s   cQCi  Ah///}}Q''''''&&&!1q!!!!1s###!!!IcSEk22333+qu---:e444!B$IsBi"u*&<==>>>a((( 	+ 	+Ak1=%2,,&qkk+ + + +!qtIcSEk22333C(3--/000qr   c                 t   t          j         dg d          }t          d d|          }|                     |t          d                     d|d<   |                     |t          d                     d|d<   |                     |                                g d	           |                     |           d S )
Nrg  )r   r  r  r/   z00000000 11111111 00000010r  r&   z00000000 00000100 00000010r:   )rQ   r  r  )r   r   rU   rA   re   rg   s      r   
test_arrayzBufferImportTests.test_array3  s    K\\\**T8Q''H%ABBCCC!H%ABBCCC![[[111qr   c                    t          dd          }t          d|          }|                     ||u            |                                }|                     |j                   |                     |j        d           |                                }|                     |j                   |                     |j        d           |                     |j        |j                   |                     ||u            |                     ||           d|dd<   |                     ||           d|dd	<   |                     ||           |d
dxx         dz  cc<   |                     ||           d|ddd<   |                     ||           | 	                    t          d|j                   | 	                    t          d|j                   |                     |           |                     |           d S )Nr  r/   rs  r&   r   i  i  iG  i^  e   i  O   r  iH&  rL   rd  zcannot resize imported buffer)r3   r   rb   rZ   r[   rU   r  rX   r]   rv   r  r  re   )rC   r+   rd   a_infob_infos        r   r  zBufferImportTests.test_bitarray>  s   eX&&HQ///a   )))+++(((+++888a   A#c'
A#c'
A	#d(A#d1*A  KE	 	 	 	  8E	 	 	 	qqr   c                    t          d          }|                     |j                   |                                d|z  d|z  |t          d          z  |dz	  | |t          d          z   |d d          |d d d         |dd	g         |t          d                   fD ]1}|                     |j                   |                     |           2d S )
Ns   XAr   r:   rL   r[  rJ   r  r   r&   )r   rX   r_   r  rb   re   rg   s      r   r.  zBufferImportTests.test_copya  s    E"""
###&&((AE1q5!hrll*:q&1"a(5//1AAA$##A#1a&	1Xb\\?< 	 	A QZ(((NN1		 	r   c                 N   t          dd          }t          t          |          dd                   }|                     |                                j        |                                j        dz              t          t          |          dd                   }|                     |                                j        |                                j        dz              |                     |dd         |           |                     |d	d
         |           |                    d           |                    d           |                    d           t          d          }|                    d           d|dd	<   |                     ||           d S )Ni    r0   r  i   r   i   i   i   i   i @  r   r&   )r3   r   r  rU   rZ   r]   r'   r  s        r   test_bitarray_shared_sectionsz/BufferImportTests.test_bitarray_shared_sectionsj  ss   fe$$JqMM%+67770058	: 	: 	:JqMM%+67770058	: 	: 	:9y0115559y011555			V	#$)i
 Ar   c                    t          d          D ]}t          |          }t          ||j                  }|                     |j        d           |                     t          |          dz  d           |                     |d |         |           |                     |           |                     |           d S )Nr  r   r   rQ   )	r<   r3   r   r*   rU   rY   rW   rh   re   r&  s       r   r  z%BufferImportTests.test_bitarray_range~  s    s 	 	A!A!(333AQY***SVVaZ+++QrrUA&&&NN1NN1	 	r   c           	         t          dd          g}t          dd          D ]/}|                    t          d||dz
                                0|                     |d         |d                    |d                             d           |D ]a}|                     t          |          d           |                     |                                           | 	                    |           bd S )Nr  r0   r&   r  rs  r  r   )
r3   r<   r^  r   rU   r'   rW   rX   rd  re   )rC   r   r)   r+   s       r   test_bitarray_chainz%BufferImportTests.test_bitarray_chain  s    r5!!"q# 	> 	>AHHXU1QU8<<<====2!%%%	!A 	 	ASVVR(((OOAEEGG$$$NN1	 	r   c                 D   t          d          }|                     |j                   |                     |           t	          |          }|                     |j                   |                     t          |j        dd           |                     |           d S )Nz10011011 011r   r&   r   )r   rX   r_   re   r   r   r   r   rg   s      r   r4  z%BufferImportTests.test_frozenbitarray  s    >**
###qA
###)Q]Aq999qr   c           	          ddg ddddit          g d          fD ]$}|                     t          t          |           %d S )Nr  gGz?)r&   rJ   r:   r&   rJ   r   )r7  r   r   r   r   s     r   test_invalid_bufferz%BufferImportTests.test_invalid_buffer  s[    yyy)aV			NN% 	? 	?Ci#>>>>	? 	?r   c                 6   t          ddgz            }t          |          }~|                     |t          d                     |                    d           |                     |                                           |                     |           d S )Nr  r   r   rN  r&   )r   r   rU   r  r'   rX   rd  re   r`  s      r   test_del_import_objectz(BufferImportTests.test_del_import_object  s    cQCi  AE#JJ'''	   qr   c           	      T   t          d          }|                                }|                     |j                   |                     |j                   |                     t          |j        d           |                     t          |j                   |                     t          |j	                   |                     t          |j
        dt          d          id           |                     t          |j        g d           |                     t          |j                   |                     t          |j        d           |                     t          |j        d	d
           |                     t          |j                   |                     t          |j        d           |                     t          |j                   |                     t          |j        d
           |                     t          |j                   |                     t          |j        d	           |                     t          |j                   |                     t          |j        d	           |                     t          |j        t/          d d d                     |                     t          |j        d	d	           |                     t          |j        t          d                     |                     t          |j        t          d                     |                     t          |j        t          d                     |                     t          |j        d
           |                     t          |j        d
           |                     |           d S )Nr   r   Tr+   r   rh  r   r&   r   r   r   r&        rJ   rQ   )r   rZ   rX   r_   r[   r   r   r^  r.  r   rx  r  r.  rI  r$  r  rY  r  r  r  r'   rL  r~  rM   r   rE  ru  rv  r  r  re   rC   r+   rc   s      r   test_readonly_errorsz&BufferImportTests.test_readonly_errors  s   D!!!}}&&&&&&)QXt444)Q]333)QW---)QXXc]]/CTJJJ)QXyyy999)QV,,,)Q[#666)QXq!444)QX...)QV[999)QU+++)QXq111)QY///)QXq111)QV,,,)Q]A666)Q]E$a4H4HIII)Q]Aq999)QZ!===)QY<<<)QZ!===)Q]A666)Q]A666qr   c                    t          t          dg                    }|                                }|                     |j                   |                     |j                   |                     t          |j	        d           |                     t          |j
                   |                     t          |j        dt          d          id           |                     t          |j        g d           |                     t          |j        d           |                     t          |j        d	d
           |                     t          |j        d           |                     t          |j                   |                     t          |j        d
           |                     t          |j        d	           |                     |           d S )Nr  r   Tr+   r   rh  rh  r{  r   r&   ri  )r   r   rZ   rb   r_   rX   r[   r   r  r^  r   rx  r  rI  r$  rY  r  r  r~  re   rj  s      r   test_resize_errorsz$BufferImportTests.test_resize_errors  s~   Ise,,---}}'''&&&+qx666+qw///+qx#x}}1EtLLL+qx;;;+q{D999+qxA666+qv{;;;+qu---+qx333+q}a888qr   N)rj   rw   rx   rP  r"   r   rT  rV  r  r.  r^  r  ra  r4  rd  rf  rk  rm  r   r   r   rL  rL    sP          VG__  _6 VG__  _! ! !F   VG__  _&	 	 	
 
 
  ? ? ? VG__  _ VG__  _> VG__  _  r   rL  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
BufferExportTestsc                    t          dd          }t          |          }|                     |j                   |                     |                                j        d           |                     t          |          d           |                     |d         d           |                     |                                d           d|d	<   |                     |                                d
           t          |          }|                     |j                   |                     |                                j        d           | 	                    |           d S )Nz01000001 01000010 01000011r0   rS   r&   r:   r   r   r   r  s   AFCrJ   )
r   r  rb   r_   rU   rZ   r  rW   r   re   )rC   r+   re  r  s       r   test_read_simplez"BufferExportTests.test_read_simple  s,   1%@@@qMM$$$0!444Q###1r"""f---"f---qMM$$$0!444qr   c                 J   t          d          }i }t          dd          D ]k}t          |          ||<   |                     |                                j        |           |                     t          ||                   d           l|                     |           d S )Nz01000111 01011111r&   rQ  r   r[  )r   r<   rU   rZ   r  rW   re   )rC   r+   r   r)   s       r   test_many_exportsz#BufferExportTests.test_many_exports  s    ())q" 	, 	,A1%%%AaDQ]]__4a888S1YY++++qr   c                    t          d          D ]}t          |          }t          |          }|                     t	          |          |j                   |                                }|                     |j                   |                     |j	                   |                     |j
        d           |                     |           d S rY  )r<   r   r  rU   rW   rV   rZ   rb   r_   r[   r  re   )rC   r)   r+   re  rc   s        r   r	  zBufferExportTests.test_range  s    s 	 	AA1ASVVQX...==??DT]+++T]+++T\1---NN1	 	r   c                    t          t          j        d                    }t          |          }|                     t          |          d           |dd         }|                     |dd                                         |                                           |                     |                                |                                           |                     |           d S )Nr  i  i  "   ru  )r   r1   r2   r  rU   rW   r   re   )rC   r+   re  rd   s       r   test_read_randomz"BufferExportTests.test_read_random
  s    RZ__%%qMMQ%%%fvo2b5))++QYY[[999aiikk222qr   c                    t          dd          }t          |          }|                     |j                   |                     t
          |j        d           |                     t
          |j                   |                     t
          |j        dt          d          id           |                     t
          |j	        d           |                     t
          |j
        d           |                     t
          |j        d	d           |                     t
          |j        d           |                     t
          |j                   |                     t
          |j        d           |                     t
          |j        t!          d	d
                     |                                 |                     |                                |                                           |                     |           d S )Nr2  r0   rS   r&   r+   r   rh  rU  r   rQ   )r   r  rb   r_   r   r  r^  r   rx  r  rI  r$  rY  r  r  r~  rM   r.  rU   r   re   r  s      r   r  zBufferExportTests.test_resize  s   U5)))qMM$$$+qx333+qw///+qx#x}}1EtLLL+qx555+q{E:::+qxA666+qvu555+qu---+qx333+q}eAqkkBBB	aiikk222qr   c                 Z   t          d          }t          |          }|                     |j                   |                     t          |          d           |                     |                                |                                           |                     |           d S )NrA  rL   )r   r  rX   r_   rU   rW   r   re   r  s      r   r4  z%BufferExportTests.test_frozenbitarray%  s    2qMM
###Q###aiikk222qr   c                    t          d          }t          |          }|                     |j                   d|d<   |                     |dd         t          d                     d|d<   |                     |dd         t          d	                     d
|dd<   |                     |dd                                         d           |                     |           d S )Nr0  r  r  i  i  
0111111110r   i  
0111011110r   i-  i0  i`	  i	      ABC )r  r  rb   r_   rU   r   r   re   r  s      r   
test_writezBufferExportTests.test_write-  s    $KKqMM$$$#49x'='=>>>$49x'='=>>>#c'
7W,-5577HHHqr   c                 L   t          d          }t          |          }|dd         }d|d<   d|d<   d|d<   |                     |                                d	           d
|dd<   |                     |                                d           |                     |           d S )NrA  r&   r  r   r   B   ru  rJ   r}  s   XYZs    XYZ )r  r  rU   r   re   )rC   r+   r   re  s       r   test_write_memoryview_slicez-BufferExportTests.test_write_memoryview_slice9  s    "IIqMMacF!!!n555!A#n555qr   N)rj   rw   rx   rq  rs  r	  rw  r  r4  r~  r  r   r   r   ro  ro    s             	 	 	    $  
 
 

 
 
 
 
r   ro  c                       e 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 ee          d             Zd Zd Zd Zd Zd Zd Zd Zd ZdS )FrozenbitarrayTestsc                    t          d          }|                     |t          d                     |                     |                                d           |                     |t                     |                     t          |          t                      |                     |j                   |                     |           t          t                                }| 	                    |t                                 |                     t          |          t                      dD ]}t          d|          }|                     |j
        |           |                     t          |          t                      t          t          d|                    }|                     |j
        |           |                     t          |          t                      d S )Nr  r   r   )r   rU   r   r   rT   r^   rX   r_   re   rh   r*   r3  s      r   	test_initzFrozenbitarrayTests.test_initI  s   5!!HUOO,,,5)))a***a.111
###q8::&&N,,---a.111% 	6 	6Fq&))AQXv...T!WWn555x62233AQXv...T!WWn5555	6 	6r   c                    t          d          }|                     |d         d           |                     |d d                                         d           |                     |                                d           |                     |                    d          d           |                                }|                     ||           |                     t          |          t                      |                     t          |          d           |                     |	                                           | 
                    |                                           |                     |           d S )Nr  rJ   r   r  r  r   )r   rU   r   ra   r  r  r^   rW   rb   rd  rX   r   re   rg   s      r   test_methodsz FrozenbitarrayTests.test_methods_  s6   9%%1q!!!2A2v...A&&&Q'''FFHHAa.111Q###!!!   qr   c                    |                                  D ]}t          |          }|                     ||u            |                     ||           t          |          }|                     ||u            |                     ||           |                     t          |          t          |                     |                     |           d S r   )r?   r   rb   rh   rU   r  re   r/  s       r   test_init_from_bitarrayz+FrozenbitarrayTests.test_init_from_bitarrayn  s    %%'' 	 	Aq!!AQ!V$$$Q"""q!!AQ!V$$$Q"""T!WWd1gg...NN1	 	r   c                    d}t          |          |t          |          t          |          fD ]\}t          |          }|                     t          |          t                     |                     |t          |                     ]t          dd          }|                     |                                d           |                     |j        d           d S )N)r   r&   r   r&   r&   FT   ABr0   0100000101000010)r6  r   r   r   rU   r^   r   r*   )rC   tupobjr+   s       r   test_init_from_miscz'FrozenbitarrayTests.test_init_from_miscy  s    (99c499hsmm; 	/ 	/Cs##AT!WWn555Q....5%((#56665)))))r   c                    dt          d          fD ]}t          |d          }|                     t          |          t                     |                     t	          |          dt	          |          z             |                     |                                |           |                     |d d                                         d           |                     |           d S )Ns   ABCDr/   rQ   r  )r   r   rU   r^   rW   r   r   re   r9  s      r   test_init_bytes_bytearrayz-FrozenbitarrayTests.test_init_bytes_bytearray  s    i444 	 	Aq(++AT!WWn555SVVQQZ000QYY[[!,,,QrrUZZ\\:666NN1	 	r   c                 X   t                      }|                     t          |          d           |                     t          |          d           t          d          }|                     t          |          d           |                     t          |          d           d S )Nzfrozenbitarray()r  zfrozenbitarray('10111'))r   rU   rk   ro   rB   s     r   r+  zFrozenbitarrayTests.test_repr  s    a"4555Q!34447##a";<<<Q!:;;;;;r   c           	         t          d          }|                     t          |j        d           |                     t          |j                   |                     t          |j                   |                     t          |j        dt          d          id           |                     t          |j        g d           |                     t          |j	                   |                     t          |j
        d           |                     t          |j        dd	           |                     t          |j                   |                     t          |j        d
           |                     t          |j                   |                     t          |j        d	           |                     t          |j                   |                     t          |j        d           |                     t          |j                   |                     t          |j        d           |                     t          |j        t)          d d d                     |                     t          |j        dd           |                     t          |j        t          d                     |                     t          |j        t          d                     |                     t          |j        t          d                     |                     t          |j        d	           |                     t          |j        d	           |                     |           d S )Nr  Tr+   r   rh  rh  r   r   r&   ri  rJ   r  r|  r  )r   r   r   r^  r.  r   rx  r   r  r.  rI  r$  r  rY  r  r  r  r'   rL  r~  rM   r   rE  ru  rv  r  r  re   rB   s     r   test_immutablez"FrozenbitarrayTests.test_immutable  s   5!!)QXt444)Q]333)QW---)QXXc]]/CTJJJ)QXyyy999)QV,,,)Q[#666)QXq!444)QX...)QV[999)QU+++)QXq111)QY///)QXq111)QV,,,)Q]A666)Q]E$a4H4HIII)Q]Aq999)QZ%AAA)QY@@@)QZ%AAA)Q]A666)Q]A666qr   c                    t          d          }||                                d|z  d|z  |t          d          z  |dz	  | |t          d          z   |d d          |d d d         |ddg         |t          d	                   fD ]Y}|                     t	          |          t                      |                     |j                   |                     |           Zd S )
NrN  r:   rL   r  rJ   r  r   r&   r2  )r   r  r   rU   r^   rX   r_   re   rg   s      r   r.  zFrozenbitarrayTests.test_copy  s    5!!QVVXXq1ua!eQ%-@q&1"a(5//1AAA$##A#1a&	1Xe__+=? 	 	A T!WWn555OOAJ'''NN1	 	r   c                     t          d          }|                     |j                   |                                 |                     |j                   d S )NN   )r   rb   r_   _freezerX   rB   s     r   test_freezezFrozenbitarrayTests.test_freeze  sJ    RLL$$$			
#####r   c                     t          dd          }t          |          }|                     |                                d           |                     t
          |j        dd           d S )Nz01000001 01000010r0   r  r   |   )r   r  rU   r   r   r   r   r  s      r   test_memoryviewz#FrozenbitarrayTests.test_memoryview  s]    .66qMMe,,,)Q]At<<<<<r   c                 "   t          g d          }t          |d          }|                     |t          dd                     |                                }|                     |j                   |                     |j                   d S )N)r   _   r  r0   r   z00001111 01011111 10000000)r`   r   rh   r   rZ   rX   r_   r[   rO  s       r   test_buffer_import_readonlyz/FrozenbitarrayTests.test_buffer_import_readonly  s    ---  !E222H%A5IIJJJ}}&&&&&&&&r   c                 n    t          ddg          }|                     t          dt          |           d S )Nr   r  z1cannot import writable buffer into frozenbitarrayr   )r   rv   r   r   )rC   r  s     r   test_buffer_import_writablez/FrozenbitarrayTests.test_buffer_import_writable  sE    r2h  ?1 	! 	& 	& 	& 	& 	&r   c                 `   t          d          }t          d          }t          d          }t          d          }t          ||||g          }|                     t          |          d           |                     ||v            |                     t          d          |v            d S )Nr  r|  r  r2  r  r   )r   r7  rU   rW   rX   rb   )rC   r+   rd   r  r   r  s         r   test_as_setzFrozenbitarrayTests.test_as_set  s    34  4  5!!Aq!Q###Q,,122222r   c                     t          d          }t          d          }|d|di}|                     |t          d                   d           |                     |t          |                   d           d S )Nr  r3  r  iY  r   rU   rC   r+   rd   r   s       r   test_as_dictkeyz#FrozenbitarrayTests.test_as_dictkey  sv    4  6""Q>$//0#666>!,,-s33333r   c                     t          d          }t          d          }|d|di}t          d          }|                     ||           |                     ||         d           d S )Nrl  r  ro  twor  )rC   a1a2dcta3s        r   test_as_dictkey2z$FrozenbitarrayTests.test_as_dictkey2  sm    D!!D!!5"e$D!!R   R%(((((r   c                     t          d          }t          d          }|                     ||z   t          d                     |                    |           |                     |t          d                     d S )Nr  rU  1100011)r   r   rU   r  rg   s      r   test_mixzFrozenbitarrayTests.test_mix  so    UOO6""Q 3 3444	HY//00000r   c                 v   t          dd          }t          dd          }|                     ||           |                     t          |          t          |                     |di}|                     ||         d           |                     t          t	          ||g                    d           d S )Nr  r0   r/   valuer&   )r   rU   r  rW   r7  r  s       r   test_hash_endianness_simplez/FrozenbitarrayTests.test_hash_endianness_simple  s    3&&3))Aa$q''***L1w'''S!Q[[))1-----r   c                    |                                  D ]}t          |          }t          ||                     |j                            }|                     ||           |                     |j        |j                   |                     t          |          t          |                     |d|di}|                     t          |          d           d S )Nr&   rJ   )r?   r   rH   r*   rU   r   r  rW   r  s       r   test_hash_endianness_randomz/FrozenbitarrayTests.test_hash_endianness_random  s    %%'' 	( 	(Aq!!Aq$"6"6qx"@"@AAAQ"""!(333T!WWd1gg...Aq!ASVVQ''''	( 	(r   c                 n   |                                  D ]}t          |          }d|_        t          j        t          j        |                    }|                     ||           |                     |j        |j                   |                     t          |          
                    d                     |                     |j                   |                     |           |                     |           |                     |           |                     |j        d            d S )Nr  r   )r?   r   r   r  r  r  rU   r*   rX   ro   
startswithr_   re   )rC   r+   r   r  s       r   r  zFrozenbitarrayTests.test_pickle	  s   %%'' 	( 	(Aq!!AAEV\!__--AQ"""QXqx000OOCFF--.>??@@@OOAJ'''NN1NN1NN1QUB''''	( 	(r   c                 P   |                                  D ]}t          |          }|                     t          |          |                                           |                     t          |          |                                           |                     |           d S r   )r?   r   rU   r`   r   r   re   rB   s     r   r  z(FrozenbitarrayTests.test_bytes_bytearray  s    %%'' 	 	Aq!!AU1XXqyy{{333Yq\\199;;777NN1		 	r   N)rj   rw   rx   r  r  r  r  r  r+  r  r.  r  r  r  r"   r   r  r  r  r  r  r  r  r  r  r   r   r   r  r  G  sT       6 6 6,  	 	 	* * *  < < <  6  $ $ $= = =' ' ' VG__& & _&3 3 34 4 4) ) )1 1 1. . .( ( (( ( (    r   r  r&   c                    dd l }t          dt          j                            t
                    z             t          dt          z             t          dt          j        z             t          dt          j	        z             t          j
        d d         dk    r#t          dt          j                    z             t          d	d
t          z  z             t          dt          d          z             t          dt          d          z             t          dt          d          z             t          dt                      z             t          dt          j        z             t          dt          d          z             t          dt          d          z             t          dt          d          z             t!          j                    }t!          j                    }|                    |                    t          j        t,                                        |                    |                    |j                             t!          j        |           }|                    |          }|S )Nr   zbitarray is installed in: %szbitarray version: %szsys.version: %szsys.prefix: %srJ   r   zsys._is_gil_enabled(): %szpointer size: %d bitrQ   zsizeof(size_t): %dr   zsizeof(bitarrayobject): %dr   zHAVE_BUILTIN_BSWAP64: %dr   zdefault bit-endianness: %szmachine byte-order: %szPy_GIL_DISABLED: %sr   zPy_DEBUG: %sr   z	DEBUG: %sr   )	verbosity)bitarray.test_utilprintr1   r  r  r  r   r   r   prefixr   r   r   r   r   r   unittest
TestLoader	TestSuiteaddTestsloadTestsFromModulemodulesrj   	test_utilTextTestRunnerrun)r  r   loadersuiterunnerresults         r   r  r     s%   	
(27??8+D+D
DEEE	
 ;
.///	
ck
)***	
SZ
'(((
w&&)C,?,A,AABBB	
 AK
0111	
!2!2
2333	
&1A)B)B
BCCC	
$w/E'F'F
FGGG	
&);)=)=
=>>>	
"S]
2333	
'*;"<"<
<===	.7:..
.///	+((
())) ""F  E	NN6--ck(.CDDEEE	NN6--h.@AABBB$y999FZZFMr   __main__r   )r-   r   )h__doc__r:  r1   r   r  r  ry  rs  ior   r   randomr   r   r   r   r	   r
   stringr   r   r  r  r  r  r  rB  r   machiner  python_implementationr   r   r   r   r   r   r   r   r   r   r   r"   r   r  r,   r3   objectr5   TestCaser{   r   rG  rW  rj  ry  r  r  r  r   r/  rL  r]  rb  rq  r  r  r  r
  r(  r6  rb  r  r	  r  r  r!  r+  r4  rH  rS  r  r  r  r  r  r  r  r  r  r	  r$  rG  rj  rp  r  r  r  rL  ro  r  r  rj   mainr   r   r   <module>r     s  
 
 
			 				 



     , , , , , , , , L L L L L L L L L L L L L L L L                 $x!!X-
.
.
$-x-//69
:
:/ / / / / / / / / / / / / / / / / / / / / /
   ''

 	   
   OI OI OI OI OI6 OI OI OIfG8 G8 G8 G8 G88, G8 G8 G8VJ2 J2 J2 J2 J2)4 J2 J2 J2\ 6  6  6  6  6X&  6  6  6H .  .  .  .  .8$d  .  .  .D,; ,; ,; ,; ,;8$d ,; ,; ,;\: : : : :8$d : : :<)1 )1 )1 )1 )1H%t )1 )1 )1VE; E; E; E; E;H%t E; E; E;NNC NC NC NC NCH%t NC NC NCd, , , , ,(+T , , ,@_A _A _A _A _A(+T _A _A _AB>D >D >D >D >D(+T >D >D >DDJ J J J Jx0$ J J J%) %) %) %) %)H-t %) %) %)N_A _A _A _A _AH-t _A _A _AB=@ =@ =@ =@ =@H-t =@ =@ =@Ba: a: a: a: a:!4 a: a: a:J_ _ _ _ _(#T _ _ _F[) [) [) [) [)x($ [) [) [)~(1 (1 (1 (1 (1*D (1 (1 (1XY$ Y$ Y$ Y$ Y$H%t Y$ Y$ Y$zgA gA gA gA gA(#T gA gA gAV	C C C C C(#T C C CN! ! ! ! !(#T ! ! !@    (#T   :-- -- -- -- --h' -- -- --^    (#T   >    !4   BKE KE KE KE KE(#T KE KE KEZ)5 )5 )5 )5 )5!4 )5 )5 )5Z[: [: [: [: [:!4 [: [: [:z5 5 5 5 5x $ 5 5 5n!? !? !? !? !?8$d !? !? !?F% % % % %(#T % % %N#A #A #A #A #A(#T #A #A #AJ6N 6N 6N 6N 6N!4 6N 6N 6NpU? U? U? U? U?x($ U? U? U?n> > > > >(#T > > >(    "D   $; ; ; ; ;"D ; ; ;Fh< h< h< h< h<"D h< h< h<Xd$ d$ d$ d$ d$(#T d$ d$ d$Pe- e- e- e- e-"D e- e- e-R1 1 1 1 1h' 1 1 1<m? m? m? m? m?!4 m? m? m?b	%"%xx	':':&		"%xx	':': (		 #&xx'8'8 %	 #&xx'9'9	
 (		
 #&xx'8'8 &		 #&xx'='= *		 #&xx'8'8 (		 #&xx'7'7 &		 (0x'9'9	-	 	 xx'7'7	&		xx'7'7	(		xx	':':	(		xx'='=	(		xx'>'>  "Q2 Q2 Q2 Q2 Q2h' Q2 Q2 Q2jq q q q qh' q q qjY Y Y Y Y)4 Y Y Yz_ _ _ _ _)4 _ _ _FU U U U U(+T U U Ur   6 zHMOOOOO r   