
    #i                    (   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j8                         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jb                        Z2 G d dejb                  e0      Z3 G d dejb                  e0      Z4 G d dejb                  e0      Z5 G d dejb                  e0      Z6 G d dejb                  e0      Z7 G d dejb                  e0      Z8 G d dejb                  e0      Z9 G d d ejb                  e0      Z: G d! d"ejb                  e0      Z; G d# d$ejb                  e0      Z< G d% d&ejb                  e0      Z= G d' d(ejb                  e0      Z> G d) d*ejb                  e0      Z? G d+ d,ejb                  e0      Z@ G d- d.ejb                  e0      ZA G d/ d0ejb                  e0      ZB G d1 d2ejb                  e0      ZC G d3 d4ejb                  e0      ZD G d5 d6ejb                  e0      ZE G d7 d8ejb                  e0      ZF G d9 d:ejb                  e0      ZG G d; d<ejb                  e0      ZH G d= d>ejb                  e0      ZI G d? d@ejb                  e0      ZJ G dA dBejb                        ZK G dC dDejb                  e0      ZL G dE dFejb                  e0      ZM G dG dHejb                  e0      ZN G dI dJejb                  e0      ZO G dK dLejb                  e0      ZP G dM dNejb                  e0      ZQ G dO dPejb                  e0      ZR G dQ dRejb                  e0      ZS G dS dTejb                  e0      ZT G dU dVejb                  e0      ZU G dW dXejb                  e0      ZV G dY dZejb                  e0      ZW G d[ d\ejb                  e0      ZX G d] d^ejb                  e0      ZY G d_ d`ejb                  e0      ZZ G da dbejb                  e0      Z[ G dc ddejb                  e0      Z\ G de dfejb                  e0      Z] G dg dhejb                  e0      Z^i di e dj      dk e dl      dm e dn      do e dp      dq e dr      ds e dt      du e dv      dw e dx      dy e dz      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jb                  e0      Z` G d dejb                  e0      Za G d dejb                  e0      Zb G d dejb                  e0      Zc G d dejb                  e0      ZdddZeefdk(  r ej                          yy)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                      y N fs    G/var/www/br/venv/lib/python3.12/site-packages/bitarray/test_bitarray.py<lambda>zskipIf.<locals>.<lambda>+           c                     | S r   r   r   s    r   r   zskipIf.<locals>.<lambda>,   s    Q r    r   )	conditions    r   skipIfr#   (   s    r    void*c                 @    t        | |      }|j                  d       |S N   )r   setallnendianas      r   onesr-   3   s    FAHHQKHr    c                     |dk(  rt        ddg      }t        t        j                  t	        |             |      }|| d = |S )N<RAND>littlebig)r   r   osurandomr   r)   s      r   	urandom_2r4   8   s@    5)*JqM*F3A	!"Hr    c                   x    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y)Utilc                      t        ddg      S )Nr0   r1   )r   r   r    r   random_endianzUtil.random_endianB   s    x'((r    c              #      K   t        | d      D ]  }t        |        t        d      D ]  }t        t        | d              y w)N
        )ranger4   r   )startr*   _s      r   randombitarrayszUtil.randombitarraysF   sK     ub! 	AA,	q 	4AIeT233	4s   AA	c              #   Z   K   | j                         D ]  }|j                           y wr   )r@   tolistselfr,   s     r   randomlistszUtil.randomlistsM   s*     %%' 	A((*	s   )+c                     ddd}||    S )Nr1   r0   r0   r1   r   )r+   ts     r   opposite_endianzUtil.opposite_endianQ   s    yr    Nc                     t        t        |  dz
  | dz         t        |  dz
  | dz         |xs t        dd      xs d      S )N      r'   )slicer	   )r*   steps     r   random_slicezUtil.random_sliceW   sI    WaR!VQU+aR!VQU+0WR^0q2 	2r    c                    | j                  |t               | j                  |j                  t	        t        |                   | j                  d|j                  cxk  xr dk  nc        | j                  t        |      |j                  z   d|j                  z         |j                         }|j                  ra| j                  |j                  d       | j                  t        |      d|j                  z         | j                  |j                  d       n(| j                  |j                  |j                  k\         |j                  dk(  r8| j                  |j                  d       | j                  |j                  d       t        |      t        k(  r| j                  |j                  d       |j                  rwt        t        |      dd  |j                         |j                   d  }| j                  t        |      |j                         | j                  |j#                         d       y y |j                  s| j%                  |j                         y y )Nr      r'   r+   )assertIsInstancer   assertEqualnbytesr   len
assertTruepadbitsbuffer_infoimportedallocaddresstyper   readonlybytesr+   countassertFalse)rD   r,   infobs       r   	check_objzUtil.check_obj]   s   a*:c!f#56QYY**+Q!))+Q\:}}==TZZ+SVQ\2QYY* OODJJ!((23<<1 QXXq)TZZ+7n$QZZ+yyU1Xbc]188<aiiZ[I  Q3  A.  QZZ( r    c                 t    | j                  ||       | j                  |j                  |j                         y r   )rV   r+   rD   r,   re   s      r   assertEQUALzUtil.assertEQUAL   s*    A188,r    c                     | j                  t        |      j                  |       | j                  t        t        |            d|z         y )Nz<class 'bitarray.%s'>)rV   r_   __name__reprrh   s      r   assertIsTypezUtil.assertIsType   s:    a))1-d1g(?!(CDr    c                     	  ||i | t        d| j                  z        # | $ r)}|t        |      k7  rt        d|d|      Y d }~y d }~ww xY w)Nz%s not raisedz	message: z
 got: )AssertionErrorrk   str)excClassmsgcallableargskwargses         r   assertRaisesMessagezUtil.assertRaisesMessage   s]    	Id%f% 83D3D!DEE 	Ic!f}$Q%GHH 	Is    " AAA)r   r   )rk   
__module____qualname__staticmethodr8   r@   rE   rI   rP   rf   ri   rm   rw   r   r    r   r6   r6   @   s|    ) ) 4 4  
 2 2
!)F-E I Ir    r6   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y)ModuleFunctionsTestsc                 J    | j                  t        t              t               y r   )rV   r_   r   rp   rD   s    r   test_version_stringz(ModuleFunctionsTests.test_version_string   s    k*C0r    c                 f    dD ],  }t        |      }| j                  t        |      t               . y )N)r$   size_tbitarrayobjectdecodetreeobjectbinodeHAVE_BUILTIN_BSWAP64PY_LITTLE_ENDIANPY_BIG_ENDIANPy_GIL_DISABLEDPy_DEBUGDEBUG)sysinforV   r_   int)rD   keyress      r   test_sysinfoz!ModuleFunctionsTests.test_sysinfo   s2    < 	-C #,CT#Y,	-r    NrK   r;      c                     | j                  t        d      dt        j                  v        t        d      r$| j	                  t        j
                                y y )Nr   zfree-threading)rV   r   sysversionrc   _is_gil_enabledr~   s    r   test_gil_disabledz&ModuleFunctionsTests.test_gil_disabled   sK    !23)S[[8	: $%S0023 &r    c                     | j                  t        t               | j                  t        t        d       | j                  t        t        d       y )Ns   void*foo)assertRaises	TypeErrorr   KeyErrorr~   s    r   test_sysinfo_errorsz(ModuleFunctionsTests.test_sysinfo_errors   s6    )W-)Wh7(GU3r    c                 6   | j                  t        d      t               | j                  t        d      t               | j                  t        j                  ddt        z  dz
  z  dz
         t
        s%| j                  t        t        j                         y y )Nr$   r   rK   rR   r'   )rV   r   PTRSIZEr   maxsizeis_pypytuple__itemsize__r~   s    r   test_sysinfo_pointer_sizez.ModuleFunctionsTests.test_sysinfo_pointer_size   sp    )73*G4aAK!O&<q&@AWe&8&89 r    c                     | j                  t        j                  dk(  t        d             | j                  t        j                  dk(  t        d             y )Nr0   r   r1   r   )rV   r   	byteorderr   r~   s    r   test_sysinfo_byteorderz+ModuleFunctionsTests.test_sysinfo_byteorder   sE    (2 !34	6%/ 1	3r    c                     t               }| j                  |dv        | j                  t        |      t               t               }| j                  |j                  |       y )NrG   )r   rY   rV   r_   rp   r   r+   rD   r+   r,   s      r   test_get_default_endianz,ModuleFunctionsTests.test_get_default_endian   sK    #%"334fs+J6*r    c                 :    | j                  t        t        d       y )Nr1   )r   r   r   r~   s    r   test_get_default_endian_errorsz3ModuleFunctionsTests.test_get_default_endian_errors   s    )%7?r    c                 d   dD ]   \  }}| j                  t        |      |       " t        dd      D ]|  }t        |      }| j                  ||dz
  dz  dz          | j                  t        |      t               d|z  t        d      z   }| j                  t        |      |dz
  dz  dz          ~ y )N))r   r   )r'   r'   )   r'   )rR   r'   )	   rK   r'      rR   r<   )rV   r   r=   r_   r   r   )rD   r*   r   mks        r   test_bits2bytesz$ModuleFunctionsTests.test_bits2bytes   s    < 	1FAsZ]C0	1 q# 	>A1AQQ1q 01T!Wc*a9T?*AZ]QUqL1,<=	>r    c                 ,   dg d i ddfD ]  }| j                  t        t        |        | j                  t        t               | j                  t        t        dd       | j                  t        t        d       | j                  t        t        d       y )Nr   g     `g@g      r'   rK   rS   d)r   r   r   
ValueErrorrD   args     r   test_bits2bytes_errorsz+ModuleFunctionsTests.test_bits2bytes_errors   sz    "dBt3 	:CiS9	: 	)Z0)ZA6*j"5*j$7r    )rk   rx   ry   r   r   r#   r   version_infor   r   r   r   r   r   r   r   r   r    r   r|   r|      s[    1- CRa 7*+4 ,44
:3+@
>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y)CreateObjectTestsc                     t               }| j                  t        |      d       | j                  |j                         g        | j                  t	        |      t                | j                  |       y Nr   )r   rV   rX   rB   r_   rf   rC   s     r   test_noInitializerz$CreateObjectTests.test_noInitializer   sS    JQ#R(a(+qr    c                    t        dd      }| j                  |j                  d       | j                  t        |j                        t               | j                  |       t        dd      }| j                  |j                  d       | j                  t        |j                        t               | j                  |       | j                  ||       | j                  |j                         |j                                y )N   ABCr0   rT   r1   )r   rV   r+   r_   rp   rf   assertNotEqualtobytesrh   s      r   test_endianzCreateObjectTests.test_endian   s    VH-8,ahh-qVE*5)ahh-qAq!aiik2r    c                     | j                  t        t        d       | j                  t        t        d       | j	                  t        dt        d       | j	                  t        dt        t
               y )Nr   rT    z:bit-endianness must be either 'little' or 'big', not 'foo'r   z!'ellipsis' object is not iterable)r   r   r   r   rw   Ellipsisr~   s    r   test_endian_wrongz#CreateObjectTests.test_endian_wrong   sd    )Xa8*hr:  HU 	! 	$ 	  !D!)8	5r    c                     dD ]+  }t        d|      }| j                  |t        d|             - t        d      }| j                  |j                  t	                      | j                  t        |      d       y )Nr1   r0   r    bufferr+   r      Ar   rR   )r   ri   rV   r+   r   rX   r   s      r   test_buffer_endianz$CreateObjectTests.test_buffer_endian   sl    % 	5FF3AQF 34	5 D!#5#78Q#r    c                 2   t        dd      }| j                  |j                         | j                  t        |j
                         | j                  t        |j                  dd       | j                  |t        dd             | j                  |       y )N   r0   r   r;   r'   00001111)	r   rY   r`   r   r   clear__setitem__ri   rf   rC   s     r   test_buffer_readonlyz&CreateObjectTests.test_buffer_readonly	  sm    GH5

#)QWW-)Q]]Aq9HZ:;qr    c                 p    t        t        dg            }| j                  |j                         d|d<   y )NA   r   r'      )r   	bytearrayrc   r`   rC   s     r   test_buffer_writablez&CreateObjectTests.test_buffer_writable  s-    IrdO,$!r    c                     | j                  t        t        dd       t        d dt        dg            }| j	                  |t        dd             t        d dd       }| j	                  |t        dd             y )	NrM   s   DATA r   r1      r   r0   r   )r   r   r   r   ri   rC   s     r   test_buffer_argsz"CreateObjectTests.test_buffer_args  sk    )XqC T5)RD/2HZ78T8T*HQ12r    c           	          t        d       t        d d       t        d t              t        d d d       t        d d t              fD ]  }| j                  t        |      d        y )Nr   r   )r   r   rV   rX   rC   s     r   	test_nonezCreateObjectTests.test_none!  s\    4.4-414t,4x0	2 	(A
 SVQ'	(r    c                    t        d      D ]  }t        |      }| j                  t        |      |       | j	                  |j                                | j                  |j                         |dz         | j                  |       t        |t              }| j                  t        |      |       | j                  |        | j                  t        t        d       | j                  t        t        d       y )N2   0r   rS   r   )r=   r   rV   rX   rc   anyto01rf   r   r   r   rD   r*   r,   s      r   test_intzCreateObjectTests.test_int)  s    r 
	AASVQ'QUUW%QVVXq3w/NN1 8,ASVQ'NN1
	 	*h3*h5r    c           	         t        g d      }| j                  |t        d             | j                  |       | j                  t        t         g d       | j                  t
        t         g d       t        d      D ]h  }t        |      D cg c]  }t        t        d             }}t        |      }| j                  |j                         |       | j                  |       j y c c}w )N)r   r'   FT0101r   r'   rK   )r   r'   Nr   r'   )
r   rV   rf   r   r   r   r=   boolr   rB   )rD   r,   r*   dlsts        r   	test_listzCreateObjectTests.test_list9  s    ()HV,-q*h	:)X|<r 	A16q:A4A':C:AQXXZ-NN1		:s   C+c                     g d}|t        |      t        j                  d|      fD ]T  }| j                  t        |      d       t	        |      }| j                  |t	        d             | j                  |       V y )N)r   r'   r'   r'   r   irM   01110)r   arrayrV   rX   r   rf   rD   r   xr,   s       r   test_sequencezCreateObjectTests.test_sequenceG  sj    eCj%++c3"77 	ASVQ'AQ 12NN1		r    c           	         t        d      D ]q  }t        |      D cg c]  }t        t        d             }}t        t	        |            }| j                  |j                         |       | j                  |       s y c c}w )Nr   r'   )r=   r   r   r   iterrV   rB   rf   )rD   r*   r   r   r,   s        r   
test_iter1zCreateObjectTests.test_iter1O  sh    r 	A16q:A4A':C:c#AQXXZ-NN1		:s   Bc                     | j                         D ]C  fd}t         |             }| j                  |t                     | j                  |       E y )Nc               3   $   K   D ]  } |   y wr   r   )r   r   s    r   r   z)CreateObjectTests.test_iter2.<locals>.fooX  s      AG   )rE   r   rV   rf   )rD   r   r,   r   s      @r   
test_iter2zCreateObjectTests.test_iter2V  sM    ##% 	C AQ.NN1	r    c                     t        t        j                  dd            }| j                  |t	        d             t        t        j                  dd            }| j                  |t        d             y )NFr:   r'   
1111111111)r   	itertoolsrepeatrV   zerosrC   s     r   
test_iter3zCreateObjectTests.test_iter3_  sY    Y%%eR01E"I&Y%%a,-HX./r    c                     | j                  t        t        d            t        d             | j                  t        t        t        dd             y )NrK   01r   r;   )rV   r   r=   r   r   r~   s    r   
test_rangezCreateObjectTests.test_rangee  s7    %(+Xd^<*ha<r    c                 $   dD ]@  }t        |      }| j                  |j                         g d       | j                  |       B | j	                         D ]b  }dj                  |D cg c]	  }ddg|    c}      }t        |      }| j                  |j                         |       | j                  |       d | j                  t        t         d       | j                  t        t         d       | j                  t        t         d       y c c}w )	N)0010111z0010 1110010_111)r   r   r'   r   r'   r'   r'   r   r   101021u   1★0u   0𐍈)r   rV   rB   rf   rE   joinr   r   )rD   sr,   r   r   s        r   test_string01zCreateObjectTests.test_string01i  s    2 	AAQXXZ)>?NN1	
 ##% 	C41#sA45AAQXXZ-NN1		 	*h8*h
;*h> 5s   (D
c                 
   t        t              }| j                  |t                      t        D ]+  }t        |dz         }| j                  |t        d             - t        d      }| j                  |t        d             y )N
1101110001z 0
10	10 01010)r   r   rV   )rD   r,   cs      r   test_string01_whitespacez*CreateObjectTests.test_string01_whitespacey  ss    Z HJ' 	8A\)*AQ 67	8 &'HW-.r    c                    dt        d      fD ]  }t        |d      }| j                  t        |      dt        |      z         | j                  |j	                         |       | j                  |j                         d       | j                  |        t        d      D ][  }t        j                  |      }t        |      }| j                  t        |      d|z         | j                  t        |      |       ] y )N   r0   rR   00000001d   )r   r   rV   rX   r   r   rf   r=   r2   r3   
memoryview)rD   r   r,   r*   s       r   test_bytes_bytearrayz&CreateObjectTests.test_bytes_bytearray  s    )G,, 	AH%ASVQQZ0QYY[!,QVVXz2NN1	 s 	/A

1AASVQU+Z]A.		/r    c                 r    dD ]2  \  }}}t        ||      }| j                  |j                         |       4 y )N))   r0   10000000)r  r0   r  )r  r1   r  )r  r1   r  r   rV   r   )rD   byter+   r   r,   s        r   	test_bytezCreateObjectTests.test_byte  s>    "1 	,D&#
 v&AQVVXs+	,r    c                     t        d      D ]?  }t        |      }t        |d       }| j                  ||u        | j                  ||       A y )Nr:   rT   )r=   r   rc   ri   rD   r*   r,   re   s       r   test_bitarray_simplez&CreateObjectTests.test_bitarray_simple  sL    r 	#AA4(AQ!V$Q"		#r    c                 @   dD ]  }t        |      }t        |      }| j                  ||u        | j                  ||       | j                  |      }t        ||      }| j	                  |j
                  |       | j	                  ||        | j                         D ]}  }| j                  |j
                        }t        ||      }| j	                  ||       | j	                  |j
                  |       | j                  |j
                  |j
                          y NrG   rT   )r   rc   ri   rI   rV   r+   r@   r   )rD   r+   r,   re   endian2s        r   test_bitarray_endianz&CreateObjectTests.test_bitarray_endian  s     & 		#F'AAQ!V$Q"**62GG$AQXXw/Q"		# %%' 	4A**1884GG$AQ"QXXw/!((3	4r    c                    t        dd      }t        |d      }| j                  ||       | j                  |j                         |j                                |j	                          | j                  ||       | j                  |j                         |j                                t        dd      }| j                  ||       y )N11100001r0   rT   r1   )r   rV   r   r   bytereverserD   r,   re   r  s       r   test_bitarray_endiannessz*CreateObjectTests.test_bitarray_endianness  s    Z1Qu%AAIIK5	Aq!aiik2Z.Ar    c                 L   t        t                     }| j                  |t                      | j                  t	        |      t                dD ]S  }t        t        d|            }| j                  |t        d|             | j                  t	        |      t                U y )NrG   011rT   )r   r   ri   rV   r_   rD   r,   r+   s      r   test_frozenbitarrayz%CreateObjectTests.test_frozenbitarray  s    ^%&HJ'a(+% 	0Ff=>AQ 78T!Wh/	0r    c                 (   d ddt               t               t               t               t	               t               t               t               fD ]B  }t        |      }| j                  t        |      d       | j                  |t                      D y )Nr   r   )listr   setdictra   r   r   r   rV   rX   ri   rD   r   r,   s      r   test_create_emptyz#CreateObjectTests.test_create_empty  sk    2tvuwtvuw+xz>+;= 	,AASVQ'Q
+		,r    c                 \   ddt         t        d      ddfD ]  }| j                  t        t        |        dD ]  }| j                  t
        t        |        | j                  t        t        dd       | j                  t
        t        dd       | j                  t        t        ddd       y )	NFTr           y                )rS   A z010  11r   r1   )r   rN   r   r   r   r   )rD   r   s     r   test_wrong_argsz!CreateObjectTests.test_wrong_args  s    ha#v= 	6Ai15	6 + 	7Aj(A6	7 	)Xq!4*h59)Xq%;r    c                     t        d      }t        j                  |      }| j                  |j	                         |j	                                d }| j                  t        t        |       y )N0100)r   weakrefproxyrV   r   r   ReferenceErrorrX   rh   s      r   test_weakrefzCreateObjectTests.test_weakref  sM    VMM!1668,.#q1r    N)rk   rx   ry   r   r   r   r   r   r#   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r#  r(  r,  r2  r7  r=  r   r    r   r   r      s    3	5$ G_ 
3(6 0=? 	//,#4*0,< G_2 2r    r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)ToObjectsTestsc                     t               }| j                  t        t        |       | j                  t        t        |       | j                  t        t
        |       y r   )r   r   	Exceptionr   floatcomplexrC   s     r   test_numericzToObjectsTests.test_numeric  s?    J)S!,)UA.)Wa0r    c                     | j                         D ]+  }| j                  t        |      |j                                - y r   )r@   rV   r.  rB   rC   s     r   r   zToObjectsTests.test_list  s4    %%' 	2AT!Wahhj1	2r    c                     | j                         D ]4  }| j                  t        |      t        |j                                      6 y r   )r@   rV   r   rB   rC   s     r   
test_tuplezToObjectsTests.test_tuple  s9    %%' 	:AU1XuQXXZ'89	:r    c                    t        d      D ]~  }t        d|z        }| j                  |j                  d       | j                  t	        |      |j                                | j                  t        |      |j                                 y )N   rR   r   )r=   r4   rV   rZ   ra   r   r   r   s      r   r  z#ToObjectsTests.test_bytes_bytearray  sk    r 	8A!a% AQYY*U1Xqyy{3Yq\199;7		8r    c                     dD ]X  \  }}t        d|      }| j                  |j                         |       t        d|      }| j                  t        |      |       Z y )N))r0   r  )r1   r  r  )r   rV   r   ra   )rD   r+   r   r,   s       r   test_bytes_bytearray_padz'ToObjectsTests.test_bytes_bytearray_pad  sW    @ 	,KFCf%AQYY[#.f%AU1Xs+		,r    c                     | j                         D ]4  }| j                  t        |      t        |j                                      6 y r   )r@   rV   r/  rB   rC   s     r   test_setzToObjectsTests.test_set
  s8    %%' 	6ASVS_5	6r    N)	rk   rx   ry   rD  r   rG  r  rK  rM  r   r    r   r?  r?    s     12:8,6r    r?  c                       e Zd Zd Zd Zd Zy)GetItemTestsc                    t               }| j                  t        |j                  d       |j	                  d       | j                  |d   d       | j                  |d   d       | j                  t        |j                  d       | j                  t        |j                  d       |j	                  d       | j                  |d   d       | j                  |d   d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d	       | j                  t        |j                  d        | j                  t        |j                  d
       y )Nr   Tr'   rS   FrK         ?r5  )r   r   
IndexError__getitem__appendrV   r   rC   s     r   test_explicitzGetItemTests.test_explicit  s   J*amma8	1q!2"*amma8*ammR8	1q!2"*amma8*ammR8)Q]]C8)Q]]D9)Q]]C8r    c                 b   t        d      }t        |      D ]T  \  }}| j                  ||   |       | j                  t        ||         t               | j                  |d|z      |       V | j                  t        |j                  d       | j                  t        |j                  d       y )N1100010r   )r   	enumeraterV   r_   r   r   rT  rU  )rD   r,   r   vs       r   
test_basiczGetItemTests.test_basic#  s    YaL 	+DAqQqT1%T!A$Z-QrAvY*	+ 	*amma8*ammR8r    c                     | j                         D ]C  }|j                         }t        t        |            D ]  }| j	                  ||   ||           E y r   )r@   rB   r=   rX   rV   )rD   r,   aar   s       r   r  zGetItemTests.test_range,  sT    %%' 	.AB3q6] .  1r!u-.	.r    N)rk   rx   ry   rW  r^  r  r   r    r   rO  rO    s    9"9.r    rO  c                   4    e Zd Zd Zd Z ee      d        Zy)SetItemTestsc                    t        d      }d|d<   | j                  |t        d             t        d      }d|d<   d|d<   | j                  |t        d             d|d<   d|d<   | j                  |t        d	             | j                  t        |j                  dd       | j                  t
        |j                  dd        | j                  t        |j                  dd
       | j                  t        |j                  dd       | j                  t
        |j                  dd       | j                  t
        |j                  d d       | j                  t
        |j                  dd
       | j                  |t        d	             y )Nr   r'   r   r  rK   r  rS   rQ  10TrR  FrS  r,   )r   rV   r   r   r   r   rT  rC   s     r   rW  zSetItemTests.test_explicit4  s9   SM!HSM*QK!!HTN+""HTN+*ammQ;)Q]]At<*amma>*ammR?)Q]]C;)Q]]D!<)Q]]C>HTN+r    c                    | j                  d      D ]l  }t        t        |            }|j                         }t	        d      }|||<   |||<   | j                  |j                         |       | j                  |       n y Nr'   r>   )r@   r   rX   rB   r   rV   rf   )rD   r,   r   r`  r]  s        r   test_randomzSetItemTests.test_randomK  su    %%A%. 	A#a&!ABAAAaDBqEQXXZ,NN1	r    c                     t        g d      }t        d|      }| j                  |j                         d|d<   | j	                  |t        g d             d|d<   | j	                  |t        g d             y )	NrM   r'   rK   r;   r0   r+   r   r'   r   )   r'   rK   r;   rQ  )rl  r'   rK   C   r   r   rc   r`   rV   rh   s      r   test_importedzSetItemTests.test_importedU  sg    l#HQ/$!Io67"I&89:r    N)rk   rx   ry   rW  rh  r#   r   ro  r   r    r   rb  rb  2  s$    ,. G_; ;r    rb  c                   4    e Zd Zd Zd Z ee      d        Zy)DelItemTestsc                    t        d      }|d= | j                  t        |      d       |d= |d= | j                  |t        d             | j                  t        |j
                  d       | j                  t        |j
                  d       y )N100110r'   rM   r;   rQ  100)r   rV   rX   r   rT  __delitem__rC   s     r   test_simplezDelItemTests.test_simpleb  st    XaDQ#aD!B%HUO,*amma8*ammR8r    c                    | j                  d      D ]x  }t        |      }|j                         }t        |      }||= | j	                  ||d | ||dz   d  z          | j                  t        |      |dz
         | j                  |       z y rf  )r@   rX   copyr   ri   rV   rf   rD   r,   r*   re   r   s        r   rh  zDelItemTests.test_randomk  s    %%A%. 	AAAA!A!Q"1!a%&	 12SVQU+NN1	r    c                     t        g d      }t        |      }| j                  |j                         | j	                  t
        |j                  d       y )N)rM      r   r      r   r   rc   r`   r   BufferErrorrv  rh   s      r   ro  zDelItemTests.test_importedu  s>    j!A$+q}}b9r    Nrk   rx   ry   rw  rh  r#   r   ro  r   r    r   rq  rq  `  s$    9 G_: :r    rq  c                   $    e Zd Zd Zd Zd Zd Zy)GetSliceTestsc           	         t        d      }| j                  |d d  |       | j                  |d d  |u        | j                  |ddd   t        d             | j                  |ddd   t        d             | j                  |d d d   t        d	             | j                  |d
d  t        d             | j                  |dd  t        d             | j                  |d d
 t        d             | j                  |d d d   t        d             | j                  |d d
d   t        d             | j                  t        |j
                  t        d d d             y )Nz01001111 00001r}  rK   rR  1010rS      0100011001rR   00001r   10000101001111z10000111 100101000r   )r   ri   rc   r   r   rU  rN   rC   s     r   
test_slicezGetSliceTests.test_slice  s>   %&1q!1#2a7Xf%561R6HUO43Q3)!4512 1212 232A 454R4(+;"<=5Ab58F#34*ammU4q5IJr    c                     t        d      D ]P  }t        d      }t        |      }|j                         }|j	                          | j                  |d d d   |       R y )NrI  r   rS   )r=   r   r4   ry  reverseri   rD   r?   r*   r,   re   s        r   test_reversezGetSliceTests.test_reverse  sS    r 	)A#A!AAIIKQttWa(	)r    c                 r   t        d      D ]  }t        |      }t        d|      }t        d|      }||| }| j                  |j	                         |j	                         ||        | j                  t        |      t        ||z
  d             | j                  |j                  |j                          y Nr   r   )r=   r4   r	   rV   r   rX   maxr+   )rD   r*   r,   r   jre   s         r   test_random_step1zGetSliceTests.test_random_step1  s    s 	1A!A1A1A!AAQVVXqvvx!}5SVSQ]3QXXqxx0	1r    c           	      j   t        d      D ]  }t        |      }| j                  |      }||   }| j                  t	        |      t	        t        |      |                | j                  t        |      |j                         |          | j                  |j                  |j                          y )Nr   )r=   r4   rP   rV   rX   r.  rB   r+   )rD   r*   r,   r
  re   s        r   rh  zGetSliceTests.test_random  s    s 	1A!A!!!$A!ASVSq!%56T!Wahhjm4QXXqxx0	1r    N)rk   rx   ry   r  r  r  rh  r   r    r   r  r  ~  s    K)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y)SetSliceTestsc                    | j                  d      D ]  }t        |      }t        |      }t        |      |d| | j                  ||       | j	                  ||u        t        |      }t        |      |d d  | j                  ||       | j	                  ||u        t        |      }||d d d<   | j                  |j                         |j                         d d d           y )Nr'   rg  r   rS   )r@   rX   r   rV   rc   rB   )rD   r,   r*   re   s       r   rw  zSetSliceTests.test_simple  s    %%A%. 	;AAAAa[AaFQ"Q!V$AA;AaDQ"Q!V$AAddGQXXZDbD)9:	;r    c                    | j                  d      D ]  }t        |      }t        d      D ]  }| j                  |      }|j                  dk(  rt        d      nt        t        |      |         }t        |      }t        |      }|||<   | j                  |       |j                         }|j                         ||<   | j                  |t        |               y )Nr'   rg  r:   )
r@   rX   r=   rP   rO   r   r   rf   rB   rV   )	rD   r,   len_ar?   r
  len_bre   r  ccs	            r   rh  zSetSliceTests.test_random  s    %%A%. 	2AFE2Y 	2%%e,)*1	"#eEl1o:NUOQK!q!XXZ
1  HRL1	2	2r    c           	      $   | j                         D ]}  }t        |      }dD ]k  }t        d d |      }| j                  t        t	        |      |         |       |j                         }|||<   |||<   | j                  |t        |             m  y )N)rS   r'   )r@   rX   rN   rV   r=   rB   r   )rD   r,   r*   rO   r
  r`  s         r   test_self_randomzSetSliceTests.test_self_random  s    %%' 		2AAA 2$d+  U1Xa[!115XXZ!1  HRL12		2r    c           
         dD ]  }t        |      }dD ]  }t        |      }|j                         }|||| | j                  |||z          | j                  t        |      t        |      t        |      z          ||dd | j                  |||z   |z          | j	                  |       | j                  t        |      t        |      dt        |      z  z            y )N)r   r'   r:   W   )r   r'   r:   c   r   rK   r4   ry  rV   rX   rf   )rD   r*   r,   r   r   re   s         r   test_specialzSetSliceTests.test_special  s     	>A!A! 	>aLFFH!A  AE*  QQ#a&9!A  AEAI.q!  QQ!c!f*)<=	>	>r    c                 l   t        d      D ]  }t        d      }t        |      }t        d|      }t        dd      }t        |      }|j	                         }|||| | j                  ||d | |z   ||d  z          | j                  t        |      t        |      |z          | j                  |        y )Nr  r   r     )	r=   r   r4   r	   ry  ri   rV   rX   rf   )rD   r?   r*   r,   pr   r   re   s           r   r  zSetSliceTests.test_range  s    s 
	A#A!A1A3A!AAAaFQ"1	AabE 12SVSVaZ0NN1
	r    c                    t        d      D ]H  }t        dd      }t        |      }t        d|      }t        d|      }t        dd      }t        |      }|j                         }|||| |j	                         }	|j	                         |	|| | j                  |j	                         |	       ||k  rL| j                  ||d | |z   ||d  z          | j                  t        |      ||z   |z
  t        |      z          nE| j                  ||d | |z   ||d  z          | j                  t        |      |t        |      z          | j                  |       K y )Nr  r   r   ,  )	r=   r	   r4   ry  rB   rV   ri   rX   rf   )
rD   r?   r*   r,   p1p2r   r   re   b_lsts
             r   test_resizezSetSliceTests.test_resize  s9   s 	A3A!AABAB3A!AAAbHHHJE88:E"RLQXXZ/Rx  AcrFQJ23$78  QR"s1v)=>  AcrFQJ23$78  QSV4NN1%	r    c                 R   t        d      }||d d d<   | j                  |t        d             ||dd  | j                  |t        d             ||d d | j                  |t        d             t        d      }||d d | j                  |t        d	             ||d
d  | j                  |t        d             ||d
dd<   | j                  |t        d             t        d      }||d
d
 | j                  |t        d             ||d d  | j                  |t        d             y )N1100111rS   1110011r  11101110011rL   111011100111001101001010011rK   01010011rQ  r'   010101001111r*  010111r   rV   rC   s     r   	test_selfzSetSliceTests.test_self  s$   Y$B$HY/0!"H]34#2H%789W#2HX./!#HZ01!Bq&	H^45UO!AHX./!HX./r    c                     t        d      }t        |      }||d d d<   | j                  ||       | j                  |t        d             y )N11100000r   rS   00000111r  rh   s      r   test_self_shared_bufferz%SetSliceTests.test_self_shared_buffer  sJ     Z A$B$AHZ01r    c                     t        d      }t        t        |      dd       }| j                  |t        d             ||ddd<   | j                  |t        d	             y )
N11111111 11000000 00000000r'   rK   r   11000000r   r   rS   z11111111 00000011 00000000r   r  rV   rh   s      r   test_self_shared_buffer_2z'SetSliceTests.test_self_shared_buffer_2+  s^     12JqM!A./HZ01"Qr'
H%ABCr    c                 b   t        d      }t        t        |      d d       }t        t        |      dd        }| j                  |t        d             | j                  |t        d             ||d d d<   | j                  |t        d             | j                  |t        d	             y )
Nr  rK   r   r'   z11111111 11000000z11000000 00000000rS   z00000011 11111111z11111111 00000011 11111111r  r'  s       r   test_self_shared_buffer_3z'SetSliceTests.test_self_shared_buffer_3:  s     12JqM"1-.JqM!"-.H%89:H%89:$B$H%89:H%ABCr    c                    t        d      }t        d      |dd | j                  |t        d             |j                  d       t        d      |d d d<   | j                  |t        d             |j                  d       t        d	      |d
d  | j                  |t        d             t	        d      }t        d      |ddd<   | j                  |t        d             |j                  d       t        d	      |dd | j                  |t        d             t	        d      }t        d      |d dd<   | j                  |t        d             y )N   0010rK   r   z11001011 1111r   111001z10101000 0010111r;   00011111101r'   r|  z01010100 0100rM   z00000111 000000010111rS   z00000001 1101)r-   r   rV   r(   r   rC   s     r   test_setslice_bitarrayz$SetSliceTests.test_setslice_bitarrayI  s%   H&!!AH_56	(##A#H_56	!"HX./"IW%!Bq&	H_56	%!AH%789"IW%&2b&	H_56r    c                 0   t        d      }t        d      |dd | j                  |t        d             t               |dd | j                  |t        d             t        d      }t        d      |d	d | j                  |t        d
             t        d      |d d  | j                  |t        d             t        d      }t        d      |dd | j                  |t        d             t        d      |dd | j                  |t        d             y )N1111000r;   1110001rK   rM   11010000r'   r  r  11111100r  r  r   11011r  rC   s     r   test_bitarray_2zSetSliceTests.test_bitarray_2_  s    V%!AHY/0!AHV,-V&!!AHX./!HUO, X$!AHY/0#!AHW-.r    c                    t        d      }t        d      }||dd | j                  |t        d             | j                  t        |      t               | j                  |t        d             t        d      }||d d d<   | j                  |t        d             | j	                  |       | j                  t        |      t               | j                  |t        d             y )Nz11111111 1111r  rK   r   z11000011 1111011100z01101011 0101)r   r   rV   r_   rf   rh   s      r   r,  z!SetSliceTests.test_frozenbitarrays  s    _%6"!AH_56a.1HV,-8$#A#H_56qa.1HX./r    c                    t        d      D ]  }t        d      }t        |      }|j                         }t        t	        d|            }|j                         }t	        d|t        |      z
        }|t        |      z   }| j                  ||z
  t        |             |||| |||| | j                  |j                         |       | j                  t        |      |       | j                  |        y )Nr  r   r   )r=   r   r4   rB   r	   rX   rV   rf   )	rD   r?   r*   r,   lst_are   lst_br   r  s	            r   )test_setslice_bitarray_random_same_lengthz7SetSliceTests.test_setslice_bitarray_random_same_length  s    s 	A#A!AHHJE'!Q-(AHHJE1s1v:&ACF
AQUCF+AaFE!AJQXXZ/SVQ'NN1	r    c                 T   t        d      D ]  }t        d      }t        |      }|j                         }t        t        d            }|j                         }| j	                  |d      }|||<   |||<   | j                  |j                         |       | j                  |        y )Nr   r  r  r'   rO   )r=   r   r4   rB   rP   rV   rf   rD   r?   r*   r,   r  re   r  r
  s           r   test_bitarray_random_step1z(SetSliceTests.test_bitarray_random_step1  s    r 
	A#A!AHHJE)C.)AHHJE!!!!!,AAaDE!HQXXZ/NN1
	r    c                    t        d      D ]  }t        d      }t        |      }|j                         }t        t        d            }|j                         }| j	                  |      }	 |||<   	 |||<   || j                  |d u        | j                  |j                         |       | j                  |        y # t
        $ r d }Y ]w xY w# t
        $ r d }Y hw xY w)Nr  r   )	r=   r   r4   rB   rP   r   rY   rV   rf   r  s           r   test_bitarray_randomz"SetSliceTests.test_bitarray_random  s    s 	"A"A!AHHJE)B-(AHHJE!!!$A! a y.  U3q!+	"  
  s$   +C 1C CCCCc                    t        d      }d|d d d<   | j                  |t        d             d|dd  | j                  |t        d             d|dd  | j                  |t        d	             d|d d | j                  |t        d
             d|d d  | j                  |t        d             d|dd | j                  |t        d             d|dd d<   | j                  |t        d             d|ddd<   | j                  |t        d             d|dd | j                  |t        d             d|d d  | j                  |t        d             d|ddd<   | j                  |t        d             y )N11111111FrK   01010101Tr  01011111rQ  0101110011011100rM   11000111r'   r;   10000110r   1101011000000000rS   00011110r  rC   s     r   test_bool_explicitz SetSliceTests.test_bool_explicit  sv   Z #A#HZ01!#HZ01"#HZ01#1HZ01!HZ01!AHZ01!$Q$HZ01!Aa%HZ01!AHZ01!HZ01"Qr'
HZ01r    c                 *   t        d      D ]  }t        d      }t        d|      }t        ||      }t        |      }d||| | j	                  |j                  d      ||z
         t        |      }d|t        ||      <   | j	                  ||        y )Nr  r<   r   r'   )r=   r   r	   r   rV   rb   )rD   r?   r*   r>   stopr,   re   s          r   test_bool_step1zSetSliceTests.test_bool_step1  s    s 		#A$AAqME5!$DAAeDMQWWQZ6A$%AeE4 !Q"		#r    c                    t        d      D ]  }t        d      }t        |      }|j                         }| j	                  |      }t        t        |      |         }t        d      }|||<   ||gz  ||<   | j                  |j                         |       |j                  d       d||<   | j                  |j                  d      |        y )Nr   r  r'   r   )
r=   r   r4   rB   rP   rX   r   rV   r(   rb   )rD   r?   r*   r,   r`  r
  slicelengthr]  s           r   test_setslice_bool_random_slicez-SetSliceTests.test_setslice_bool_random_slice  s    s 	6A#A!AB!!!$AeAhqk*KAAAaD1#%BqEQXXZ,HHQKAaDQWWQZ5	6r    c           	      R   d}t        d      D ]  }t        dd      }t        |      }|j                         }t	        t        d      t        d|      t        dd            }| j                  |j                  |j                  z
  dk\         ||j                  |j                  z
  dk\  z  }t        t        |      |         }| j                  |dkD         t        d      }|||<   ||gz  ||<   | j                  |j                         |        | j                  |d	kD         y )
Nr   r  i  i  r<   r'   r     r  )r=   r   r4   rB   rN   r	   rY   r  r>   rX   r   rV   )	rD   cntr?   r*   r,   r`  r
  r  r]  s	            r   test_setslice_bool_stepz%SetSliceTests.test_setslice_bool_step  s    s 	-A$%A!ABioyq'971c?KAOOAFFQWW,12166AGG#t++CeAhqk*KOOK!O,AAAaD1#%BqEQXXZ,	- 	c	"r    c           	         t        d      }d|d d d<   | j                  |t        d             d|dd  | j                  |t        d             |j                  t        dd d       d       | j                  |t        d	             | j	                  t
        |j                  t        d d d      d
       | j	                  t
        |j                  t        d dd       d       | j	                  t        |j                  t        d dd       d       y )Nr  r   rK   r  r'   r  r  rQ  r  r;   rS   r   )r   rV   r   rN   r   r   r   rC   s     r   test_to_intzSetSliceTests.test_to_int  s    Z #A#HZ01!#HZ01	eBd+Q/HZ01*ammU4q5I1M*ammU4D5I2N)Q]]E$44H#Nr    c           
         t        d      }t        ddd       }| j                  t        |j                  |d       | j                  t        |j                  |d        | j                  t        |j                  |d       d||<   | j                  |t        d             | j                  t        d|j                  t        d d d      t        d	             | j                  t        d
|j                  t        d d d      t        d	             | j                  t        d|j                  t        d d d      t        d             | j                  |t        d             y )Nr  rK   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 8rS   0001000)r   rN   r   r   r   rV   rw   r   rD   r,   r
  s      r   test_invalidzSetSliceTests.test_invalid  s#   Z !Q)Q]]As;)Q]]At<)Q]]Av>!HZ01  NMM5tQ/%	B 	  NMM5tQ/%	B 	  NMM5tR0(92E	G 	HZ01r    c                 R   t        g d      }t        d|      }| j                  |j                         d|dd | j	                  |t        g d             d|ddd	<   | j	                  |t        g d
             t        d      |dd | j	                  |t        g d             y )Nrj  r0   rk  r'   rR   r[  )rM      r  r;   r   rK   )rM      r  r;   z11110000 0011rI  )rM   r      r;   rn  rh   s      r   ro  zSetSliceTests.test_imported#  s    l#HQ/$!BI&89:!Bq&	I&89:?+!BI&89:r    N)rk   rx   ry   rw  rh  r  r  r  r  r  r  r  r#   r   r  r  r  r,  r  r  r  r  r  r  r  r  r  ro  r   r    r   r  r    s    ;"2
2>*0.2D G_D D7,/(0""022
#6 #$O2. G_
; 
;r    r  c                   F    e Zd Zd Zd Zd Zd Zd Z ee	      d        Z
y)DelSliceTestsc           	      X   t        d      }|dd= | j                  |t        d             |d d d= | j                  |t        d             t        d      }|ddd= | j                  |t        d	             t        d
      }|d dd= | j                  |t        d             |dd= | j                  |t        d             | j                  t        |j                  t        d d d             | j                  t        |      d       |d d = | j                  |t                      y )Nz10101100 10110r;   r   10101100111z10101100 101101111rM   rR  z1010100 0101111z10101100 1011011rQ  z10101100 011r   r|  )r   rV   r   r   rv  rN   rX   rC   s     r   rW  zDelSliceTests.test_explicit2  s   %&acFHY/0ccFHV,-)*a1fIH%678'(fr"fIH^45acFH^45*ammU4q5IJQ$aDHJ'r    c                    dD ]  }t        |      }|j                         }|d d= ||d = | j                  ||       |dd = | j                  ||d d        |d d = | j                  t        |      d       | j	                  |        y )N)r   r'   r:   I   r   r:   r  r  s       r   r  zDelSliceTests.test_specialE  s     
	A!AA"1"!"Q""#Q#2'!SVQ'NN1
	r    c                    t        d      D ]  }t        d      }t        |      }| j                  |      }t	        t        |      |         }|j                         }||= | j                  t	        |      ||z
         | j                  |       |j                         }||= | j                  |t        ||j                                y )Nr  r  rT   )r=   r   r4   rP   rX   ry  rV   rf   rB   ri   r   r+   )rD   r?   r*   r,   r
  r  r  c_lsts           r   rh  zDelSliceTests.test_randomR  s    s 	BA#A!A!!!$AeAhqk*KA!SVQ_5NN1HHJEaQqxx @A	Br    c                     t        d      D ]l  }t        |      }t        d|      }t        dd      }|j                         }||||z   = | j	                  ||d | |||z   d  z          | j                  |       n y r  )r=   r4   r	   ry  ri   rf   )rD   r*   r,   r  r   re   s         r   r  zDelSliceTests.test_range`  s    s 	A!A1A3AA!AE'
Q"1!a%&	 12NN1	r    c                     d}t        | dz
  |      D ]O  }|dk(  r	t        |      }|j                         }|d d |= |d d |= | j                  |j                         |       Q y )Nr   r'   r   )r=   r4   rB   rV   )rD   r*   rO   r,   r   s        r   test_range_stepzDelSliceTests.test_range_stepl  sm    1"q&!$ 	.Dqy!A((*C&D&	FdFQXXZ-	.r    c                    t        g d      }t        |      }| j                  |j                         | j	                  t
        |j                  t        dd             | j	                  t
        |j                  t        dd             y )Nrj  r   r;      )r   r   rc   r`   r   r  rv  rN   rh   s      r   ro  zDelSliceTests.test_importedw  s`    l#A$+q}}eArlC+q}}eAqkBr    N)rk   rx   ry   rW  r  rh  r  r  r#   r   ro  r   r    r   r	  r	  0  s6    (&B
	. G_C Cr    r	  c                       e Zd Zd Zd Zd Zy)GetMaskedIndexTestsc                     t        d      }t        d      }| j                  ||   t        d             | j                  t        |j                  t        d             y )N10010011010111100011011r   rV   r   rT  rU  rD   r,   masks      r   r^  zGetMaskedIndexTests.test_basic  sJ    	"	"4(7"34*ammXf5EFr    c           	         | j                         D ]  }t        |      }| j                  ||   |j                         t	        d      z         t        |      }| j                  ||   t	                      t        |      }| j                  ||   |       t        |      }| j                  t        ||         t        |      D cg c]  }||   s	||    c}        y c c}w )Nr  )
r@   rX   rV   rb   r   r   r-   r4   r.  r=   )rD   r,   r*   r   r   s        r   rh  zGetMaskedIndexTests.test_random  s    %%' 	BAAAQqT1779x}#<=8DQtWhj17DQtWa(Q<DT!D'],1!H@qQad@B	B As   
C"C"c                     t        d      D ]R  }| j                  |t        dd            }t        |      }t	        |      }d||<   | j                  ||   ||          T y )Nr  r'   rM   r  )r=   rP   r	   r4   r   ri   )rD   r*   r
  r,   r   s        r   test_random_slice_maskz*GetMaskedIndexTests.test_random_slice_mask  sc    s 	,A!!!'!Q-!8A!A8DDGQtWad+	,r    N)rk   rx   ry   r^  rh  r#  r   r    r   r  r    s    GB ,r    r  c                   X    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
 ee      d	        Zy
)SetMaskedIndexTestsc                 n   t        d      }t        d      }t        d      }t        d      }| j                  t        |j                  |d       | j                  t        |j                  |d       |||<   | j                  ||       t        d      }| j                  t        d|j                  ||       y )	Nr  r  z0 1 1100011110r'   rK   r  z6attempt to assign mask of size 5 to bitarray of size 4)r   r   NotImplementedErrorr   r   rV   rw   rT  )rD   r,   r   valr   re   s         r   r^  zSetMaskedIndexTests.test_basic  s    	"	"	"	"-q}}dAF*ammT1=$C V  DMM4	$r    c                     t        d      }t        d      }t        d      }|||<   | j                  |t        d             y )N00000001100110z10  10 1000100r  r'  s       r   test_issue225z!SetMaskedIndexTests.test_issue225  sA    YYY!Y	!r    c                     | j                         D ]E  }|j                         }t        t        |            }t	               ||<   | j                  ||       G y r   )r@   ry  r   rX   r   rV   rD   r,   re   r   s       r   test_zeros_maskz#SetMaskedIndexTests.test_zeros_mask  sM    %%' 	#AAQ=DjAdGQ"		#r    c                     | j                         D ]:  }t        |      }t        |      }t        |      }|||<   | j	                  ||       < y r   )r@   rX   r-   r4   rV   )rD   r,   r*   r   r  s        r   test_ones_maskz"SetMaskedIndexTests.test_ones_mask  sN    %%' 	#AAA7D!AAdGQ"	#r    c                    | j                         D ]s  }|j                         }t        t        |            }t        |j	                               }|||<   ||t        |j                  d            <   | j                  ||       u y r&   )r@   ry  r4   rX   rb   r.  searchrV   )rD   r,   re   r   others        r   test_random_mask_set_randomz/SetMaskedIndexTests.test_random_mask_set_random  ss    %%' 	#AASV$Ddjjl+EAdG&+Ad4;;q>"#Q"	#r    c                 .   t        d      D ]  }| j                  |t        dd            }t        t        |      |         }t	        |      }|j                         }t        |      }d||<   t	        |      }|x||<   ||<   | j                  ||        y )Nr  r'   rM   )r=   rP   r	   rX   r4   ry  r   ri   )rD   r*   r
  r  r,   re   r   r6  s           r   r#  z*SetMaskedIndexTests.test_random_slice_mask  s    s 		#A!!!WQ]3AeAhqk*K!AA8DDGk*E""AdGadQ"		#r    c                 <   | j                         D ]  }t        t        |      |j                        }|j	                         }| j                  t        d|j                  |d       t        |j                               ||<   || z  }| j                  ||        y )NrT   zQmask assignment to bool not implemented;
`a[mask] = 0` equivalent to `a &= ~mask`r   )r@   r4   rX   r+   ry  rw   r(  r   r   rb   rV   rD   r,   r   re   s       r   test_random_mask_set_zerosz.SetMaskedIndexTests.test_random_mask_set_zeros  s    %%' 
	#ASVAHH5DA$$#;tQ	(
 DJJL)AdG$JAQ"
	#r    c                 :   | j                         D ]  }t        t        |      |j                        }|j	                         }| j                  t        d|j                  |d       t        |j                               ||<   ||z  }| j                  ||        y )NrT   zPmask assignment to bool not implemented;
`a[mask] = 1` equivalent to `a |= mask`r'   )r@   r4   rX   r+   ry  rw   r(  r   r-   rb   rV   r:  s       r   test_random_mask_set_onesz-SetMaskedIndexTests.test_random_mask_set_ones  s    %%' 
	#ASVAHH5DA$$#:tQ	(
 4::<(AdGIAQ"
	#r    c                     t        ddg      }t        d|      }t        d      }t        d      ||<   | j                  |t        ddg             y )	Nr   r  r1   rk  00001111 00110011z 1001   01  10r      )r   r   rV   r'  s       r   ro  z!SetMaskedIndexTests.test_imported  sP    q$i E!,()()!Iz:&>?@r    N)rk   rx   ry   r^  r.  r1  r3  r7  r#  r;  r=  r#   r   ro  r   r    r   r%  r%    sD    $!###
### G_A Ar    r%  c                   L    e Zd Zd Zd Zd Zd Zd Zd Z e	e
      d        Zy)	DelMaskedIndexTestsc                     t        d      }t        d      }||= | j                  |t        d             | j                  t        |j                  t        d             y )Nr  r  r  101)r   rV   r   rT  rv  r  s      r   r^  zDelMaskedIndexTests.test_basic  sK    	"	"dGHTN+*ammXe_Er    c                     | j                         D ];  }|j                         }t        t        |            }||= | j	                  ||       = y r   )r@   ry  r   rX   rV   r0  s       r   r1  z#DelMaskedIndexTests.test_zeros_mask  sI    %%' 	#AAQ=D$Q"	#r    c                     | j                         D ]3  }t        t        |            }||= | j                  |t	                      5 y r   )r@   r-   rX   rV   r   r  s      r   r3  z"DelMaskedIndexTests.test_ones_mask  s@    %%' 	,AA<D$Q
+		,r    c                     | j                         D ]1  }|j                  d      }||= | j                  |t        |             3 y r   )r@   rb   rV   r   )rD   r,   cnt0s      r   test_self_maskz"DelMaskedIndexTests.test_self_mask  sD    %%' 	-A771:D !Qd,	-r    c           
         | j                         D ]o  t              }j                         }t        |      |= | j	                  |t        fdt        |      D                     | j	                  |           q y )Nc              3   4   K   | ]  }|   r	|     y wr   r   ).0r   r,   r   s     r   	<genexpr>z7DelMaskedIndexTests.test_random_mask.<locals>.<genexpr>*  s     %LqDGad%Ls   

)r@   rX   ry  r4   rV   r   r=   )rD   r*   re   r,   r   s      @@r   test_random_maskz$DelMaskedIndexTests.test_random_mask#  sz    %%' 		*AAAAQ<D$Q%%LE!H%LLN Q4%)		*r    c                     t        d      D ]V  }| j                  |      }t        |      }|j                         }t	        |      }d||<   ||= ||= | j                  ||       X y Nr  r'   )r=   rP   r4   ry  r   ri   )rD   r*   r
  r,   re   r   s         r   r#  z*DelMaskedIndexTests.test_random_slice_mask/  sh    s 	#A!!!$A!AA8DDG$1Q"	#r    c                    t        ddg      }t        |      }| j                  |j                         | j	                  t
        |j                  t        d             | j	                  t
        |j                  t        d             y )NrM   r;   r   r?     r~  rh   s      r   ro  z!DelMaskedIndexTests.test_imported9  sg    q!fA$+q}}"#67	9 	+q}}hrlCr    N)rk   rx   ry   r^  r1  r3  rI  rN  r#  r#   r   ro  r   r    r   rB  rB    s;    F#,-
*# G_D Dr    rB  c                       e Zd Zd Zy)CommonSequenceIndexTestsc                    t        ddg      dfddfD ]w  \  }}t        d      }| j                  t        ||j                  |       | j                  t        ||j
                  |d       | j                  t        ||j                  |       y y )Nr'   rK   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   rw   r   rU  r   rv  )rD   itemrr   r,   s       r   test_type_messagesz+CommonSequenceIndexTests.test_type_messagesG  s    1v CD41	
 
	JID# !A$$YQ]]DI$$YQ]]D!L$$YQ]]DI
	Jr    N)rk   rx   ry   rW  r   r    r   rT  rT  E  s    Jr    rT  c                   $    e Zd Zd Zd Zd Zd Zy)GetSequenceIndexTestsc                    t        d      }| j                  |g d   t        d             | j                  |dg dz     dt        d      z         | j                  |dg   t        d             | j                  |g    t                      | j                  t        |j                  d	d
g       | j                  t        |j                  dg       y )N00110101 00)rK   r  rR  r   r  G   )rK   r  r   rD  rS   r   r'   r:   ir  rC   s     r   r^  z GetSequenceIndexTests.test_basicV  s    ]#=)8F+;<2	>*B%,@AB4(3-02
+*ammaW=*ammcU;r    c                 @   t        d      }g d}|t        j                  d|      fD ]   }| j                  ||   t        d             " |dxx   t        |      z  cc<   | j                  |t	        |         t        d             | j                  |t        |         t        d             | j                  t        |j                  ddg       | j                  t        |j                  ddg       | j                  t        |j                  t        |             y )Nz11001101 01)r'   r;   rQ  r   rt  rK   Br  )
r   r   rV   rX   r   ra   r   r   rU  r   )rD   r,   r   re   s       r   
test_typesz GetSequenceIndexTests.test_types_  s    ]#ekk#s++ 	4AQqT8E?3	4A#a&9S>*HUO<5:8)Q]]QH=)Q]]QH=)Q]]E#J?r    c                    | j                         D ]u  t              }t        t        |      |dz        }|   }| j	                  |t        fd|D                     | j	                  |j                  j                         w y )NrK   r   c              3   (   K   | ]	  }|     y wr   r   )rL  r   r,   s     r   rM  z4GetSequenceIndexTests.test_random.<locals>.<genexpr>q  s     (;!1(;s   )r@   rX   r   r=   rV   r   r+   )rD   r*   r   re   r,   s       @r   rh  z!GetSequenceIndexTests.test_randoml  st    %%' 	1AAA%(ad+C#AQ(;s(; ;<QXXqxx0	1r    c                     t        d      D ]D  }| j                  |      }t        |      |   }t        |      }| j                  ||   ||          F y Nr  )r=   rP   r4   ri   )rD   r*   r
  rr,   s        r   r  z GetSequenceIndexTests.test_ranget  sS    s 	)A!!!$AaA!AQqT1Q4(		)r    N)rk   rx   ry   r^  r_  rh  r  r   r    r   rY  rY  T  s    <@1)r    rY  c                   R    e Zd Zd Zd Zd Zd Zd Zd Zd Z	 e
e      d        Zy	)
SetSequenceIndexTestsc                 |   t        d      }d|g d<   | j                  |t        d             d|g <   | j                  |t        d             d|dg<   | j                  |t        d             d|d	dg<   | j                  |t        d
             | j                  t        |j
                  ddgd       | j                  t        |j
                  dgd       | j                  t        |j
                  dgd       | j                  t        |j
                  d       | j                  t        |j
                  |       y )Nr:   r'   rK   r;   rM   r   r[  TrS   00110101 01r   r;   z00100101 00rK   r5  )r;   rS   )r   rV   r   r   rT  r   r   r   rC   s     r   test_bool_basicz%SetSequenceIndexTests.test_bool_basic}  s   "I,H]34"H]342$H]341b'
H]34*ammaWa@*ammaS!<)Q]]QC=)Q]]G<)Q]]A6r    c                     | j                         D ]d  }t        |      }t        t        |      |dz        }|j	                         }t        d      }|||<   |D ]  }|||<   	 | j                  ||       f y )NrK   ra  r'   )r@   rX   r   r=   ry  r   rV   )rD   r,   r*   r   re   r]  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 ]a  }| j                  |      }t        |      |   }t        |      }|j                         }t	        d      x||<   ||<   | j                  ||       c y rP  )r=   rP   r4   ry  r   ri   rD   r*   r
  re  r,   re   s         r   test_bool_rangez%SetSequenceIndexTests.test_bool_range  sl    s 	#A!!!$AaA!AA%a.(AaD1Q4Q"	#r    c           	      &   t        d      }t        d      |g d<   | j                  |t        d             t               |g <   | j                  |t        d             t        d      |ddg<   | j                  |t        d             | j                  t        |j
                  d	dgt        d             | j                  t        |j
                  d	gt                      d
}| j                  t        ||j
                  d	dgt        d             y )Nr:   r  ri  z00110001 0011rM   rS   rj  r'   z:attempt to assign sequence of size 2 to bitarray of size 3rK   001)r   r   rV   r   rT  r   r   rw   )rD   r,   rr   s      r   test_bitarray_basicz)SetSequenceIndexTests.test_bitarray_basic  s    "I"6*,H]34
"H]34d^1b'
H]34*ammaWhtnM*ammaS(*EJ  S!"A	Ir    c                 "   | j                         D ]|  }t        |      }t        t        |      |dz        }t	        t        |            }|j                         }|||<   t        |      D ]  \  }}||   ||<    | j                  ||       ~ y )NrK   ra  )r@   rX   r   r=   r4   ry  r\  rV   )rD   r,   r*   r   r  re   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                     t        d      D ]j  }| j                  |      }t        |      |   }t        |      }|j                         }t        t	        |            x||<   ||<   | j                  ||       l y rd  )r=   rP   r4   ry  rX   ri   ro  s         r   test_bitarray_rangez)SetSequenceIndexTests.test_bitarray_range  sq    s 	#A!!!$AaA!AA#CF++AaD1Q4Q"	#r    c                 "   | j                         D ]|  }t        t        t        |                  }t	        |       |j                         }|j                         }|||<   t        |      D ]  \  }}||   ||<    | j                  ||       ~ y r   )r@   r.  r=   rX   r
   ry  r\  rV   )rD   r,   r   re   r  r   r  s          r   test_bitarray_random_selfz/SetSequenceIndexTests.test_bitarray_random_self  s    %%' 		#AuSV}%CCLAAAcF!# 1t!Q"		#r    c                 4   t        g d      }t        d|      }| j                  |j                         d|t	        ddd      <   | j                  |t        g d             t        d	d
      |t	        dd      <   | j                  |t        g d             y )Nr   r'   rK   r;   r1   rk  r'   r       rR   )            z00001111 01r0   r:   )r   r   r  r  )r   r   rc   r`   r=   rV   rh   s      r   ro  z#SetSequenceIndexTests.test_imported  s~    l#E!,$%2q/I&>?@"=(;%2,I&>?@r    N)rk   rx   ry   rk  rm  rp  rt  r  rw  ry  r#   r   ro  r   r    r   rg  rg  {  s@    7 	##I
##
# G_A Ar    rg  c                   F    e Zd Zd Zd Zd Zd Zd Z ee	      d        Z
y)DelSequenceIndexTestsc                    t        d      }|g d= | j                  |t        d             |g = | j                  |t        d             |dg= | j                  |t        d             t        d      }|g d= | j                  |t        d             | j                  t        |j                  ddg       | j                  t        |j                  dg       | j                  t
        |j                  d	       y )
Nr[  )rK   r  r   r   001100rK   00100)r   r   rK   rK   r  r   r'   r:   )r'   r;   )r   rV   r   rT  rv  r   rC   s     r   r^  z DelSequenceIndexTests.test_basic  s    ]#lOHX./bEHX./qcFHW-.]# !HX./*ammaW=*ammbT:)Q]]F;r    c                     | j                  d      D ]?  }|j                         }t        t        |            }||= ||g= | j	                  ||       A y rf  )r@   ry  r   rX   rV   rD   r,   re   r   s       r   test_delete_onez%DelSequenceIndexTests.test_delete_one  sW    %%A%. 	#AA#a&!A!afQ"		#r    c           
      `   t        d      D ]  }t        |      }t        t        |      t        d|            }|j	                         }||= | j                  t        |      |t        t        |            z
         t        t        |      d      D ]  }||=  | j                  ||        y )Nr  r   ra  Tr  )	r=   r4   r   r	   ry  rV   rX   r/  sorted)rD   r*   r,   r   re   r   s         r   rh  z!DelSequenceIndexTests.test_random  s    s 	#A!A%(gam4CA#SVQSX%67CHd3 aDQ"	#r    c                     | j                         D ]H  }t        t        t        |                  }t	        |       ||= | j                  t        |      d       J y r   )r@   r.  r=   rX   r
   rV   )rD   r,   r   s      r   test_shufflez"DelSequenceIndexTests.test_shuffle  sN    %%' 	(AuSV}%CCL#SVQ'		(r    c                     t        d      D ]T  }| j                  |      }t        |      |   }t        |      }|j                         }||= ||= | j	                  ||       V y rd  )r=   rP   r4   ry  ri   ro  s         r   r  z DelSequenceIndexTests.test_range  sc    s 	#A!!!$AaA!AA!adQ"	#r    c           	         t        g d      }t        |      }| j                  |j                         | j	                  t
        |j                  t        ddd             | j	                  t
        |j                  t        d             y )Nr{  r   r   r|  rR   )r   r   rc   r`   r   r  rv  r=   rh   s      r   ro  z#DelSequenceIndexTests.test_imported  s`    l#A$+q}}eAr1oF+q}}eAh?r    N)rk   rx   ry   r^  r  rh  r  r  r#   r   ro  r   r    r   r  r    s5    <"#	#(# G_@ @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	k7  xs e      d
        Zd Zd Zy)	MiscTestsc                     t        d      }| j                  |t                | j                  t        |t                     y )Nr*  )r   rU   rc   
isinstancerp   rC   s     r   test_instancecheckzMiscTests.test_instancecheck  s0    UOa*As+,r    c                     | j                  t        t        d            d       | j                  t        t        d            d       | j                  t        t        d            d       y )Nr   Fr   Tr  )rV   r   r   r~   s    r   test_booleannesszMiscTests.test_booleanness$  sM    hrl+U3hsm,d3hsm,d3r    c                     | j                         D ]7  }g }t        |      D ]  }|j                  |        | j                  ||       9 y r   )rE   r   rV  rV   )rD   r   accre   s       r   test_iteratezMiscTests.test_iterate)  sM    ##% 	'CCc] 

1S#&		'r    c                    t        t        d            }| j                  |d       dD ]>  }t        |      }| j	                  t        |      t               | j	                  ||       @ | j                  t        t        |       y )Nr*  bitarrayiterator)r   r'   r'   )	r   r   rm   nextrV   r_   r   r   StopIteration)rD   itr   rV  s       r   r   zMiscTests.test_iter10  sq    (5/""01 	(C8DT$Z-T3'	( 	-r2r    c                     | j                         D ]Q  }|j                         }| j                  t        |      |       | j                  t        t	        |            |       S y r   )r@   rB   rV   r.  r   rD   r,   r`  s      r   r   zMiscTests.test_iter29  sQ    %%' 	0ABT!Wb)T$q']B/	0r    c                 t    t        d      }|dd |dd |d d |dd  t        d      }| j                  ||       y )N00110111001r   r   r'   r;   rS   01010111000r  rh   s      r   test_assignmentzMiscTests.test_assignment?  sH    ]#1Q!A2A"#]#Ar    c                      G d dt               }| j                         D ]?  } ||d      }t        t        |            D ]  }| j	                  ||   ||dz              A y )Nc                       e Zd Zd Zd Zd Zy)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2r    c                     || _         y r   )r  )rD   r  r  s      r   __init__zAMiscTests.test_subclassing.<locals>.ExaggeratingBitarray.__init__L  s	    $r    c                 H    t        j                  | || j                  z
        S r   )r   rU  r  )rD   r   s     r   rU  zDMiscTests.test_subclassing.<locals>.ExaggeratingBitarray.__getitem__O  s    ++D!dkk/BBr    N)rk   rx   ry   r  r  rU  r   r    r   ExaggeratingBitarrayr  G  s    3%Cr    r  i  )r   r@   r=   rX   rV   )rD   r  r,   re   r   s        r   test_subclassingzMiscTests.test_subclassingF  si    		C8 		C %%' 	4A$Q-A3q6] 4  1qT{34	4r    c                    t        d      }dD ]C  }d|z   }| j                  t        |j                  |       | j                  t        t         |       E t        d      }| j                  t        |j                  d       y )Nr'   r   r'               r  l          )r   r   OverflowError__imul__)rD   r,   r   r*   s       r   test_overflowzMiscTests.test_overflowW  sm    QK 	:AAAmQZZ;mXq9	:
 W-W=r    r  c                 (   t        d      }| j                  t        |j                  d       dD ]   }| j                  t        t         d|z          " 	 t        d      }| j                  t        t         j
                  |d       y # t        $ r Y y w xY w)Ni@B iC  r  l        iT)r   r   r  r  MemoryErrorrV  rD   r,   r   s      r   test_overflow_32bitzMiscTests.test_overflow_32bitb  s    X-U; 	FAmX1}E	F	'A 	-!TB  		s   B 	BBc                     t               }| j                  t        t        |       | j                  t        t        |dfg       y )Nr   )r   r   r   hashr0  rC   s     r   test_unhashablezMiscTests.test_unhashablen  s3    J)T1-)TQJ<8r    c                    ddl m} t        d      }| j                  ||j                         | j                  ||j
                         | j                  ||j                         | j                  ||j                         t        j                  d d dk\  r| j                  ||j                         t        j                  dk7  r&| j                  t        ||j                               y y )Nr   )abcrs  rK   )r;   r  win32)collectionsr  r   rU   IterableSizedSequenceMutableSequencer   r   Bufferplatformrc   r  Hashable)rD   r  r,   s      r   test_abczMiscTests.test_abcs  s    #UOa.a+a.a!4!45BQ7*!!!SZZ0<<7"Z3<<89 #r    N)rk   rx   ry   r  r  r  r   r   r  r  r#   r   r  r   r  r  r  r   r    r   r  r    sk    -
4
'304" G_> > GqL#G$	C %	C9
:r    r  c                   d    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y)PickleTestsc                    t        d      }d|_        d|_        t        j                  t        j
                  |            }| j                  ||       | j                  |j                  d       | j                  |j                  d       y )N00110barbaz)r   r   ypickleloadsdumpsrV   rh   s      r   test_attributeszPickleTests.test_attributes  sh    7#LLa)Ae$e$r    c                 T   t        d      }| j                  |j                         | j                  t	        |      t                t        j                  t        j                  |            }| j                  |j                         | j                  t	        |      t                y )Nr   r   )r   rY   r`   rV   r_   r  r  r  rh   s      r   test_readonlyzPickleTests.test_readonly  sj    D!

#a(+LLa)

#a(+r    c                     dD ]R  }t        |      }t        j                  t        j                  |            }| j	                  |j
                  |       T y r!  )r   r  r  r  rV   r+   )rD   r+   r,   re   s       r   r   zPickleTests.test_endian  sE    % 	/F'AV\\!_-AQXXv.	/r    c                     t        dd      }d|_        t        t         ddddfddif}| j                  |j	                         |       y )Nz11001111 01001r0   r  s   r;   r'   quux)r   r  r   rV   
__reduce__)rD   r,   r   s      r   test_reduce_explicitz PickleTests.test_reduce_explicit  sM    +X6&Xq!<| 	-r    c                 V   	 |j                   }t        t        |      |j	                         |j
                  |j                  t        |j                        f|f}| j                  |j                         |       t        |d    }| j                  ||       | j                  t        |      t        |             | j                  |j
                  |j
                         | j                  |j                  |j                         | j                  |       y # t        $ r d }Y w xY wr&   )__dict__AttributeErrorr   r_   r   r+   rZ   r   r`   rV   r  rf   )rD   r,   attrsr   re   s        r   check_reducezPickleTests.check_reduce  s    	JJE
 $Q				AJJ 	 	-#SV,Aa$q'*188,QZZ0q)  	E	s   D D('D(c                     | j                         D ]G  }| j                  |       t        |      }| j                  |       d|_        | j                  |       I y N*   )r@   r  r   r   rh   s      r   test_reduce_randomzPickleTests.test_reduce_random  sU    %%' 	!Aa q!Aa AEa 	!r    c                 p   t        t        dddd      }| j                  t        |      d       | j                  |j                  d       | j                  |       t        t        dddd      }| j                  |t        d             | j                  |j                  d       | j                  |       y )Nr    r0   r      r1   r'   0000111)r   r   rV   rX   r+   rf   rC   s     r   test_reconstructor_explicitz'PickleTests.test_reconstructor_explicit  s    #Hc8QBQ#8,q#HguaCHY/05)qr    c           
      ~   | j                  t        dt        ddddd       | j                  t        dt        t        dddd       | j                  t        dt        t        dddd       | j                  t        t        t        d	dd
d       | j                  t        dt        t        dddd       | j                  t        t        t        d	ddd       | j                  t        dt        t        dddd       | j                  t        dt        t        ddd
d       | j                  t        t        t        d	dd
d       y )Nz/first argument must be a type object, got 'str'r   r    r1   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'smallr4  zinvalid number of pad bits: 8r   rR   zinvalid number of pad bits: 1)rw   r   r   r.  r   r   r   r~   s    r   test_reconstructor_invalid_argsz+PickleTests.test_reconstructor_invalid_args  s2     H#UC1	> 	  <#T3q!	=
 	  A#XsE1a	A
 	)%<"GS!Q	8  J#XsGQ	C 	)%<"GUC	<  7#XtUAq	B 	  7#XsE1a	A 	)%<"GUAu	>r    c                 d   t         j                  j                  t         j                  j                  t              |      }t        |d      5 }t        j                  |      }d d d        t        g d      D ]'  \  }\  }}d|z     }| j                  |j                         |       | j                  |j                  |       | j                  t        |      t               | j                  |j                         | j!                  |       |d|z     }	| j                  |	j                         |       | j                  |	j                  |       | j                  t        |	      t"               | j%                  |	j                         | j!                  |	       * y # 1 sw Y   CxY w)Nrb))110r0   )r*  r1   )1110000001001000000000000000001r0   )0010011110000000000000000000001r1   zb%dzf%d)r2   pathr	  dirname__file__openr  loadr\  rV   r   r+   r_   r   rc   r`   rf   r   rY   )
rD   fnr  fir   r   r
  endre   r   s
             r   
check_filezPickleTests.check_file  sF   ww||BGGOOH5r:$ 	 BA	  % 	&
 	 	KAx3 %!)AQVVXq)QXXs+T!Wh/QZZ(NN1%!)AQVVXq)QXXs+T!Wn5OOAJJ'NN1-		  	 s   F%%F/c                 &    | j                  d       y )Nztest_281.pickle)r  r~   s    r   	test_loadzPickleTests.test_load  s    )*r    c                     | j                         D ]{  }t        j                  t        j                  |            }| j	                  |j
                         | j	                  ||u        | j                  ||       | j                  |       } y r   )r@   r  r  r  rc   r`   ri   rf   rh   s      r   rh  zPickleTests.test_random  sp    %%' 	AV\\!_-AQZZ(Q!V$Q"NN1	r    N)rk   rx   ry   r  r  r   r  r  r#   r   r  r  r  r  r  rh  r   r    r   r  r    sM    	%,/.2 G_! !	$>L:+r    r  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
RichCompareTestsc                    t               }dD ]  }| j                  |j                  |      t               | j                  |j	                  |      t               | j                  |j                  |      t               | j                  |j                  |      t               | j                  |j                  |      t               | j                  |j                  |      t                y )N)Nr   r5  )	r   rV   __eq__NotImplemented__ne____ge____gt____le____lt__rD   r,   r   s      r   test_wrong_typesz!RichCompareTests.test_wrong_types'  s    J 	:AQXXa[.9QXXa[.9QXXa[.9QXXa[.9QXXa[.9QXXa[.9	:r    c                    dD ]  \  }}}t        || j                               }t        || j                               }t        |      }| j                  ||k(  |d          | j                  ||k7  |d          | j                  ||k\  |d          | j                  ||kD  |d          | j                  ||k  |d          | j                  ||k  |d           y )N))r   r   101010)r   r   r  )r  r  r  )r   r   r  )r  r   r  )r  r   r  )rr  rd  r  )r  r  r  )r   r  r  )r   r   r  )r   r  r  r   r'   rK   r;   r  rM   )r   r8   rV   )rD   sasbr   r,   re   re  s          r   rW  zRichCompareTests.test_explicit1  s    
 	+KBC T//12AT//12AAQ!VQqT*Q!VQqT*Q!VQqT*Q!VQqT*Q!VQqT*Q!VQqT*+	+r    c                    t        d      D ]N  }| j                  t        d      t        d      k(         | j                  t        d      t        d      k7         P t        dd      D ]  }t	        || j                               }t        || j                               }| j                  ||k(         | j                  ||k7         d|d<   | j                  ||k7         | j                  ||k(          y )NrM   r   r'   rI  rS   )r=   rY   r4   rc   r-   r8   r   r  s        r   
test_eq_nezRichCompareTests.test_eq_neI  s    q 	;AOOIaLIaL89Yq\Yq\9:	; q" 	%AQ**,-AD..01AOOAF#Q!V$AbEOOAF#Q!V$	%r    c                 L   | j                  d      D ]  }t        || j                               }| j                  ||k(         | j	                  ||k7         |j                  t        t        |                   | j                  ||k7         | j	                  ||k(          y rf  )r@   r   r8   rY   rc   invertr   rX   rh   s      r   test_eq_ne_randomz"RichCompareTests.test_eq_ne_randomW  s    %%A%. 	%AD..01AOOAF#Q!V$HHYs1v&'OOAF#Q!V$	%r    c                 $   | j                  ||k(  ||k(         | j                  ||k7  ||k7         | j                  ||k  ||k         | j                  ||k  ||k         | j                  ||k\  ||k\         | j                  ||kD  ||kD         y r   )rV   rD   r,   re   r  r   s        r   checkzRichCompareTests.check`  s    aa(aa(aa(aa(aa(aa(r    c                     | j                  d      D ]]  }t        |      }t        || j                               }t	        |      }|j                  |       | j                  ||||   ||          _ y rf  )r@   rX   r   r8   r   r  r  rz  s        r   test_invert_random_elementz+RichCompareTests.test_invert_random_elementh  sk    %%A%. 	)AAAD..01A!AHHQKJJq!QqT1Q4(	)r    c           	          t        d      D ]n  }t        t        d      | j                               }t        t        d      | j                               }| j	                  ||t        |      t        |             p y )Nr:   rI  )r=   r   r   r8   r  rX   )rD   r?   r,   re   s       r   	test_sizezRichCompareTests.test_sizep  sa    r 	-A2(:(:(<=A2(:(:(<=AJJq!SVSV,	-r    c                 @   | j                         D ]  }|j                         }t        d      rt        |      }| j                         D ]P  }|j                         }t        d      rt        |      }| j	                  ||||       | j	                  ||||       R  y r&   )r@   rB   r   r   r  )rD   r,   r`  re   bbs        r   rh  zRichCompareTests.test_randomv  s    %%' 		)AB1~"1%))+ )XXZq>&q)A

1aR(

1aR()			)r    N)rk   rx   ry   r
  rW  r  r  r  r  r  rh  r   r    r   r   r   %  s*    :+0%%))-
)r    r   c                   4    e Zd Zd Zd Z ee      d        Zy)SpecialMethodTestsc                    t        t                     }| j                  |d       | j                  t        |      t               t        t        d            }| j                  |d       | j                  t        |      t               | j                         D ]p  }| j                  t        |      t	        |             t        t        |            }| j                  ||u        | j                  ||       | j                  |       r y )Nz
bitarray()r  zbitarray('10111'))	rl   r   rV   r_   rp   r@   evalrc   rf   )rD   re  r,   re   s       r   	test_reprzSpecialMethodTests.test_repr  s    L)a#&'"#/0a#&%%' 	AT!Wc!f-T!WAQ!V$Q"NN1	r    c                    | j                         D ]  }|j                         }| j                  ||u        | j                  ||       t        j                  |      }| j                  ||u        | j                  ||       t        j                  |      }| j                  ||u        | j                  ||        y r   )r@   ry  rc   ri   deepcopyrh   s      r   	test_copyzSpecialMethodTests.test_copy  s    %%' 	#AAQ!V$Q"		!AQ!V$Q"a AQ!V$Q"	#r    c                 L   t               }t        j                  |      }| j                  ||j	                                | j                  t        |      t               | j                  |dk         t        d      }| j                  t        j                  |      dkD         y )Nr   @  r<   )r   r   	getsizeofrV   
__sizeof__r_   r   rY   )rD   r,   sizes      r   test_sizeofzSpecialMethodTests.test_sizeof  st    J}}Qq||~.dS)s
#TNa(4/0r    N)rk   rx   ry   r!  r$  r#   r   r*  r   r    r   r  r    s$     # G_1 1r    r  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)SequenceTestsc                 p    t        d      D ](  }t        |      }| j                  t        |      |       * y rd  )r=   r   rV   rX   r   s      r   test_lenzSequenceTests.test_len  s2    s 	(AASVQ'	(r    c           
         t        d      }|t        d      z   }| j                  |t        d             |g dz   }| j                  |t        d             |dz   }| j                  |t        d             |dz   }| j                  |t        d	             | j                  t        |j                  d
       | j                  |t        d             | j                  t
        |j                  d       | j                  t        |j                  d       | j                         D ]  }|j                         }| j                         D ]  }|j                         }||z   }| j                  |t        |j                         |j                         z                | j                  |j                  |j                         | j                  |       | j                  ||       | j                  ||         y )Nrs  r  001110r   r'   T001011rt  r  r'   r   T001101r   r  s   1101)r   ri   r   r   __add__r   r@   ry  rV   rB   r+   rf   )rD   r,   re   r`  r  r  s         r   test_concatzSequenceTests.test_concat  s   UOHX./HX./IHX./HX./*aii;HUO,)QYY3*aii9%%' 
	(AB))+ (VVXE  HQXXZ!((*-D$EF  1884q!  B'  B'(
	(r    c                    t        d      }|t        d      z  }| j                  |t        d             |g dz  }| j                  |t        d             |dz  }| j                  |t        d             |dz  }| j                  |t        d	             t        d      }| j                  t        |j                  g d
       | j                  |t        d             | j                  t
        |j                  d       | j                  t        |j                  d       | j                         D ]  }| j                         D ]  }t        |      }|}||z  }| j                  |||z          | j                  ||u        | j                  ||       | j                  |j                  |j                         | j                  |         y )Nrs  r  r0  r1  	001110011rt  001110011100r3  001110011100101r   r  s   101)r   rV   r   r   __iadd__r   r@   rY   ri   r+   rf   r  s        r   test_inplace_concatz!SequenceTests.test_inplace_concat  s   UO	Xe_HX./	\H[12	U
H^45	\H%678UO*ajj)<HUO,)QZZ4*ajj&9%%' 		"A))+ "QKQ  AE*Q'  A&  1884q!"		"r    c                    dD ]}  \  }}}t        |      }| j                  ||z  t        |             | j                  ||z  t        |             |j                         }||z  }| j                  |t        |              y )N))r   r   r   )r   1001111r   )rS   rs  r   )r|  r   r   )r'   r  r  )rK   r  r   )rM   r  11111)r   rV   ry  )rD   r   r
  re  r,   r  s         r   test_repeat_explicitz"SequenceTests.test_repeat_explicit  s|    
 	-GAq! AQUHQK0QUHQK0AFAQ,	-r    c                     t               }| j                  t        |j                  d        | j                  t        |j                  d       | j                  t        |j                  d        | j                  t        |j                  d       y )N       @g      @)r   r   r   __mul__r  rC   s     r   test_repeat_wrong_argsz$SequenceTests.test_repeat_wrong_args  sa    J)QYY5)QYY4)QZZ6)QZZ5r    c           
      <   | j                         D ]  }|j                         }t        t        dd            t	        dd      gz   D ]  }t        ||j                         z  |j                        }| j                  t        |      t        |      t        d|      z         | j                  ||z  |       | j                  ||z  |       |j                         }||z  }| j                  ||       | j                  |        | j                  ||        y )NrR  rM   r   rT   r   )r@   ry  r.  r=   r	   r   r   r+   rV   rX   r  ri   rf   )rD   r,   re   r   r   r  s         r   test_repeat_randomz SequenceTests.test_repeat_random  s    %%' 	#AA%A,'71c?*;; 
"q1668|AHH=  S3q6C1I+=>  Q,  Q,FFHQ  C(q!
" Q"	#r    c                    t               }| j                  d|v        | j                  d|v        | j                  t               |v        |j                  d       | j                  d|v        | j                  d|v        t        dg      }| j                  d|v        | j                  d|v        |j                  d       | j                  d|v        | j                  d|v        y Nr   r'   )r   rc   rY   rV  rC   s     r   test_contains_simplez"SequenceTests.test_contains_simple  s    Ja a 
a(	Qa aSMQa 	QQr    c                 B   t               }| j                  |j                  d      d       |j                  d       | j                  |j                  d      d       t        d      }| j                  |j                  t        d            d       | j                  |j                  t        d            d       | j	                  t
        |j                  d       | j	                  t        |j                  d       | j	                  t        |j                  d	       y )
Nr'   FT0011r  rd  asdfrK   rS   )r   rV   __contains__rV  r   r   r   rC   s     r   test_contains_errorsz"SequenceTests.test_contains_errors(  s    J*E2	*D1V7>7?)Q^^V<*anna8*annb9r    c                    t        dd      D ]  }t        |      }| j                  d|v        | j                  d|v        d|t	        |      <   | j                  d|v        | j                  d|v        |j                  d       | j                  d|v        | j                  d|v        d|t	        |      <   | j                  d|v        | j                  d|v         y )NrK   r   r   r'   TF)r=   r   rY   rc   r   r(   r   s      r   test_contains_rangez!SequenceTests.test_contains_range4  s    q" 	(AaAOOAF#Q!V$AilOOOAF#OOAF#HHQKOODAI&UaZ(AilOOODAI&OOEQJ'	(r    c                 n    t        d      }dD ]%  \  }}t        |      |v }| j                  ||u        ' y )N011010000001))r   Tr  T)rr  T)r  F)r*  T)0001T)00011F)r   rY   )rD   r,   r
  re  r  s        r   test_contains_explicitz$SequenceTests.test_contains_explicitC  sB    ^$F 	$DAq q AOOAF#		$r    N)rk   rx   ry   r.  r6  r<  r@  rD  rF  rI  rN  rP  rV  r   r    r   r,  r,    s4    (
(8":-"6#" 
:($r    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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y)NumberTestsc                 "   | j                         D ]|  }| }||z  }| j                  |j                         d       | j                  |||z         ||z  }| j                  |j                         d       ||z  }| j                  | |       ~ y )NFT)r@   rV   r   allr  s        r   	test_misczNumberTests.test_miscO  s    %%' 	$AAAAQUUWe,QA&AAQUUWd+FAaR#	$r    c                    t               }| j                  t        |      du        |j                  d       | j                  t        |      du        |j                  d       | j                  t        |      du        y )NFr   Tr'   )r   rY   r   rV  rC   s     r   	test_boolzNumberTests.test_boolZ  s\    JQ5()	Q4(	Q4(r    c                    t        d      t        d      | j                  t        fd       | j                  t        fd       | j                  t        fd       j                  j                  j
                  j                  j                  j                  fD ]  }| j                  t        |        y )N11001100111c                       z  S r   r   r,   re   s   r   r   z-NumberTests.test_size_error.<locals>.<lambda>e      a!e r    c                       z  S r   r   rb  s   r   r   z-NumberTests.test_size_error.<locals>.<lambda>f  rc  r    c                       z  S r   r   rb  s   r   r   z-NumberTests.test_size_error.<locals>.<lambda>g  rc  r    	r   r   r   __and____or____xor____iand____ior____ixor__rD   r   r,   re   s     @@r   test_size_errorzNumberTests.test_size_errorb  s    WX*m4*m4*m4))QXXqyy**aii5 	0Aj!Q/	0r    c                    t        dd      t        dd      | j                  t        fd       | j                  t        fd       | j                  t        fd       j                  j                  j
                  j                  j                  j                  fD ]  }| j                  t        |        y )Nr_  r1   10011r0   c                       z  S r   r   rb  s   r   r   z3NumberTests.test_endianness_error.<locals>.<lambda>o  rc  r    c                       z  S r   r   rb  s   r   r   z3NumberTests.test_endianness_error.<locals>.<lambda>p  rc  r    c                       z  S r   r   rb  s   r   r   z3NumberTests.test_endianness_error.<locals>.<lambda>q  rc  r    rf  rm  s     @@r   test_endianness_errorz!NumberTests.test_endianness_errorl  s    We$Wh'*m4*m4*m4))QXXqyy**aii5 	0Aj!Q/	0r    c                 d   t        d      t        d      }|z  }| j                  |t        d             | j                  |       | j                  t        fd       | j                  t        fd       | j                  t        d             | j                  |t        d             y )Nr_  rp  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   rw  s   r   r   z&NumberTests.test_and.<locals>.<lambda>~  rx  r    r   rV   rf   r   r   rD   re   r  r,   s      @r   test_andzNumberTests.test_andv      WWEHW-.q)]3)]3HW-.HW-.r    c                 d   t        d      t        d      }|z  }| j                  |t        d             | j                  |       | j                  t        fd       | j                  t        fd       | j                  t        d             | j                  |t        d             y )Nr_  rp  r  c                       dz  S r&   r   rw  s   r   r   z%NumberTests.test_or.<locals>.<lambda>  rx  r    c                      d z  S r&   r   rw  s   r   r   z%NumberTests.test_or.<locals>.<lambda>  rx  r    rz  r{  s      @r   test_orzNumberTests.test_or  r}  r    c                 d   t        d      t        d      }|z  }| j                  |t        d             | j                  |       | j                  t        fd       | j                  t        fd       | j                  t        d             | j                  |t        d             y )Nr_  rp  r  c                       dz  S r&   r   rw  s   r   r   z&NumberTests.test_xor.<locals>.<lambda>  rx  r    c                      d z  S r&   r   rw  s   r   r   z&NumberTests.test_xor.<locals>.<lambda>  rx  r    )r   ri   rf   r   r   rV   r{  s      @r   test_xorzNumberTests.test_xor  r}  r    c                 <   t        d      }t        d      }||z  }| j                  |t        d             | j                  |t        d             | j                  |       | j                  |       	 |dz  }| j                  d       y # t        $ r d}Y  w xY w)N	110010110	100110011	100010010r'   )r   rV   rf   r   rD   r,   re   errors       r   	test_iandzNumberTests.test_iand  s    [![!	QH[12H[12qq	FA 	"  	E	s   5B BBc                     t        d      }t        d      }||z  }| j                  |t        d             | j                  |t        d             	 |dz  }| j                  d       y # t        $ r d}Y  w xY w)Nr  r  	110110111r'   r   ri   r   rV   r  s       r   test_iorzNumberTests.test_ior      [![!	QH[12H[12	FA 	"  	E	   A+ +A98A9c                     t        d      }t        d      }||z  }| j                  |t        d             | j                  |t        d             	 |dz  }| j                  d       y # t        $ r d}Y  w xY w)Nr  r  	010100101r'   r  r  s       r   	test_ixorzNumberTests.test_ixor  r  r  c           	      *   | j                         D ]  }|j                         }| j                  ||z  |       | j                  ||z  |       | j                  ||z  t        t	        |      |j
                               | j                  ||        y r   )r@   ry  ri   r   rX   r+   r  s      r   test_bitwise_selfzNumberTests.test_bitwise_self  s    %%' 	$ABQUB'QUB'QUE#b'299$=>Q#	$r    c           	         | j                         D ]t  }|j                         }||z  }| j                  ||       ||z  }| j                  ||       ||z  }| j                  |t	        t        |      |j                               v y r   )r@   ry  ri   rV   r   rX   r+   r  s      r   test_bitwise_inplace_selfz%NumberTests.test_bitwise_inplace_self  s    %%' 	;ABFAQ#FAQ#FAQc"gryy 9:	;r    c                    t        d      }| }| j                  |t        d             | j                  |t        d             | j                  ||u        | j                  |       | j	                         D ]s  }t        |      }|j                          t        t        |            D ]  }| j                  ||   ||            | j                  |       | j                  | |       u y )Nr  r  )	r   ri   rc   rf   r@   r  r=   rX   rV   r  s       r   test_invertzNumberTests.test_invert  s    WBHW-.HW-.a q%%' 	$AAHHJ3q6] 1  11Q4x01NN1aR#	$r    c                    |t        |       k\  rt        t        |       | j                        S |dk(  r(t        || j                        | d t        |       |z
   z   S |dk(  r| |d  t        || j                        z   S t        d|z        )Nrightleftzinvalid direction: %s)rX   r   r+   r   )r,   r*   	directions      r   shiftzNumberTests.shift  s    A;Q**AHH%)3q6!844& QR55AHH---4y@AAr    c           	      x   t        d      dz  }| j                  |t        d             | j                  t        fd       | j                  t        j                  d       | j                  t
        fd       | j                  t        j                  d       | j                         D ]  j                         }t        t              dz         }|z  }| j                  t        |      t                     | j                  || j                  |d	             | j                  |        y )
Nr  rK   01100c                       dz  S Nr  r   rw  s   r   r   z)NumberTests.test_lshift.<locals>.<lambda>      Q#X r    r  c                       dz  S NrS   r   rw  s   r   r   z)NumberTests.test_lshift.<locals>.<lambda>      a2g r    r  r  r  )r   ri   r   r   
__lshift__r   r  r@   ry  r   rX   rV   r  rD   re   r  r*   r,   s       @r   test_lshiftzNumberTests.test_lshift  s    WFHW-.)%56)Q\\37*o6-w?%%' 	#AA#a&1*%AQASVSV,Q

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

1a 9:Q"	#r    c           	         t        d      }|dz  }| j                  |t        d             | j                  t        |j                  d       | j                  t
        |j                  d       | j                         D ]u  }|j                         }t        t        |      dz         }||z  }| j                  t        |      t        |             | j                  || j                  ||d             w y )N	110110101r   	010000000r  rR  r  r  )r   ri   r   r   __ilshift__r   r@   ry  r   rX   rV   r  rD   r,   re   r*   s       r   test_ilshiftzNumberTests.test_ilshift	  s    [!	aH[12)Q]]C8*ammR8%%' 	:AA#a&1*%A!GASVSV,Q

1a 89	:r    c           	         t        d      }|dz  }| j                  |t        d             | j                  t        |j                  d       | j                  t
        |j                  d       | j                         D ]u  }|j                         }t        t        |      dz         }||z  }| j                  t        |      t        |             | j                  || j                  ||d             w y )Nr  r;   	000110110r  ru  r  r  )r   ri   r   r   __irshift__r   r@   ry  r   rX   rV   r  r  s       r   test_irshiftzNumberTests.test_irshift	  s    [!	aH[12)Q]]C8*ammR8%%' 	;AA#a&1*%A!GASVSV,Q

1a 9:	;r    c                     t        ||      }| j                  t        |      |       |j                         }|dk(  r||z  }n||z  }| j	                  || j                  |||             y )Nr  )r4   rV   rX   ry  ri   r  )rD   r*   r+   n_shiftr  r,   re   s          r   check_randomzNumberTests.check_random+	  sd    a Q#FFH'MA'MADJJq'9=>r    c                     dD ]q  }dD ]j  }t        dd      D ]4  }| j                  ||d|       | j                  ||t        d|      |       6 t        dd      D ]  }| j                  d|||        l s y )NrG   )r  r  r   r   r'   r  )r=   r  r	   )rD   r+   r  r*   r  s        r   test_shift_rangezNumberTests.test_shift_range6	  s    % 	GF, G	q# KA%%aI>%%aA	JK  %Q} GG%%c67IFG	G	Gr    c                     | j                         D ]j  }|j                         }| j                  |dz  |       | j                  |dz	  |       |dz  }| j                  ||       |dz  }| j                  ||       l y r   )r@   ry  ri   r  s      r   test_zero_shiftzNumberTests.test_zero_shift?	  s    %%' 	$ABQ!VR(Q!VR(!GAQ#!GAQ#	$r    c                    | j                         D ]  }|j                         }t        t        |      |j                        }t        t        |      t        |      dz         }| j                  ||z  |       | j                  ||z	  |       | j                  ||       ||z  }| j                  ||       t        |      }||z  }| j                  ||        y Nr:   )r@   ry  r   rX   r+   r	   ri   r   )rD   r,   r  zr*   s        r   test_len_or_larger_shiftz$NumberTests.test_len_or_larger_shiftI	  s    %%' 	#AAc!fahh'AAA,AQ!VQ'Q!VQ'Q"!GAQ"A!GAQ"	#r    c                     t        d      }| j                  |dz  t        d             |dz  }| j                  |t        d             y )N0010011r;   0011000r  0000001r  rC   s     r   test_shift_examplezNumberTests.test_shift_exampleX	  sC    Ya)!45	aHY/0r    c                     t        d      }|dz  }| j                  |t        d             | j                  t        |      t                | j	                  t
        |j                  d       y )Nr  r;   r  r  )r   rV   r   r_   r   r   r  rh   s      r   r,  zNumberTests.test_frozenbitarray^	  sT    9%FHY/0a.1)Q]]A6r    c                 F   t        g d      }t        |d      }| j                  |j                         |ddxxx dz  ccc | j	                  |t        g d             |dd	xxx t        d
d      z  ccc | j	                  |t        g d             |dd xxx t        dd      z  ccc | j	                  |t        g d             |dd xxx t        dd      z  ccc | j	                  |t        g d             |dz  }| j	                  |t        g d             y )N)   r'   rK   r   r1   r   rR      r;   )r  rR   rR  r   r   r   z0000 1100 1)      rR  r      z1 1110 1110)r  r        rR  z1111 0000 1111 0000)r  r  rR     )r   r  r  rR  rn  rh   s      r   ro  zNumberTests.test_importede	  s    ./Ae,$	!BAI&>?@	!A(=%00I&>?@	"#(=%00I&>?@	"#(0%88I&>?@	aI&>?@r    N)rk   rx   ry   r[  r]  rn  rt  r|  r  r  r  r  r  r  r  r  rz   r  r  r  r  r  r  r  r  r  r  r,  r#   r   ro  r   r    r   rX  rX  M  s    	$)00
/
/
/#
#
#$;$  	B 	B#"# :;	?G$#17 G_A Ar    rX  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y)ExtendTestsc                     t               }| j                  t        |j                         dD ]#  }| j                  t        |j                  |       % | j	                  t        |      d       | j                  |       y )N)Nr'   Tr  g      ?r   )r   r   r   extendrV   rX   rf   r	  s      r   r7  zExtendTests.test_wrong_argsz	  sb    J)QXX.' 	6Ai15	6Q#qr    c                    t               }|j                  t                      | j                  |t                      |j                  t        d             | j                  |t        d             |j                  t        d             | j                  |t        d             t        dd      }|j                  t        dd             | j                  |t        d	             y )
Nr  1110z110 1110r   r0   rT   00100111r1   z00001111 00100111)r   r  rV   rC   s     r   test_bitarrayzExtendTests.test_bitarray	  s    J	HJ'	%!HUO,	&!"HZ01Z1	*U34H%89:r    c           	      $   | j                         D ]  }|j                         }| j                         D ]  }|j                         }t        |      }|j	                  |       | j                  |j                         ||j                         z          | j                  |j                  |j                         | j                  t        |      t        |      t        |      z          | j                  |       | j                  ||         y r   )
r@   r   ry  r   r  rV   r+   rX   rf   ri   )rD   r,   r  re   r  r  s         r   r  z ExtendTests.test_bitarray_random	  s    %%' 	(AB))+ 	(VVXQK  2	>:  1884  QQ#a&9q!  B'	(	(r    c                    t               }|j                  g        | j                  |t                      |j                  g d       | j                  |t        d             | j                  t        |j                  g d       | j                  t
        |j                  g d       | j                  |t        d             | j                         D ]g  }| j                         D ]R  }t        |      }|j                  |       | j                  |j                         ||z          | j                  |       T i y )N)r   r'   TFr  r   )r   r'   r,   )	r   r  rV   r   r   r   rE   rB   rf   r'  s       r   r   zExtendTests.test_list	  s    J	HJ'	$%HV,-*ahh	:)QXX{;HV,-!!# 	"A%%' "QK  QU3q!	"	"r    c                     t               }|j                  t        d             | j                  |t        d             | j	                  |       y )NrK   r  )r   r  r=   rV   rf   rC   s     r   r  zExtendTests.test_range	  s9    J	qHTN+qr    c                    g d}|t        |      t        |      t        |      t        j                  d|      fD ]d  }| j	                  t        |      d       t               }|j                  |       | j	                  |t        d             | j                  |       f |j                  d       |t        |      t        |      t        |      t        j                  d|      fD ]t  }| j	                  t        |      d       t               }| j                  t        |j                  |       | j	                  t        |      d       | j                  |       v y )N)r   r'   r   r'   r'   re   rM   01011rK   r   r   )r   ra   r   r   rV   rX   r   r  rf   rV  r   r   r   s       r   r   zExtendTests.test_sequence	  s   uSz5:y~++c3') 	ASVQ'
AHHQKQ 12NN1	 	

1uSz5:y~++c3') 	ASVQ'
Aj!((A6SVQ'NN1	r    c                 l   d }t        d      j                   |g d             | j                  t        d             | j                  t        j                   |g d             | j                  t
        j                   |g d             | j                  t        d             t               j                   |g d             | j                  d       | j                  t        j                   |g d	             | j                  t
        j                   |g d             | j                  d       | j                         D ]X  fd
}t               }|j                   |              | j                  |j                                | j                  |       Z y )Nc              3   "   K   | D ]  }|  y wr   r   )r   r   s     r   genz)ExtendTests.test_generator_1.<locals>.gen	  s         rK  )r   r'   FTr   z
0011 01010r   )r'   r   N)r   r'   r  s    )r   r'      c               3   $   K   D ]  } |   y wr   r   )rv   r,   s    r   r   z)ExtendTests.test_generator_1.<locals>.foo	  s      AGr   )
r   r  rV   r   r   r   r   rE   rB   rf   )rD   r  r   re   r,   s       @r   test_generator_1zExtendTests.test_generator_1	  sH   	 V	+,-H\23*ahhI?)QXXs</@AH\23K	[!"O,*ahhK0@A)QXXs</@AO,!!# 	A 
AHHSUOQXXZ+NN1	r    c                     d }t               g fD ]E  }| j                  t        |j                   |              | j	                  t        |      g d       G y )Nc               3   P   K   t        d      D ]  } | dk(  rt        | dz    y w)Nr:   r  rK   )r=   r   )r   s    r   r  z)ExtendTests.test_generator_2.<locals>.gen	  s.     2Y 6"N!es   $&)r   r'   r   r'   )r   r   r   r  rV   r.  )rD   r  r,   s      r   test_generator_2zExtendTests.test_generator_2	  sJ    	 R 	4Ah#%8T!Wl3	4r    c                    t               }|j                  t        g              | j                  |t                      |j                  t        g d             | j                  |t        d             | j	                  t
        |j                  t        g d             | j                  |t        d             | j                         D ]p  }| j                         D ][  }t        |      }|j                  t        |             | j                  |j                         ||z          | j                  |       ] r y )N)r'   r'   r   TF11010)r'   r'   r   r   rK   )	r   r  r   rV   r   r   rE   rB   rf   r'  s       r   test_iterator_1zExtendTests.test_iterator_1	  s    J	bHJ'	,-.HW-.*ahh_0EFHW-.!!# 	"A%%' "QKa!  QU3q!	"	"r    c                     t               }|j                  t        j                  dd             | j	                  |t        d             | j                  |       y )NTr  11111111111111111111111)r   r  r   r   rV   rf   rC   s     r   test_iterator_2zExtendTests.test_iterator_2	  sC    J	!!$+,HX./qr    c                     t        d      }d}t        |      D ]  \  }}|dk(  r|j                          |dz  }! | j                  |d       | j	                  |       y )Nr<   r   r:   r'   r|  )r   r\  r   rV   rf   )rD   r,   r  r   r   s        r   test_iterator_changez ExtendTests.test_iterator_change
  s^    TNaL 	DAqBw	FA	 	Bqr    c           	      R   t               }|j                  t                      |j                  d       | j                  |t                      |j                  d       | j                  |t        d             | j	                  t
        |j                  d       | j                  |t        d             t               }| j	                  t
        |j                  d       | j	                  t
        |j                  d       | j                  |t                      | j                         D ]x  }| j                         D ]c  }t        |      }|j                  dj                  d |D                     | j                  |t        ||z                | j                  |       e z y )Nr   01101110011201z01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101.z01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 c              3   2   K   | ]  }t        |        y wr   rp   )rL  r   s     r   rM  z,ExtendTests.test_string01.<locals>.<genexpr> 
  s      3AQ 3   )	r   r  rp   rV   r   r   rE   r	  rf   r'  s       r   r  zExtendTests.test_string01
  s>   J		HJ'	HY/0*ahh	:HY/0J*ahh0@A*ahh0ABHJ'!!# 	"A%%' "QK 3 334  HQUO4q!	"	"r    c                 2   t               }|j                  t               | j                  t	        |      d       |j                  d       | j                  |t        d             |dz  }| j                  |t        d             | j                  |       y )Nr   z0 1
01	01_010101z
_ 1
01	0z010101 1010)r   r  r   rV   rX   rf   rC   s     r   r  z$ExtendTests.test_string01_whitespace$
  sw    J	Q#	#$HX./	H]34qr    c                    dD ]<  }t        |      }|j                  |       | j                  |t        d|z               > | j                         D ]  }|j                  }|j                         }|j                  |       | j                  |j                         d|z         | j                  |j                  |       | j                  t        |      dt        |      z         | j                  |        y )N)r   r  r  00110111rK   )r   r  rV   r@   r+   r   rX   rf   )rD   r
  r,   r+   s       r   r  zExtendTests.test_self.
  s    + 	1AAHHQKQQ0	1
 %%' 	AXXFAHHQKQVVXq1u-QXXv.SVQQZ0NN1	r    N)rk   rx   ry   r7  r  r  r   r  r   r  r  r  r  r  r  r  r  r   r    r   r  r  x	  sH    ;(""&6	4" ".r    r  c                       e Zd Zd Zd Zy)AllAnyTestsc                    t               }| j                  |j                                dD ]/  \  }}| j                  t        |      j                         |u        1 | j                         D ],  }| j                  |j                         t        |      u        . t	        dd      }t        |      }| j                  |j                                d||dz
  <   | j                  |j                                y )N)r   FrS  )r  Fr<     r   r'   )r   rY   rZ  r@   r	   r-   rc   rD   r,   r
  re  Ns        r   test_allzAllAnyTests.test_allA
  s    J < 	4DAqOOHQKOO-23	4 %%' 	/AOOAEEGs1v-.	/ D$G !a%!r    c                    t               }| j                  |j                                dD ]/  \  }}| j                  t        |      j                         |u        1 | j	                         D ],  }| j                  |j                         t        |      u        . t        dd      }t        |      }| j                  |j                                d||dz
  <   | j                  |j                                y )N)r  rS  )r  Tr<   r  r'   )r   rc   r   rY   r@   r	   r   r  s        r   test_anyzAllAnyTests.test_anyP
  s    J!; 	4DAqOOHQKOO-23	4 %%' 	/AOOAEEGs1v-.	/ D$!H!!a% r    N)rk   rx   ry   r  r	  r   r    r   r  r  ?
  s    "!r    r  c                       e Zd Zd Zd Zd Zy)AppendTestsc                 P   t               }|j                  d       |j                  d       |j                  d       | j                  |t        d             |j                  d       |j                  d       | j                  |t        d             | j                  |       y )NTFrt  r   r'   r  )r   rV  ri   rf   rC   s     r   rw  zAppendTests.test_simplea
  su    J			HUO,		HW-.qr    c                 8   t        d      }| j                  t        |j                  d       | j                  t        |j                  d        | j                  t        |j                  d       | j                  |t        d             | j                  |       y )Nr  rK   r   )r   r   r   rV  r   ri   rf   rC   s     r   r7  zAppendTests.test_wrong_argsl
  so    W*ahh2)QXXt4)QXXr2HW-.qr    c                     t        d      }t        |j                        }t        t	        |            D ].  }|j                  ||          | j                  ||d |dz           0 | j                  |       y )Nr<   rT   r'   )r4   r   r+   r=   rX   rV  ri   rf   r  s       r   rh  zAppendTests.test_randomt
  sg    dOAHH%s1v 	)AHHQqTNQ$1Q3(	) 	qr    N)rk   rx   ry   rw  r7  rh  r   r    r   r  r  _
  s    	r    r  c                       e Zd Zd Zd Zy)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        |      ||<    | j	                  t        |      |       |j                         }| j	                  |dd |       | j	                  |j                  |j                         | j	                  |j                  |j                         | j	                  |j                  |j                         | j	                  |j                  |j                         | j	                  |j                  |        y )Nr|  r0   rT   r   )rK   r0   rM   rK   FFr   r1   r   rk  rK   )r;   r1   r   r   TTrK   r  rM   )r'   r1   r;   r'   TFrM   r'   rR   )r   r   r=   r  rV   rX   r[   rW   r+   rZ   r`   exports)rD   r,   viewsr   r   r   rd   s          r   test_valueszBufferInfoTests.test_values~
  s+    "X.57 v602  /13

 	2MAuc A5\ %!!}!%SVU+==?DT!AY,T[[!((3T[[!((3T\\1995T]]AJJ7T\\51-	2r    c                    t        d      }|j                         }| j                  t        |t                     | j                  t        |      t               | j                  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 ]9  \  }\  }}| j                  t        |      |       | j                  ||   |u        ; y )N9   rR   )r4   r[   rY   r  r   rV   r_   r   rX   r\  r^   r   rW   r+   rp   rZ   r]   r`   r   r\   r  )rD   r,   rd   r   rV  tps         r   r_  zBufferInfoTests.test_types
  s    bM}}
4/0dZ0TA&&s#c"c"s#S!%%s#	(
 	 	-MAzb T$Z,OODGtO,	-r    N)rk   rx   ry   r  r_  r   r    r   r  r  |
  s    22-r    r  c                       e Zd Zd Zd Zd Zy)InsertTestsc                 (   t        d      }|j                  dd       | j                  |t        d             |j                  dd       | j                  |t        d             |j                  dd       | j                  |t        d             y )N00111r   r'   z1 00111z01 00111rK   z	011 00111)r   insertrV   rC   s     r   r^  zInsertTests.test_basic
  sr    W	AHY/0	AHZ01	AH[12r    c                 |   t        d      }| j                  t        |j                  dd       | j                  t        |j                  dd        | j                  t        |j                         | j                  t        |j                  d        | j                  |t        d             | j                  |       y )N111100r   rK   )r   r   r   r  r   rV   rf   rC   s     r   test_errorszInsertTests.test_errors
  s    X*ahh15)QXXq$7)QXX.)QXXt4HX./qr    c                 x   | j                         D ]  }|j                         }t        d      D ]V  }t        d      }t	        t        |       dz
  t        |      dz         }|j                  ||       |j                  ||       X | j                  |j                         |       | j                  |        y )NrI  r'   rM   )	r@   rB   r=   r   r	   rX   r  rV   rf   )rD   r,   r`  r?   rV  poss         r   rh  zInsertTests.test_random
  s    %%' 	AB2Y %"1~s1vgk3q6A:6d#		#t$	%
 QXXZ,NN1	r    N)rk   rx   ry   r^  r  rh  r   r    r   r  r  
  s    3	r    r  c                       e Zd Zd Zd Zd Zy)	FillTestsc                    t        | j                               }| j                  |j                         d       | j                  t	        |      d       t        d| j                               }| j                  |j                         d       | j                  |t        d             | j                  |j                         d       | j                  |t        d             | j                  |       y )NrT   r   rD  rM   10100000)r   r8   rV   fillrX   rf   rC   s     r   rw  zFillTests.test_simple
  s    D..011%Q#UD..011%HZ011%HZ01qr    c                     t        d      }t        |      }t        |      }| j                  |j                         d       | j                  ||       | j                  |j                  d       y )Nr  r   r;   r'   )r   r  rV   r&  rW   rD   r,   re   r]  s       r   test_exportedzFillTests.test_exported
  sY    WAqM1%A1%r    c                    | j                         D ]  }|j                         }|j                         }| j                  d|cxk  xr dk  nc        | j                  |j                  dk(         | j                  t        |      dz  d       | j                  ||t        |      z          | j                  |j                  |j                         | j                  |        y )Nr   rR   )
r@   ry  r&  rY   rZ   rV   rX   r   r+   rf   )rD   r,   re   r   s       r   rh  zFillTests.test_random
  s    %%' 	AA&&(COOALqL)OOAIIN+SVaZ+QE#J/QXXqxx0NN1	r    N)rk   rx   ry   rw  r)  rh  r   r    r   r#  r#  
  s    
&	r    r#  c                   L    e Zd Zd Zd Zd Zd Zd Zd Z e	e
      d        Zy)	InvertTestsc                 p   t               }|j                          | j                  |t                      | j                  |       t        d      }|j                          | j                  |t        d             dD ]6  \  }}|j                  |       | j	                  |j                         |       8 y )Nr  r  ))r   10100)r  10101)rK   r  )rS   10000)rL   00000)r   r  ri   rf   rV   r   )rD   r,   r   r   s       r   rw  zInvertTests.test_simple
  s    J	
HJ'qW	
HW-.& 	,FAs
 HHQKQVVXs+	,r    c                    t        d      }| j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  dd       | j                  |j                                | j                  |       y )NrM   r  r5  r   r'   )r   r   rT  r  r   rc   r   rf   rC   s     r   r  zInvertTests.test_errors
  s    QK*ahh2*ahh3)QXXs3)QXXq!4!qr    c                    | j                  d      D ]j  }t        |      }|j                         }t        | |dz
        }||    ||<   |j	                  |       | j                  ||       | j                  |       l y rf  )r@   rX   ry  r	   r  ri   rf   rz  s        r   rh  zInvertTests.test_random  s{    %%A%. 	AAAAAE"At8AaDHHQKQ"NN1	r    c           
      `   | j                         D ]  }|j                         }|j                          | j                  |t	        |D cg c]  }|  c}             | j                  |j
                  |j
                         | j                  |       | j                  ||         y c c}w r   )r@   ry  r  rV   r   r+   rf   ri   r(  s       r   r  zInvertTests.test_all  s    %%' 	$AAHHJQ);Aa%); <=QXXqxx0NN1Q#	$ *<s   	
B+c                     | j                         D ]{  }t        |      }|j                         }t        d      D ]P  }t	        d|      }t	        ||      }|j                  t        ||             |||  ||| | j                  ||       R } y )Nr:   r   )r@   rX   ry  r=   r	   r  rN   rV   )rD   r,   r*   re   r?   r   r  s          r   	test_spanzInvertTests.test_span  s    %%' 	'AAAA2Y 'AqMAqMq!%Aa&!A  A&'	'r    c                     | j                         D ]j  }t        |      }|j                         }t        d      D ]?  }| j	                  |      }|j                  |       ||    ||<   | j                  ||       A l y r  )r@   rX   ry  r=   rP   r  ri   )rD   r,   r*   re   r?   r
  s         r   test_random_slicezInvertTests.test_random_slice%  s{    %%' 	'AAAA2Y '%%a(!u!  A&	'	'r    c                     t        g d      }t        |      }| j                  |j                         |j	                          | j                  |t        g d             y )N)r   r'   rK   r;   r|  r  r   )r        r     r   )r   r   rc   r`   r  rV   rh   s      r   ro  zInvertTests.test_imported/  sH    +,A$	
I&BCDr    N)rk   rx   ry   rw  r  rh  r  r6  r8  r#   r   ro  r   r    r   r,  r,  
  s:    ,"$	'' G_E Er    r,  c                   4    e Zd Zd Zd Z ee      d        Zy)	SortTestsc                 N   t        d      }|j                          | j                  |t        d             | j                  |       t        d      }|j                  d       | j                  |t        d             |j                  d       | j                  |t        d             |j                  d       | j                  |t        d             |j                  d       | j                  |t        d             | j	                  t
        |j                  d       y )N1101000r  Tr  1110000Fr5  )r   sortrV   rf   r   r   rC   s     r   rw  zSortTests.test_simple:  s    Y	HY/0qY	tHY/0	uHY/0	tHY/0	uHY/0)QVVS1r    c                 B   dD ]  }| j                         D ]  }|j                         }|!|j                          |j                          n$|j                  |       |j                  |       | j                  |t	        |             | j                  |         y )N)FTr   r'   r   rS   rZ  Nr  )r@   rB   rB  rV   r   rf   )rD   revr,   r   s       r   rh  zSortTests.test_randomL  s    5 
	"C))+ 	"hhj;HHJFFHHHSH)FF3F'  HSM2q!	"
	"r    c                    t        ddg      }t        d|      }| j                  |j                         |j	                          | j                  |j                         d       | j                  |t        ddg             y )No      r1   rk  r:   r;   r  )r   r   rc   r`   rB  rV   rb   rh   s      r   ro  zSortTests.test_importedY  sf    tTl#E!,$	B'ItTl34r    Nr  r   r    r   r>  r>  8  s$    2$" G_5 5r    r>  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)	PackTestsc                    t               }|j                  t                      | j                  |t                      |j                  d       | j                  |t        d             |j                  d       | j                  |t        d             |j                  d       | j                  |t        d             |j                  t	        g d             | j                  |t        d             | j                  |       y )	N    r      r  s    z01101)r'   r   r     z
01101 1011)r   packra   ri   r   rf   rC   s     r   test_pack_simplezPackTests.test_pack_simpleg  s    J	uwHJ'	wHSM*	wHTN+	HW-.	y123H\23qr    c                    t               }|j                  d       | j                  |t        d             |j                  t        ddg             | j                  |t        d             |j                  t	        d             | j                  |t        d             |j                  t        j
                  dg d	             | j                  |t        d
             | j                  |       y )N    r  r   rK   z01 01s    z01 01 10r^  )r   r     z01 01 10 011)r   rO  rV   r   r  r   rf   rC   s     r   test_pack_typeszPackTests.test_pack_typesu  s    J	yHTN+	y!Q !HW-.	z)$%HZ01	u{{3./H^45qr    c                     t        d      }t               }|j                  t        |             | j                  |t        d             | j                  |       y )Nz,00000000 00000001 10000000 11111111 00000000r   )r   rO  rV   rf   rD   re   r,   s      r   test_pack_bitarrayzPackTests.test_pack_bitarray  sE    CDJ	x{HW-.qr    c                 \    t               }| j                  t        d|j                  |       y N0cannot resize bitarray that is exporting buffers)r   rw   r  rO  rC   s     r   test_pack_selfzPackTests.test_pack_self  s&    J  >FFA	r    c                     t               }|j                  t        t        d                   | j	                  |j                         d       | j                  |       y )Nr     0111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111)r   rO  r   r=   rV   r   rf   rC   s     r   test_pack_allbyteszPackTests.test_pack_allbytes  s@    J	ys$%?3qr    c                     t               }| j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  ddg       y )Nr   r  r'   r;   )r   r   r   rO  rC   s     r   test_pack_errorszPackTests.test_pack_errors  sO    J)QVVQ/)QVVS1)QVVaV4r    c                    t        d      }| j                  t        |j                               t               | j                  |j                         d       | j                  |j                  d      d       | j                  |j                  dd      d       | j                  |j                  d	      d
       | j                  |j                  d      d       | j                  |j                  dd      d       y )Nr  rR  r   s   A   0   1s   01rL  ones    zero   t   fre  rg  s   ft)r   rV   r_   unpackra   rC   s     r   test_unpack_simplezPackTests.test_unpack_simple  s    TNahhj)51[1$2$-u5g.<t,h7d6>r    c                 4   | j                         D ]  }| j                  |j                  dd      |j                         j	                                t               }|j                  |j                                | j                  ||       t               }|j                  |j                  dd             |j                          | j                  ||       t               }|j                  |j                                | j                  ||        y )Nrb  rc  r  rK  )	r@   rV   rk  r   encoder   rO  r  r  rh   s      r   test_unpack_randomzPackTests.test_unpack_random  s    %%' 	#AQXXdD11668??3DE
AFF188:Q"
AFF188GW-.HHJQ"
AHHQXXZ Q"	#r    c                 :   t        d      }| j                  t        |j                  d       | j                  t        |j                  dd       | j                  t        |j                  dd       | j                  t        |j                  d       | j                  t        |j                  dd	       | j                  t        |j                  d
       | j                  t        |j                  d       | j                  t        |j                  dd       y )Nr  r    rb     a   brf  r   s   aarj  r   r,   rd  r  )r   r   r   rk  rC   s     r   test_unpack_errorszPackTests.test_unpack_errors  s    TN)QXXs3)QXXtS9)QXXt$?)QXX48)QXX5tD)QXXs3)QXX37)QXXtS9r    N)rk   rx   ry   rP  rT  rW  r[  r^  r`  rl  ro  rt  r   r    r   rI  rI  e  s/    5?#"	:r    rI  c                   *    e Zd Zd Zd Zd Zd Zd Zy)PopTestsc                 T   t        d      }| j                  t        d|j                  d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |t                      | j                  t        d|j                         y )Nr  zpop index out of rangerK   TFzpop from empty bitarray)r   rw   rT  poprV   rC   s     r   r^  zPopTests.test_basic  s|    TN  -E!"	+$'%(HJ'  -FNr    c                     dD ]`  \  }}}}t        |      }| j                  |j                  |      |u        | j                  |t        |             | j	                  |       b y )N))r  r   r'   r   )r   rS   r   r   )0011100r;   r'   r  )r   rY   rx  rV   rf   )rD   r   r*   re  r  r,   s         r   rw  zPopTests.test_simple  s^    8 	JAq!Q AOOAEE!HM*Q,NN1	r    c                 "   | j                         D ]|  }|j                         }t               }|r"|j                  |j	                                |r"| j                  |t                      |j                          | j                  ||       ~ y r   )r@   ry  r   rV  rx  rV   r  )rD   r,   r  re   s       r   r  zPopTests.test_reverse  sq    %%' 	#AA
A! Q
+IIKQ"	#r    c                    | j                         D ]  }| j                  t        |j                  t	        |             | j                  t        |j                  t	        |       dz
         t	        |      dk(  rj|j                         }|j                  }| j                  |j                         |d          | j                  |       | j                  |j                  |        y )Nr'   r   rS   )	r@   r   rT  rx  rX   rB   r+   rV   rf   )rD   r,   r`  endas       r   test_random_1zPopTests.test_random_1  s    %%' 		-Aj!%%Q8j!%%#a&1=1v{B88DQUUWbf-NN1QXXt,		-r    c                    | j                  d      D ]  }t        t        |       t        |            }|j                         }|j	                  |      }| j                  |||          | j                  t        |      t               |j	                  |      }| j                  |t        |             | j                  ||       | j                  |        y rf  )
r@   r   rX   rB   rx  rV   r_   r   r   rf   )rD   r,   r*   r`  r   r  s         r   test_random_2zPopTests.test_random_2  s    %%A%. 		A3q6'3q6*ABaAQ1&T!Wc*q	AQ-Q"NN1		r    N)rk   rx   ry   r^  rw  r  r~  r  r   r    r   rv  rv    s    O#
-
r    rv  c                   :    e Zd Zd Zd Zd Z ee      d        Zy)ReverseTestsc                     dD ]L  \  }}t        |      }|j                          | j                  |t        |             | j                  |       N y )N)
r   r   )r  r  )rd  r  )rs  rt  )r  r  )11100r  )011000000110)11011000011011)11110000r   )1111100001111000011111)r   r  ri   rf   rD   r   r  r,   s       r   rW  zReverseTests.test_explicit  sK    5 	DAq
 AIIKQ,NN1	r    c                 \    t        d      }| j                  t        |j                  d       y )Nr;   r  )r   r   r   r  rC   s     r   test_argumentzReverseTests.test_argument  s!    QK)QYY3r    c           	         | j                         D ]  }|j                         }|j                          | j                  |j	                         |j	                         d d d          | j                  |t        t        |      |j                               | j                  ||d d d          | j                  |        y )NrS   rT   )
r@   ry  r  rV   r   ri   r   reversedr+   rf   rh   s      r   rh  zReverseTests.test_random
  s    %%' 	AAIIKQVVXqvvx"~6Q!QXX FGQ$B$(NN1	r    c                     t        g d      }t        |      }| j                  |j                         |j	                          | j                  |t        g d             y )Nr   r'   rK   r;   r  r   )r  rS  @   r}  r   )r   r   rc   r`   r  rV   rh   s      r   ro  zReverseTests.test_imported  sH    '(A$			I&<=>r    N)	rk   rx   ry   rW  r  rh  r#   r   ro  r   r    r   r  r    s)    	4 G_? ?r    r  c                       e Zd Zd Zd Zd Zy)RemoveTestsc                     t        d      }dD ]B  \  }}|j                  |       | j                  |t        |             | j                  |       D y )Nr  ))F110110)T10110)r'   r  )r'   r  )r   rd  )r   r  )r'   r   )r   removeri   rf   )rD   r,   r)  r   s       r   rW  zRemoveTests.test_explicit  sN    Y, 	HC HHSMQ.NN1	r    c                 L   t        d      }|j                  d       | j                  |t        d             | j                  t        |j                  d       | j                  t
        |j                  d       | j                  |t        d             t               }dD ]#  }| j                  t
        |j                  |       % t        d      }| j                  t
        |j                  d       |j                  d       | j                  t
        |j                  d       y )Nr  r'   000011r5  r  TFr'   r   r   )r   r  ri   r   r   r   r   r(   r  s      r   r  zRemoveTests.test_errors'  s    Y	HX./)QXXs3*ahh3HX./J$ 	7Aj!((A6	7 "I*ahh2	*ahh2r    c                    | j                         D ]u  }|j                         }t        d      }||vr#|j                  |       |j                  |       | j	                  |j                         |       | j                  |       w y r&   )r@   rB   r   r  rV   rf   r(  s       r   rh  zRemoveTests.test_random8  sp    %%' 	A
AAAzHHQKHHQKQXXZ+NN1	r    N)rk   rx   ry   rW  r  rh  r   r    r   r  r    s    3"	r    r  c                   :    e Zd Zd Zd Zd Z ee      d        Zy)SetAllTestsc                    t        d      }|j                  d       | j                  t        |j                  d       | j                  t        |j                  d        | j                  |j                         d       |j                  d       | j                  |j                         d       | j                  |       y )NrM   TrS   r?  r   r1  )r4   r(   r   r   r   rV   r   rf   rC   s     r   rW  zSetAllTests.test_explicitE  s    aL	*ahh3)QXXt47+	7+qr    c                     t               }dD ]?  }|j                  |       | j                  t        |      d       | j	                  |       A y )Nr  r   )r   r(   rV   rX   rf   rD   r,   r]  s      r   
test_emptyzSetAllTests.test_emptyO  sC    J 	AHHQKSVQ'NN1	r    c                 B   | j                         D ]  }|j                  }t        d      }|j                  |       | j	                  |j                         t        |      t        |      z         | j	                  |j                  |       | j                  |        y r&   )	r@   r+   r   r(   rV   r   rX   rp   rf   )rD   r,   r+   r)  s       r   rh  zSetAllTests.test_randomV  sz    %%' 	AXXFa.CHHSMQVVXs1vC'89QXXv.NN1	r    c                     t        g d      }t        |      }| j                  |j                         |j	                  d       | j                  |t        g d             y )Nr{  r   r'   )r  r  r  r  )r   r   rc   r`   r(   rV   rh   s      r   ro  zSetAllTests.test_imported_  sI    l#A$	I&>?@r    N)	rk   rx   ry   rW  r  rh  r#   r   ro  r   r    r   r  r  C  s+     G_A Ar    r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)	To01Testsc           
         t               }| j                  |j                  d      d       t        d      }|j                         |j                  d      |j                  dd      |j                  dd      |j                  d      |j                  d      |j                  dd	      fD ]W  }| j                  t        |      t               | j                  t        |      t        |             | j                  |d       Y y )
Nr'   r   	100011110r   XgroupseprK   r  r  )r   rV   r   r_   rp   rX   r  s      r   test_no_groupingzTo01Tests.test_no_groupingj  s    JB'[!&&(AFF1Iqvva~qvva}&&q&/166c6?AFFF4KM 	-AT!Wc*SVSV,Q,		-r    c                    t        d      }| j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  d	      d
       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  dd      d       | j                  |j                  dd      d       y )Nz0000 1111 0011 0101r'   -z0-0-0-0-1-1-1-1-0-0-1-1-0-1-0-1rK   +r  z00+00+11+11+00+11+01+01r;   z000 011 110 011 010 1r  r?   r  0000_1111_0011_0101rM   .z00001.11100.11010.1r   r  z000011 110011 0101r   z0000111 1001101 01rR   z, z00001111, 00110101r   ABC000011110ABC0110101r  rC   s     r   test_exampleszTo01Tests.test_examplesu  s   *+3)JKs+-FG$;<aS13HIaS13HIa*>?$894*>?5)+@Ar    c                 j   t        d      }| j                  t        |j                  d        | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  dd        | j                  t        |j                  dd       y )Nr  rS   r  rs  rK      _)r   r   r   r   r   rC   s     r   r7  zTo01Tests.test_wrong_args  s    Y)QVVT2*affb1)QVV3)QVVQ5)QVVQ5r    c           	      P   | j                         D ]d  }dj                  d t        t        d            D              }| j	                  |j                  d|      |j                  d |D                     f t        d      }|j                  dd      }| j	                  |d	       y )
Nr   c              3   F   K   | ]  }t        t        d d              yw)r|  ~   N)chrr	   )rL  r?   s     r   rM  z%To01Tests.test_sep.<locals>.<genexpr>  s$      9 gb#./ 9s   !r:   r'   c              3   2   K   | ]  }t        |        y wr   r  )rL  r]  s     r   rM  z%To01Tests.test_sep.<locals>.<genexpr>  s     5Hc!f5Hr  11100111r;   u   ★u   111★001★11)r@   r	  r=   r   rV   r   r   )rD   r,   r  r
  s       r   test_sepzTo01Tests.test_sep  s    %%' 	JA'' 9#(2#79 9CQVVAs^SXX5Ha5H-HI	J
 Z FF1h23r    c                 p   | j                         D ]  }t        |      }t        d      }t        d      }|j                  ||dz        }| j	                  |t        |             |j                  d      }| j	                  t        |      ||z          | j	                  ||r|r||dz
  |z  z  nd        y )Nr:   r    r'   r   )r@   rX   r   r   rV   r   rb   )rD   r,   r*   r  nsepr
  nspaces          r   rh  zTo01Tests.test_random  s    %%' 		NAAAbMEQ<DudSj)AQ,WWS\FSVQZ0V:?ATa!e%561N		Nr    N)rk   rx   ry   r  r  r7  r  rh  r   r    r   r  r  h  s    	-
B6	4
Nr    r  c                   L    e Zd Zd Zd Zd Zd Zd Zd Z e	e
      d        Zy)	ByteReverseTestsc                     dD ];  \  }}t        |      }|j                          | j                  |t        |             = y )N)r  )1110110110110111)r  r  )z11011111 00100000 00011111z11111011 00000100 11111000)r   r&  rV   r  s       r   test_explicit_allz"ByteReverseTests.test_explicit_all  s?    5 	-DAq
 AMMOQ,	-r    c                    t        d      }|j                  dd       | j                  |t        d             |j                  dd       | j                  |t        d             |j                  d       | j                  |t        d             |j                  d       | j                  |t        d	             |j                  d
d       | j                  |t        d	             |j                  dd       | j                  |t        d             |j                  d       | j                  |t        d             | j                  t        |j                  d       | j                  t        |j                  dd       | j                  t        |j                  d       | j                  t        |j                  dd       y )Nz#11100000 00000011 00111111 11111000r   r'   z#00000111 00000011 00111111 11111000rS   z#00000111 11000000 11111100 11111000rK   z#00000111 11000000 00111111 00011111z#00000111 11000000 00111111 11111000r;   r  z#11100000 00000011 11111100 00011111rQ  rL   rM   )r   r&  rV   r   rT  rC   s     r   test_explicit_rangez$ByteReverseTests.test_explicit_range  s_   :;	aH%JKL	aH%JKL	aH%JKL	bH%JKL	aH%JKL	aH%JKL	bH%JKL*ammR8*ammQ;*ammQ7*ammQ:r    c                 Z   t        d      D ]  }t        t        |g            }| j                  t	        |      d       |j                         }|j                          | j                  ||d d d          |j                          | j                  ||       | j                  |        y )Nr  rR   rS   )	r=   r   r   rV   rX   ry  r&  r  rf   )rD   r   r,   re   s       r   r  zByteReverseTests.test_byte  s    s 	AA3(ASVQ'AMMOQ$B$(IIKQ"NN1	r    c                     | j                         D ]D  }|j                         }|j                          |j                          | j                  ||       F y r   )r@   ry  r&  ri   rh   s      r   test_consecutivez!ByteReverseTests.test_consecutive  sI    %%' 	#AA MMOMMOQ"	#r    c                    t        t        t        d            | j                               }|j	                          |j                         }| j                  |d d d       t        d      D ]  }t        d|z        }t        d|      }t        d|      }|j                         }|j                         || j                  |      t        |      || |j	                  ||       | j                  ||       | j                  |        y )Nr  r   s	    @ `r  rR   r   )r   r   r=   r8   r&  r   rV   r4   r	   ry  	translater  ri   rf   )rD   rH   tabler*   r,   r   r  re   s           r   rh  zByteReverseTests.test_random  s    YuSz*D,>,>,@A			r$KLs 	A!a% A1A1AA!"Qq!1!;!;E!BJqM!AMM!QQ"NN1	r    c                 &   t        d      D ]  }t        d|z        }|j                         }|j                          t	        || j                  |j                              }| j                  |j                         |j                                 y )NrI  rR   )	r=   r4   ry  r&  r   rI   r+   rV   r   r  s       r   r   zByteReverseTests.test_endian  sn    r 	7A!a% AAMMOD00:;AQYY[!))+6	7r    c                     t        g d      }t        |      }| j                  |j                         |j	                          | j                  |t        g d             y )Nr  r   )r   r}  r  rS  r  )r   r   rc   r`   r&  rV   rh   s      r   ro  zByteReverseTests.test_imported  sH    '(A$	I&<=>r    N)rk   rx   ry   r  r  r  r  rh  r   r#   r   ro  r   r    r   r  r    s8    -;,	# 7 G_? ?r    r  c                       e Zd Zd Zd Zd Zy)ToListTestsc                 X    t               }| j                  |j                         g        y r   )r   rV   rB   rC   s     r   r  zToListTests.test_empty  s    JR(r    c                     t        d      }|j                         }| j                  t        |      t               | j                  |g d       |D ]!  }| j                  t        |      t
               # y )Nr  )r'   r'   r   )r   rB   rV   r_   r.  r   )rD   r,   r   rV  s       r   rw  zToListTests.test_simple  s]    UOhhjcD)i( 	.DT$Z-	.r    c           
          | j                         D ]d  }|j                         }| j                  |t        |             | j                  ||j	                         D cg c]  }t        |       c}       f y c c}w r   )r@   rB   rV   r.  r   r   )rD   r,   r   r]  s       r   rh  zToListTests.test_random  sc    %%' 	>A((*CS$q'*S1668"<a3q6"<=	> #=s   A9N)rk   rx   ry   r  rw  rh  r   r    r   r  r    s    ).>r    r  c                       e Zd Zd Zd Zy)
ClearTestsc                 p    t        d      }|j                          | j                  t        |      d       y )N1110000001001000011111r   )r   r   rV   rX   rC   s     r   rw  zClearTests.test_simple  s*    -.		Q#r    c                    | j                         D ]w  }|j                  }|j                          | j                  |       | j	                  t        |      d       | j	                  |j                  |       | j                  |       y y r   )r@   r+   r   rc   rV   rX   rf   r+  s      r   rh  zClearTests.test_random  sn    %%' 	AXXFGGIQSVQ'QXXv.NN1	r    N)rk   rx   ry   rw  rh  r   r    r   r  r    s    $
r    r  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)
CountTestsc                 t   t        d      }| j                  |j                         d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  dddd	      d       | j                  |j                  t        d
            d       | j                  |j                  t        d            d       | j                  t        |j                  d       | j                  t        |j                  dddd       | j                  t
        |j                  d       | j                  t
        |j                  d       | j                  t
        |j                  dd       | j                  t
        |j                  ddd       | j                  t
        |j                  dd       | j                  t
        |j                  ddd       y )Nrp  r;   TFrK   r'   r   rM   rS   r   r  r   r5  rB  g      @)r   rV   rb   r   r   r   rC   s     r   r^  zCountTests.test_basic  s   WA&*+Q'Q'Aq"-q1#/3$0!4*aggq1*aggq!Q:)QWWb1)QWWc2)QWWa5)QWWaC8)QWWa5)QWWaC8r    c                    t        d      }| j                  t        |      d       | j                  |j                  t        d            d       | j                  |j                  t        d            d       | j                  |j                  t        d            d       | j                  |j                  t        d	            d       | j                  |j                  t        d	      d
      d       | j                  |j                  t        d	      d      d       | j                  |j                  t        d	      d      d       | j                  |j                  t        d	      dd      d       | j                  |j                  t        d      d      d       | j                  |j                  t        d      d      d       | j	                  t
        |j                  t        d      ddd       | j	                  t
        |j                  t        d      ddd       | j	                  t
        |j                  t        d      ddd       y )Nz10011000 1110000r   r   rR  r  r  rr  rK   r  rR   r'   rR  ru  rS   r   )r   rV   rX   rb   r   r   rC   s     r   test_subzCountTests.test_sub2  s   '(Q$".3$0!4$0!4%115%!4a8%"5q9%"5q9%!R8!<$4a8$4a8*aggx|QAF*aggx~q"aH*aggx~r1bIr    c           	      l   t        d      D ]  }t        d      }t        |      }|j                         }t        t        d            }|j                         }t	        | dz
  |dz         }t	        | dz
  |dz         }| j                  |j                  |||      |j                  |||              y )Nr<   r  rR   r:   )r=   r   r4   r   r	   rV   rb   )	rD   r?   r*   r,   r
  re   rH   r   r  s	            r   test_random_subzCountTests.test_random_subC  s    t 	AA#A!AA)A,'AARR(ARR(AQWWQ1-qwwq!Q/?@	Ar    c                     t        d      D ]m  }t        t        |g            }| j                  t	        |      d       | j                  |j                         t        |      dd  j                  d             o y )Nr  rR   rK   r  )r=   r   r   rV   rX   rb   bin)rD   r   r,   s      r   r  zCountTests.test_byteN  sd    s 	?AA3(ASVQ'QWWYAqr
(8(8(=>	?r    c           
      .   t        d      D ]  }t        |      }|j                         }dD ]e  }|j                  t	        |            }| j                  |j                  |      |       | j                  |j                  ||| dz
  d      |       g  y )Nr  r  r'   rS   )r=   r4   r   rb   rp   rV   )rD   r*   r,   r
  r]  refs         r   test_whole_rangezCountTests.test_whole_rangeT  s    s 	AA!AA Aggc!fo  S1  ArAvr!:C@A	Ar    c                 :   d}t        |      }t        t        t        |      d            }d|t	        |      <   | j                  |j                  d      t        |             | j                  |j                  d      |t        |      z
         t        d      D ]z  }t        |      t        |      t        fd|D              }| j                  |j                  d      |       | j                  |j                  d      z
  |z
         | y )N   r  ra  r'   r   r  c              3   @   K   | ]  }|cxk  rk  sn nd   ywr'   Nr   )rL  r   r   r  s     r   rM  z)CountTests.test_sparse.<locals>.<genexpr>h  s     7AAJQJa7s   
)
r   r/  r   r=   r.  rV   rb   rX   r   sum)rD   r*   r,   indicesr?   r  r   r  s         @@r   test_sparsezCountTests.test_sparse]  s    QKgeAh#./$w-S\2QW%56s 	<A!A!QA777CQWWQ1-s3QWWQ1-q1us{;	<r    c                 $   d}t        |      }|j                         }t        d      D ]  }t        |      }t        ||      }||| }|j	                  d      }|j	                  d      }	| j                  ||	z   ||z
         | j                  |j	                  d||      |       | j                  |j	                  d||      |	       ||| }
| j                  |
j	                  d      |       | j                  |
j	                  d      |	        y )Nr  r<   r   r  r   r'   )r4   r   r=   r   rb   rV   )rD   r*   r,   r
  r?   r   r  rH   c0c1re   s              r   
test_step1zCountTests.test_step1l  s    aLFFHt 	-A!A!QA!AABBR"Wa!e,QWWQ1-r2QWWQ1-r2!AAQWWQZ,QWWQZ,	-r    c                    t        d      }| j                  |j                         d       | j                  |j                  dd      d       | j                  |j                  dddd      d	       | j                  |j                  dddd      d       | j                  |j                  dd
dd      d       | j                  |j                  dd      d       | j                  |j                  ddd      d       | j                  |j                  dd	d      d       | j                  |j                  ddd      d       | j                  |j                  ddd      d       | j                  |j                  ddd      d       y )Nz01001100 01110011 01r   r   r  r;   r'      rK   r   r   r  rR  rL   r  r   r|  rS   rR   r   )r   rV   rb   rC   s     r   rW  zCountTests.test_explicit  sE   +,A&B+Ar1-q1Ar1-q1B2.2B+Ar*A.Ar*A.Ar*A.Ar*A.B+Q/r    c           	         t        d      D ]}  }t        |      }t        d      }| j                  |      }| j	                  |j                  ||j                  |j                  |j                        ||   j                  |              y )Nr  rK   )	r=   r4   r   rP   rV   rb   r>   r  rO   )rD   r*   r,   r]  r
  s        r   r8  zCountTests.test_random_slice  sq    s 	,A!A!A!!!$AQWWQ@qTZZ],		,r    c           	          d}t        d      D ]Z  }t        |d      }t        t        |      |d  d      }| j	                  |j                         |j                  dd|z               \ y )Nr  rI  r0   r   r'   rR   )r=   r4   r   r  rV   rb   )rD   r  r   r,   re   s        r   test_offest_bufferzCountTests.test_offest_buffer  sb    r 	;A!X&A
1ab 1(CAQWWY1q5(9:	;r    N)rk   rx   ry   r^  r  r  r  r  r  r  rW  r8  r  r   r    r   r  r    s7    9&J"	A?A<-(0,;r    r  c                   b    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y
)
IndexTestsc                 l   t               }dD ]D  }| j                  |j                  |      d       | j                  t        |j
                  |       F t        d      }| j                  t        |j                         | j                  t        |j                  dd       | j                  t        |j                  ddd       | j                  t        |j                  dddd       | j                  |j                  dd      d       | j                  t        |j
                  d       | j                  t        |j
                         | j                  t        |j
                  dd       | j                  t        |j
                  ddd       | j                  t        |j
                  dddd       y )	Nr  rS   r  r'   r,   r   Tr  )r   rV   findr   r   indexr   r   r  s      r   r  zIndexTests.test_errors  sH   J" 	6AQVVAY+j!''15	6 #J)QVV,)QVVQ4)QVVQ37)QVVQ3<.3*aggt4)QWW-)QWWa5)QWWaC8)QWWaC=r    c                    t        d      }dddddddd	d
|j                         ddddff
D ]  \  }}}}}t        || j                               }| j                  |j	                  ||||      |       |dk\  r%| j                  |j                  ||||      |       n#| j                  t        |j
                  |||       t        |      dk(  s| j                  |j	                  |d   |||      |        y )Nz10011000 101000)r   r   r}  r   r   )r   r   r  r   rS   )r   r   r  r   r'   )r  rR   r  r'   r:   )r  iru  r'   rR   )rr  r   r  r   r;   )rr  r  r  r   rS   )r  r   r  r'   rS   )rD  r   r  r'   rR   r   r  r'   )	r   r   r8   rV   r  r  r   r   rX   )rD   r,   subr>   r  r  r   re   s           r   rW  zIndexTests.test_explicit  s    &'(((((((((1b!a(-
 	H(CeS d0023AQVVAudE:C@ax  E4!?E!!*aggudEJ1v{  !eT5!A3G)	Hr    r   c                 j    || kD  ryt        ||d      }|j                  |       \  }}}||kD  ry|r|S |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.
        rS   r'   )rN   r  )r*   r>   r  r  r
  strides         r   
find_emptyzIndexTests.find_empty  sG     19%q!iiltV4<t'%'r    c                    t        dg      ddfD ]  }d|z  }| j                  t        |      d       t        d      D ]  }t	        dd      }||z  }| j                  t        |      |       | j                  t        |      t        |      cxk(  xr t        |      k(  nc        | j                  |j                  |      | j                  |             | j                  |j                  |      | j                  |d             t	        dd      }| j                  |j                  ||      | j                  ||             | j                  |j                  ||      | j                  ||d             t	        dd      }| j                  |j                  |||      | j                  |||             | j                  |j                  |||      | j                  |||d               y )	Nr   rK  r5  r   rM   r'   r   rL   )
r   rV   rX   r=   r	   rY   r_   r  r  rfind)rD   r   emptyr?   r*   r  r>   r  s           r   test_find_emptyzIndexTests.test_find_empty  s   A3+ 	EAEESZ+2Y EAqME  Q+Q4; A$q' AB  0BC  !1LMA  u!5!%E!:<  !6!%E!CE r1~  ud!;!%E4!@B  t!<!%E4!CE%E	Er    c           
         t               }t        d      D ]  }t        dd      }t        |      }t        d      }| j	                  |j                  ||      | j                  ||             t        dd      }| j	                  |j                  |||      | j                  |||             t        dd      }| j	                  |j                  ||||      | j                  ||||              y )Nr   r   rM   r'   r   rL   )r   r=   r	   r   rV   r  r  )rD   r
  r?   r*   r  r  r>   r  s           r   r  zIndexTests.test_empty  s     
r 	EA1AANEQVVEV7!__Qe_<> BNEQVVE5V>!__QU_CE 2q>DQVVE5$>!__QtUCE	Er    c                    d}t        |      }t        |      D ]7  }|j                  d       | j                  t        |j
                  d       | j                  |j                  d      d       d||<   | j                  |j                  d      |       | j                  |j                  d      |       |j                  d       | j                  t        |j
                  d       | j                  |j                  d      d       d||<   | j                  |j                  d      |       | j                  |j                  d      |       : y )N   r   r'   rS   )r   r=   r(   r   r   r  rV   r  )rD   r*   r,   r   s       r   test_range_explicitzIndexTests.test_range_explicit	  s   QKq 	+AHHQKj!''15QVVAY+AaDQWWQZ+QVVAY*HHQKj!''15QVVAY+AaDQWWQZ+QVVAY*	+r    c           	         t        d      D ]A  }t        dd      }t        |      }t        t	        t        |      d            }d||<   | j                  |j                  dd      |d          | j                  |j                  dd      |d          t        d|      }t        d|      }|D cg c]  }||cxk  r|k  sn n| }}|rP| j                  |j                  d||d      |d          | j                  |j                  d||d      |d          t        d      }	| j                  |j                  d|||	      d       D y c c}w )	Nr  r'   r   r   ra  r   r   rS   )	r=   r   r   r  r   rV   r  r	   r   )
rD   r?   r*   r,   plstr>   r  r   plst2r  s
             r   test_random_start_stopz!IndexTests.test_random_start_stop  s7   s 	DA!S!AaA'%(a01DAdGQVVAQV/a9QVVAQV/b:AqME1a=D $:1(9T(9Q:E:  5$!:E!HE  5$!:E"IF#A  5$!>C#	D ;s   3EEc           	         t        d      D ]  }t        dd      }t        |      }|j                         }| j	                  |j                  |      d       t        |      }t        t        d      | j                               }|j                         }| j	                  |j                  |      |j                  |             t        | dz
  |dz         }t        | dz
  |dz         }|j                  |||      }	|j                  |||      }
| j	                  |	dk(  |
dk(         | j	                  |j                  |||d      |	       | j	                  |j                  |||d      |
       t        |      dk(  sv|d   }| j                  |t        d      v        | j	                  |j                  |||d      |	       | j	                  |j                  |||d      |
        y )	Nr   r'   r  r   r:   rM   rS   rK   )r=   r   r4   r   rV   r  rX   r   r8   r	   r	  rY   )rD   r?   r*   r,   r
  re   rH   r   r  ref_lref_rr]  s               r   r  zIndexTests.test_random_sub/  s   s 	<A!S!A!AAQVVAY*AA2(:(:(<=AAQVVAYq	2QA&AQA&AFF1aOEGGAq!$EUb[%2+6QVVAq!Q/7QVVAq!Q/71v{aDU1X.  1a!3U;  1a!3U;1	<r    N)rk   rx   ry   r  rW  rz   r   r   r  r  r  r  r  r  r   r    r   r  r    sH    >&H0 CKKq ( (E4E&+$D(<r    r  c                   N    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y)SearchTestsc                 Z    t               }| j                  t        |j                  d       y )N
itersearchr   r   r  __getattribute__rC   s     r   test_no_itersearchzSearchTests.test_no_itersearchN  !    J.!*<*<lKr    c                 z   t               }ddddt        d      t        d      fD ],  }| j                  t        |j                  |            g        . t        d      }ddt        d      t        d      fD ]-  }| j                  t        |j                  |            d	g       / d
t        d      z  }| j                  t        |j                  d            g        | j                  t        |j                  d            t        t	        d
                   | j                  t        |j                  d       y )Nr   r'   FTr   r  r  rd  rK   r  r  )r   rV   r.  r5  r=   r   r   r  s      r   rw  zSearchTests.test_simpleS  s    JAudHSM8C=@ 	4AT!((1+.3	4 WD(3-$7 	5AT!((1+.4	5 (3-ahhqk*B/ahhqk*Ds,<=)QXXu5r    c                    t        d      }| j                  t        |j                  d       |j                  d      }| j	                  |d       | j                  t        |      d       | j                  t        |      d       | j                  t        |      d       | j                  t        t        |       t        d      }|j                  |      }~~| j                  t        |      d       y )	Nrp  r   r'   searchiteratorr   r;   r  rr  )r   r   r   r5  rm   rV   r  r  )rD   r,   r  r   s       r   test_search_nextzSearchTests.test_search_nextb  s    W)QXXr2XXa["./b1%b1%b1%-r2TNXXa[qb1%r    c                 X   t        d      }t               }| j                  t        |j                  |            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 ]4  \  }}}}| j                  t        |j                  ||||            |       6 y )Nrp  )r   r'   rK   r;   r  rM   r  r   r   r'   r  )r'   rK   r;   r  rR  rQ  rK   r;   rS   r   rV   r.  r5  )rD   r,   r
  r>   r  r  r   s          r   test_search_emptyzSearchTests.test_search_emptyp  s    W
ahhuo.0BCa./aL)RQF#aBaQC aBaQC aB	(
 	"#E4 T!((5%u"EF "	"r    c                 $   t        d| j                               }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 ]I  \  }}t        || j                               }| j                  t        |j	                  |            |       K y )Nrp  r   r'   rK   r  )r   r;   r  r  rr  r;   r  1001r   r*  rK  r`  )r   r8   rV   r.  r5  rD   r,   r
  r   re   s        r   test_explicit_1zSearchTests.test_explicit_1  s    Wd0023!Q(C+;!~D1#;}FQC=!~FQC=!~Hb>	; 	5FAs
 D..01AT!((1+.4	5r    c                     t        d      }dg dfdg dfdddgfd	g d
ffD ]:  \  }}t        |      }| j                  t        |j                  |            |       < y )Nz10010101 11001111 1001011r*  )r   r|  rI  r  )r   r  r}  r   r  rM      rt  )r   r   rR  r$  r(  s        r   test_explicit_2zSearchTests.test_explicit_2  sn    01{+/B(z*, 	5FAs AT!((1+.4	5r    c                     | j                         D ]  }|j                         }|j                  d       d|t        |j	                  d            <   | j                  ||       |j                  d       d|t        |j	                  d            <   | j                  ||       t        |j	                  d            t        |j	                  d            z  }| j                  t        |      t        |              y rH  )	r@   ry  r(   r.  r5  ri   r/  rV   rX   )rD   r,   re   r
  s       r   rm  zSearchTests.test_bool_random  s    %%' 	-AAHHQK#$Ad188A; Q"HHQK#$Ad188A; Q"AHHQK 3qxx{#33ASVSV,	-r    c                    | j                         D ]  }|rX| j                  t        |j                  |            dg       | j                  t        |j                  |d            dg       dD ]I  }t	        || j                               }t        t        |            D cg c]  }|||t        |      z    |k(  s| }}| j                  t        |j                  |            |       |j                  |      D ]#  }| j                  |||t        |      z    |       % | j                  t        |j                  |            |       |j                  |d      D ]#  }| j                  |||t        |      z    |       % | j                  t        |j                  |d            |d d d          L  y c c}w )Nr   r'   r   )r   r  r  r  rr  rD  r  r  rS   )r@   rV   r.  r5  r   r8   r=   rX   )rD   r,   r  re   r   r  r  s          r   rh  zSearchTests.test_random  s   %%' 	IA  ahhqk!2QC8  ahhqh&:!;aSAI IS$"4"4"67#(Q=IaAaCF
Oq4HII  ahhqk!2D9! 9A$$QqSV_a89  ahhqk!2D9!1- 9A$$QqSV_a89  ahhqh&:!;T$B$ZHI	I Js   %G?Gc                    t        d      D ]?  }t        dd      }t        |      }t        t        d            }t        |      }t        |      }||| }|r9t        t        |            D cg c]  }|||t        |      z    |k(  r||z    }	}nt	        t        ||dz               }	| j                  t        |	      |	       | j                  t	        |j                  |||            |	       t        |      dk(  r/| j                  t	        |j                  |d   ||            |	       |	rN| j                  |j                  |||d      |	d          | j                  |j                  |||d      |	d          |	j                          | j                  t	        |j                  |||d            |	       t        |      dk(  r0| j                  t	        |j                  |d   ||d            |	       | j                  ||v |rt        |	      nd       |	rt        d      }
| j                  |j                  ||||
      d       B y c c}w )Nr  r'   r   r:   r   rS   T)r=   r   r4   rX   r.  rV   r  r5  r  r  r   r   )rD   r?   r*   r,   re   r   r  r`  r   r  r  s              r   test_search_randomzSearchTests.test_search_random  s   s #	=A!R A!A)B-(A!A!A1QB',SW~ 2!aCF
+q0 A 2 2 E!QUO,VD\40T!((1a"34d;1v{  ahhqtQ&:!;TB  1a!3T!W=  1a!3T"X>LLNT!((1aA"67>1v{  ahhqtQ1&=!>E Q"WAd4j4@#A  1a!7<G#	=2s   . Ic                     dD ]j  }t        d      }t        d      }d}t        |j                  ||            D ]  \  }}|dk(  r|j                          |dz  }! | j	                  |d       l y )	Nr  r  r:   r   r   (   r'   )   )r   r\  r5  r   rV   rD   r  r,   re   r  r   r   s          r   r  z SearchTests.test_iterator_change  sx     	$Ec
Ab	AA!!((1E(":; 17GGIQ Q#	$r    c                     dD ]k  }t        d      }t        d      }d}t        |j                  ||            D ]   \  }}|dk(  r|j                  d       |dz  }" | j	                  |d       m y )Nr  r  r   r   rI  r'   r  )r   r\  r5  rV  rV   r4  s          r   test_iterator_change_subz$SearchTests.test_iterator_change_sub  sz     	$Ec
AaAA!!((1E(":; 17HHQKQ Q#	$r    N)rk   rx   ry   r  rw  r"  r%  r)  r,  rm  rh  r0  r  r6  r   r    r   r  r  L  s<    L
6&""55-I($=L	$	$r    r  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)
BytesTestsc                     t        dd      }|j                  d       | j                  |t        d             |j                  d       | j                  |t        dd             y )Nr  r1   r   z110 01000001s   BCz110 01000001 01000010 01000011rT   )r   	frombytesrV   ri   rC   s     r   test_frombytes_simplez BytesTests.test_frombytes_simple  sX    UE"	DH^45	EH%E,13 	4r    c                    t        d      }|j                  d       | j                  |t        d             |j                  t        dg             | j                  |t        d             |j                  t	        d             | j                  |t        d             |j                          t        j                  d	d
dg      }| j                  |j                  d       t        j                  dk(  r|j                          |j                  |       | j                  |t        d             | j                  |       dddddd g fD ]#  }| j                  t        |j                  |       % y )Nr1   rT   r   01000001r:  z01000001 11111110   Cz01000001 11111110 01000011Hi  r  rK   z#00001111 00000001 11111111 00000000r   r   r'   FT)r   r:  rV   r   r  r   r   itemsizer   r   byteswaprf   r   r   )rD   r,   arrr   s       r   test_frombytes_typeszBytesTests.test_frombytes_types  s%   E"	DHZ01	Ise$%H%89:	Jt$%H%ABC		kk#~.q)==E!LLN	CH%JKLqQ5$b0 	9Aia8	9r    c                 @   t        d| j                               }|j                  d       t        dd      }|j                  t        |             | j                  |j                  d       | j                  |j                         d       | j                  |       y )Nr   r   r1   )r   r8   r:  rV   r+   r   rf   rV  s      r   test_frombytes_bitarrayz"BytesTests.test_frombytes_bitarray  sw     Q**,-	FQ	HQK 5)f-qr    c                 \    t               }| j                  t        d|j                  |       y rY  )r   rw   r  r:  rC   s     r   test_frombytes_selfzBytesTests.test_frombytes_self   s&    J  KKK	r    c                    | j                         D ]r  }|j                         }|j                  d       |j                  t                      | j	                  ||       | j                  ||u        | j                  |       t y Nr    )r@   ry  r:  r   ri   rc   rf   rh   s      r   test_frombytes_emptyzBytesTests.test_frombytes_empty&  sm    %%' 	AAKKKK	$Q"Q!V$NN1	r    c                     t               }| j                  t        |j                         | j                  t        |j                  dd       | j                  t        |j                  d       | j	                  |       y )Nr    r'   )r   r   r   r:  rf   rC   s     r   test_frombytes_errorsz BytesTests.test_frombytes_errors/  sW    J)Q[[1)Q[[#s;)Q[[!4qr    c                    t        d      D ]  }t        j                  |      }t        d| j	                               }|j                  |       | j                  t        |      d|z         | j                         D ]y  }t        ||j                        }|j                  |       | j                  t        |      t        |      d|z  z          | j                  |||z          | j                  |       {  y )NrI  r   rR   )r=   r2   r3   r   r8   r:  rV   rX   r@   r+   rf   )rD   r*   r
  re   r,   r  s         r   test_frombytes_randomz BytesTests.test_frombytes_random6  s    r 
	"A

1AD..01AKKNSVQU+))+ "Q)A  QQ!a%8  AE*q!"
	"r    c                 X    t               }| j                  |j                         d       y rI  )r   rV   r   rC   s     r   test_tobytes_emptyzBytesTests.test_tobytes_emptyC  s    Jc*r    c                    t        | j                               }|j                  d       | j                  |j	                         d       t        d      D ]  }t        j                  |      }t        || j                               }| j                  t        |      d|z         | j                  |j	                         |       | j                  |        y )NrT   s   foorI  rR   )
r   r8   r:  rV   r   r=   r2   r3   rX   rf   )rD   r,   r*   r
  s       r   test_tobytes_endianzBytesTests.test_tobytes_endianG  s    D..01	Ff-r 	A

1A4#5#5#78ASVQU+QYY[!,NN1	r    c                 r    dD ]2  \  }}t        |d      }| j                  |j                         |       4 y )N))r'   r  )rK      )r;      )r  r  )rM      )r      ?)r      )rR   rL  )r  s   )r   s   )rR  s   )r  s   )r  s   r0   rT   )r-   rV   r   )rD   r*   r
  r,   s       r   test_tobytes_explicit_onesz%BytesTests.test_tobytes_explicit_onesS  s<    C 	-DAq Qx(AQYY[!,	-r    N)rk   rx   ry   r;  rC  rE  rG  rJ  rL  rN  rP  rR  rY  r   r    r   r8  r8    s4    49*
"+
-r    r8  c                       e Zd Zd Zd Zd Zy)DescriptorTestsc                     dD ]S  }t        d|      }| j                  |j                  |       | j                  t        |j                        t               U y )NrG   r  )r   rV   r+   r_   rp   r   s      r   r   zDescriptorTests.test_endian_  sI    % 	2FF+AQXXv.T!((^S1	2r    c                    t        d      D ]  }t        |      }| j                  |j                  t	        |             | j                  t        |j                        t               | j                  |j                  d|j                  z  |z
         | j                  d|j                  cxk  xr dk  nc        | j                  t        |j                        t                y )Nr   rR   r   )	r=   r   rV   rW   r   r_   r   rZ   rY   r   s      r   test_nbytes_padbitsz#DescriptorTests.test_nbytes_padbitse  s    r 	3AAQXXz!}5T!((^S1QYYAHHq(89OOA.Q./T!))_c2	3r    c                 @   t        d      }| j                  |j                         | j                  t	        |j                        t
               t        |      }| j                  |j                         | j                  t	        |j                        t
               y )Nr  )r   rc   r`   rV   r_   r   r   rY   rh   s      r   r  zDescriptorTests.test_readonlyp  si    UO$ajj)401

#ajj)40r    N)rk   rx   ry   r   r^  r  r   r    r   r[  r[  ]  s    2	31r    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 ee      d        Z ee	xs e      d        Z ee      d        Zy)	FileTestsc                     t        j                         | _        t        j                  j                  | j                  d      | _        y )Ntestfile)tempfilemkdtemptmpdirr2   r  r	  tmpfnamer~   s    r   setUpzFileTests.setUp}  s,    &&(T[[*=r    c                 B    t        j                  | j                         y r   )shutilrmtreerf  r~   s    r   tearDownzFileTests.tearDown  s    dkk"r    c                 z    t        | j                  d      5 }|j                         cd d d        S # 1 sw Y   y xY w)Nr  )r  rg  read)rD   r  s     r   	read_filezFileTests.read_file  s0    $--& 	"779	 	 	s   1:c                 v    | j                  t        j                  j                  | j                        |       y r   )rV   r2   r  getsizerg  )rD   r)  s     r   assertFileSizezFileTests.assertFileSize  s#    7>r    c                    t        | j                               D ci c]  \  }}||
 }}}t        | j                  d      5 }t	        j
                  ||       d d d        t        | j                  d      5 }t	        j                  |      }d d d        |j                         D ]  }| j                  ||   |           y c c}}w # 1 sw Y   qxY w# 1 sw Y   IxY w)Nwbr  )	r\  r@   r  rg  r  dumpr  keysri   )rD   r   r,   d1for  d2r   s           r   test_picklezFileTests.test_pickle  s    ()=)=)?@Atq!adAA$--& 	 "KKB	 $--& 	!"RB	!779 	/CRWbg.	/ B	  	 	! 	!s   CC
8C
CCc                    t        j                  | j                        }g }t        | j	                               D ](  \  }}t        |      }|||<   |j                  ||f       * |j                          t        j                  | j                        }|D ]  \  }}| j                  ||   |        |j                          y r   )	shelver  rg  r\  r@   rp   rV  closeri   )	rD   rw  storedr   r,   r   ry  r   r]  s	            r   test_shelvezFileTests.test_shelve  s    [['d2245 	$DAqa&CBsGMM3(#	$ 	
[[' 	'DAqRUA&	'

r    c                 `   t        | j                  d      5 }	 d d d        | j                  d       t               }t        | j                  d      5 }|j	                  |       d d d        | j                  |t                      | j                  |       y # 1 sw Y   xY w# 1 sw Y   AxY w)Nrt  r   r  )r  rg  rr  r   fromfilerV   rf   rD   rx  r,   r  s       r   test_fromfile_emptyzFileTests.test_fromfile_empty  s    $--& 	"	AJ$--& 	"JJrN	HJ'q	 	
	 	s   BB$B!$B-c                 *   t        | j                  d      5 }|j                  d       d d d        | j                  d       t	        d      }t        | j                  d      5 }|j                  |       d d d        | j                  |t	        d             t	        d      }t        | j                  d      5 }|j                  |       d d d        | j                  |t	        d	             y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   =xY w)
Nrt     Foor;   r1   rT   r  z01000110 01101111 01101111r0   01100010 11110110 11110110)r  rg  writerr  r   r  rV   r  s       r   test_fromfile_FoozFileTests.test_fromfile_Foo  s    $--& 	"HHV	AE"$--& 	"JJrN	H%ABCH%$--& 	"JJrN	H%ABC	 	
	 	
	 	s#   C1$C=;D	1C:=D	Dc                    t               }| j                  t        |j                         | j                  t        |j                  d       | j                  t        |j                  d       t        | j                  d      5 }|j                  d       d d d        t        | j                  d      5 }| j                  t        |j                  |d        d d d        y # 1 sw Y   KxY w# 1 sw Y   y xY w)Nr  r  rt  r   r  )r   r   r   r  r  r  rg  r  )rD   r,   rx  r  s       r   test_fromfile_wrong_argsz"FileTests.test_fromfile_wrong_args  s    J)QZZ0.!**b9.!**e<$--& 	"HHV	$--& 	?"iR>	? 	?	 		? 	?s   C3#C+C(+C4c                    t        | j                  d      5 }|j                  d       d d d        | j                  d       t	               }t        | j                  d      5 }| j                  t        d|j                  |       d d d        t        | j                  d      5 }| j                  t        d|j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   WxY w# 1 sw Y   y xY w)Nrt  s
   0123456789r:   rn  re  z).read() did not return 'bytes', got 'str')	r  rg  r  rr  r   rw   r   r  r   r  s       r   test_fromfile_errorszFileTests.test_fromfile_errors  s    $--& 	$"HH]#	$BJ$--& 	5"$$%96%&ZZ5	5 $--% 	K$$Y 1:;<::rK	K 	K	$ 	$
	5 	5	K 	Ks#   C"#C##C'CC$'C0c                     t               }t        |      }t        d      }d}| j                  t        ||j
                  |       y )Nd                                                                                                       rZ  )r   r  r   rw   r  r  )rD   r,   r]  r   rr   s        r   test_fromfile_exported_bufferz'FileTests.test_fromfile_exported_buffer  s9    JqMM"@  c1::qAr    c                 ~     G d d      }t               } |       }| j                  t        d|j                  |       y )Nc                       e Zd Zd Zy)7FileTests.test_frombytes_invalid_reader.<locals>.Readerc                      y)Nr  r   )rD   r*   s     r   rn  z<FileTests.test_frombytes_invalid_reader.<locals>.Reader.read  s    r    N)rk   rx   ry   rn  r   r    r   Readerr    s    r    r  z).read() did not return 'bytes', got 'int')r   rw   r   r  )rD   r  r,   r   s       r   test_frombytes_invalid_readerz'FileTests.test_frombytes_invalid_reader  s;    	 	 JH   -678zz1	Fr    c                 *   t        dd      D ]  }t        j                  |      }t        | j                  d      5 }|j                  |       d d d        t               }t        | j                  d      5 }|j                  |       d d d        | j                  t        |      d|z         | j                  |j                  |       | j                  |j                         |       | j                  |        y # 1 sw Y   xY w# 1 sw Y   xY w)N    rt  r  rR   )r=   r2   r3   r  rg  r  r   r  rV   rX   rW   r   rf   )rD   r  r  rx  r,   r  s         r   test_from_large_fileszFileTests.test_from_large_files  s    ue$ 	A::a=DdmmT* b 
AdmmT* b

2SVQU+QXXq)QYY[$/NN1	  s   C=5D	=D		D	c                    t        | j                  d      5 }|j                  d       d d d        d}t        d      D ]t  }t	        |dz  d      }t        | j                  d      5 }|j                  |       d d d        | j                  |t	        |dz  |z                | j                  |       v y # 1 sw Y   xY w# 1 sw Y   JxY w)	Nrt  r  r  rI  r  r0   rT   r  )r  rg  r  r=   r   r  rV   rf   )rD   rx  foo_ler*   r,   r  s         r   test_fromfile_extend_existingz'FileTests.test_fromfile_extend_existing  s    $--& 	"HHV	 .r 	AS2AdmmT* b

2QS6)9 :;NN1		 	 s   B6'C6B?C	c                    t        d      }t        | j                  d      5 }|j                  |       d d d        | j	                  d       t        | j                  d      5 }t               }|j                  |d       | j                  |j                         d       |j                  |d       | j                  |j                         d       |j                  d       |j                  |d       | j                  |j                         d	       t               }|j                  |d
       | j                  |j                         d       |j                  |d       | j                  |j                         d       |j                  |d       | j                  |j                         d       |j                  |       | j                  |j                         d       |j                  |       | j                  |j                         d       | j                  |       d d d        t               }t        | j                  d      5 }|j                  d       | j                  t        |j
                  |d       d d d        | j                  |j                         d       t               }t        | j                  d      5 }|j                  |d       | j                  |j                         d       | j                  t        |j
                  |d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Ns
   ABCDEFGHIJrt  r:   r  r   r    r'   r   s   ACrK   s   DEs   DEFs   DEFGHIJs	   BCDEFGHIJrS   )r   r  rg  tofilerr  r  rV   r   rn  rf   r   EOFError)rD   r,   rx  r   s       r   test_fromfile_nzFileTests.test_fromfile_n  s|   ]#$--& 	"HHRL	B$--& 	!
AJJq!t//		SAJJq!t//		TBFF1IJJq!t//		UC
AJJq!t//		UCJJq!t//		VDJJq!t//		VDJJqMt//		ZHJJqMt//		ZHNN1	 J$--& 	;!FF1Ih

Ar:	; 	l3J$--& 	:!JJq"QYY[-8h

Aq9		: 	:5	 		 		; 	;	: 	:s1   L*#GL74MAM*L47MMMc                    t        d      }t               }|j                  |d       | j                  t	        |      d       | j                  |j                         d       |j                  |       | j                  t	        |      d       | j                  |j                         d       | j                  |       y )Ns   somedatar  r|  s   somer  )r   r   r  rV   rX   r   rf   )rD   r   r,   s      r   test_fromfile_BytesIOzFileTests.test_fromfile_BytesIO$  s    K J	

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

1Q$k2qr    c                     t               }t        | j                  d      5 }|j                  |       d d d        | j	                  d       y # 1 sw Y   xY w)Nrt  r   )r   r  rg  r  rr  )rD   r,   r   s      r   test_tofile_emptyzFileTests.test_tofile_empty/  sI    J$--& 	!HHQK	 	A	 	s   AAc                 <   t        dd      }|j                         }t        | j                  d      5 }|j	                  |       d d d        | j                  ||       | j                  d       | j                  | j                         d       y # 1 sw Y   MxY w)Nz0100011 001101111 01101111r1   rT   rt  r;   r  )	r   ry  r  rg  r  ri   rr  rV   ro  )rD   r,   re   r   s       r   test_tofile_FoozFileTests.test_tofile_Foo6  s    1%@FFH$--& 	!HHQK	AA)62	 	s   BBc                 v   | j                         D ]  }t        | j                  d      5 }|j                  |       d d d        |j                  }| j                  |       | j                         }| j                  t        |      |       | j                  ||j                                 y # 1 sw Y   txY w)Nrt  )
r@   r  rg  r  rW   rr  ro  rV   rX   r   )rD   r,   rx  r*   raws        r   test_tofile_randomzFileTests.test_tofile_random@  s    %%' 	/AdmmT* bA".."CSXq)S!))+.	/ s   B//B8	c                 p   d}t        d|z        }| j                  t        |j                         t	        | j
                  d      5 }|j                  |       d d d        | j                  |       | j                  t        |j                         t	        | j
                  d      5 }| j                  t        |j                  |       d d d        t	        | j
                  d      5 }| j                  t        |j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   VxY w# 1 sw Y   y xY w)Nr  rR   rt  wr  )	r   r   r   r  r  rg  rr  r   rA  )rD   r*   r,   r   s       r   test_tofile_errorszFileTests.test_tofile_errorsJ  s    QUO)QXX.$--& 	!HHQK	A*ahh2$--% 	6i15	6 $--& 	6!i15	6 	6	 		6 	6	6 	6s$   D)"D )"D,D D),D5c                 d   d}t        d|z        }d|dd d<   t        | j                  d      5 }|j                  |       d d d        | j	                  |       | j                         }| j                  t        |      |       | j                  ||j                                y # 1 sw Y   fxY w)Ni rR   r'   rK   %   rt  )	r   r  rg  r  rr  ro  rV   rX   r   )rD   r*   r,   r   r  s        r   test_tofile_largezFileTests.test_tofile_large[  s    !a%L!%R%$--& 	!HHQK	AnnS1%aiik*	 	s   B&&B/c                    t        d      D ]  }|t        dd      z  }t        | j                  d      5 }|j	                  |       d d d        | j                         }| j                  t        |      |j                         |j                          t        |d      }| j                  ||        y # 1 sw Y   pxY w)NrI  r  r0   rT   rt  )
r=   r   r  rg  r  ro  rV   rX   rW   r&  )rD   r*   r,   rx  r  re   s         r   test_tofile_oneszFileTests.test_tofile_onesg  s    r 
	#AHS22AdmmT* b .."CSXqxx0FFHX.AQ"
	# s   B66B?	c                 R   t        t        d            t        t        dd            z   D ]z  }t        j                  |      }t	        |d      }| j                  |j                  |       t               }|j                  |       | j                  |j                         |       | y )Nr:   r  r  r1   )
r.  r=   r2   r3   r   rV   rW   r   r  getvalue)rD   r*   r  r,   r   s        r   test_tofile_BytesIOzFileTests.test_tofile_BytesIOt  s    eBi4eU(;#<< 	1A::a=Du%AQXXq)	AHHQKQZZ\40	1r    c                 r   t        | j                  d      5 }|j                  d       d d d        t        | j                  d      5 }t        j                  |j	                         d      5 }t        |d      }|j                         }| j                  |j                         | j                  |j                         | j                  |t        d             d|d d d	<   ~d d d        d d d        | j                  | j                         d
       y # 1 sw Y   xY w# 1 sw Y   >xY w# 1 sw Y   BxY w)Nrt  s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          r+br   r0   r   r&  TrK   s  UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU)r  rg  r  mmapfilenor   r[   rc   r`   rY   r\   rV   r   ro  )rD   rx  r   mappingr,   rd   s         r   	test_mmapzFileTests.test_mmap}  s    $--& 	#"HH\"	# $--' 
	1188:q) 	WGH=}}  /.  E$K0#A# 	
	 	)>:	# 	#	 	
	 
	s0   D%D-,A8D!$D-D!D*	&D--D6c                 H   t        | j                  d      5 }|j                  d       d d d        t        | j                  d      5 }t        t	        j                  |j                         d      d      }|j                         }| j                  |j                         | j                  |j                         | j                  |dt        d      z         d	|d d d
<   d d d        | j                  | j                         d       y # 1 sw Y   xY w# 1 sw Y   6xY w)Nrt  s  """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""r  r   r0   r   r<   z	0100 0100r'   r  s  3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333)r  rg  r  r   r  r  r[   rc   r`   rY   r\   rV   ro  )rD   rx  r   r,   rd   s        r   test_mmap_2zFileTests.test_mmap_2  s    $--& 	%"HH^$	% $--' 	1		!((*a 8JA==?DT]]+OODMM*Qx'< <=AccF	 	)>:	% 	%	 	s   DBDDD!c                    t        | j                  d      5 }|j                  d       d d d        t        | j                  d      5 }t        j                  |j	                         dt        j
                        }t        |d      }|j                         }| j                  |j                         | j                  |j                         | j                  t        d|j                  dd	       | j                  |d d
 dt        d      z         | j                  |d
d  j                         d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nrt  s  Veedonr  r   )accessr1   r   zcannot modify read-only memoryr'   i  i  z	1000 1001s   Veedon)r  rg  r  r  r  ACCESS_READr   r[   rY   r`   r\   rw   r   r   rV   r   )rD   rx  r  r   r,   rd   s         r   test_mmap_readonlyzFileTests.test_mmap_readonly  s   $--& 	0"HH./	0 $--& 
	?"		"))+q1A1ABA%0A==?DOODMM*OODMM*$$Y%E%&]]Aq: Qx[#0E*EFQwx[002I>
	? 
	?	0 	0
	? 
	?s   D?C/E?E	EN) rk   rx   ry   rh  rl  ro  rr  rz  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    r   ra  ra  {  s    >#?/ G_ 	D	?KBF :D	3/6"
+#1 G_; ;& Gw;  ; G_? ?r    ra  r  rs  r  0101010r,   r  re   0001100r  r  r   r  rv   r  r   010100g101000hr1  r   r  r  
0111101111r   00011010lr   r   r  r*   r'  or  10100100001001101r  1100r9  0001000111100011111
0000100011r  00011011110)r  qre  r
  rH   ur]  r  r   r  r  c                   h    e Zd Zd Zd Z ee      d        Zd Zd Z	d Z
d Z ee      d        Zy	)
DecodeTreeTestsc                 :   t        t              }| j                  t        |      t                | j	                  t
        t         d        | j	                  t
        t         d       t        t              }t               |d<   | j	                  t        t         |       y )Nr   r  )	r   alphabet_coderV   r_   r   r   r0  r   r   )rD   dtr   s      r   test_createzDecodeTreeTests.test_create  sk    &b:.)Z6)Z7#*j!4r    c                 4   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 ]  }| j                  t        t        |        y Nr   r  r,   re   r  r  rb  rr  r  )r   r   r   r   )rD   r   s     r   test_ambiguous_codez#DecodeTreeTests.test_ambiguous_code  sy    3-hsm(3-H4.x~HSMJ3-htn53-htn8E?K	
 	9A j*a8	9r    c                    t        dt        d      i      }| j                  dt        j                  |      cxk  xr dk  nc        t        dt        d      i      }| j                  t        j                  |      dkD         y )Nr  r  r   r  r,   rI  r   )r   r   rY   r   r'  r   rD   r  s     r   r*  zDecodeTreeTests.test_sizeof  sa    hsm,-CMM"-334eBi()b)C/0r    c                    t        dd      D ]Z  }t        dt        |      i      }| j                  |j	                         |dz          | j                  |j                                \ t        t        d      t        d      t        d      t        d      d      }| j                  |j	                         d	       t        t              }| j                  |j	                         d
       y )Nr'   rI  r,   r  r  rs  r  Ir  r,   r*   r   F   )	r=   r   r   rV   nodesrc   completer   r  )rD   r*   r  s      r   
test_nodeszDecodeTreeTests.test_nodes  s    q" 	,AS%(O,BRXXZQ/R[[]+	,
 hsmHTN&uoHUOE FQ'&R(r    c                 V   t        dt        d      i      }| j                  t        |j	                               t
               | j                  |j	                                t        t        d      t        d      d      }| j                  |j	                                t        t        d      t        d      d      }| j                  |j	                                t        t        d      t        d      t        d      d      }| j                  |j	                                y )Nr  r  r   rb  rr  rd  r  )r   r   rV   r_   r  r   rc   rY   r  s     r   test_completezDecodeTreeTests.test_complete  s    hsm,-bkkm,d3'hsm&sm- .&hsm&tn. /'hsm&tn&tn. / 	&r    c                     t        t              }|j                         }| j                  t	        |      t
               | j                  |t               y r   )r   r  todictrV   r_   r0  )rD   rH   r   s      r   test_todictzDecodeTreeTests.test_todict  s;    }%HHJa$'M*r    c                 z   t        t              }t        d      }| j                  t	        |j                  |            g d       | j                  dj                  |j                  |            d       t               }| j                  t	        |j                  |            g        | j                  |       y )Nz1011 01110 0110 1001)r   r  r,   r*   r   ilan)r   r  r   rV   r.  decoder	  rf   )rD   rH   r,   s      r   test_decodezDecodeTreeTests.test_decode  s    }%+,ahhqk*,@A!-v6Jahhqk*B/qr    c           
         t        d      D ci c]   t        fdt        d      D              " }}t        |      }| j                  |j	                         |       | j                  |j                         d       | j                  |j                                | j                  t        j                  |      dkD         y c c}w )Nr  c              3   @   K   | ]  }t        d |z  z          ywr  )r   )rL  r  r   s     r   rM  z-DecodeTreeTests.test_large.<locals>.<genexpr>  s     ?qAvl+?s   r:   i  '  )
r=   r   r   rV   r  r  rY   r  r   r'  )rD   r   r   rH   s    `  r   
test_largezDecodeTreeTests.test_large  s     Dk# ?U2Y??? # #qMQ'D)

%a(501#s   %C	N)rk   rx   ry   r  r  r#   r   r*  r  r  r  r  r  r   r    r   r  r    sP    59 G_1 1
)'$+ G_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 Zd Zy)PrefixCodeTestsc                     t               }|j                  t        d       | j                  |t                      |j                  t        d       | j                  |t        d             y )Nr   r,   r  r   rn  r  rV   rC   s     r   test_encode_stringz"PrefixCodeTests.test_encode_string  sL    J	#HJ'	$HV,-r    c                     t               }|j                  t        g        | j                  |t                      |j                  t        dg       | j                  |t        d             y )Nrv   r  r  rC   s     r   test_encode_listz PrefixCodeTests.test_encode_list"  sM    J	#HJ'	&HUO,r    c                    t               }t        d      t        d      d}|j                  |t        g d             | j                  |t        d             d }|j	                          |j                  | |              |j                  |t        d             | j                  |t        d             | j                  |t        d      t        d      d       y )	Nr   r  r  )r   r'   r'   r   r  c               3   "   K   dD ]  } |   y w)N)r'   r'   r   r   r'   r'   r   )r  s    r   r   z-PrefixCodeTests.test_encode_iter.<locals>.foo/  s     % r  rK   11001101)r   rn  r   rV   r   r=   )rD   r,   r   r   s       r   test_encode_iterz PrefixCodeTests.test_encode_iter)  s    J(3-0	D&'HV,-	 	
		CE	E!HHZ01(3-@Ar    c                 "   t        t              }t               }|j                  |d       | j	                  |t        d             | j                  t        |j                  |d       d}| j                  t        ||j                  |d dg       y )Nisz	1011 1100ilAnz'symbol not defined in prefix code: NonerK   )r0  r  r   rn  rV   r   r   rw   )rD   r   r,   rr   s       r   test_encode_symbol_not_in_codez.PrefixCodeTests.test_encode_symbol_not_in_code9  sq    J	DH[12*ahh6:7  S!((AayIr    c                     t               }dt        d      i}d }| j                  t        |j                  | |              y )Nr,   r   c               3   >   K    t        ddd d d              y w)Nr  r   c                      yr  r   r
  s    r   r   zKPrefixCodeTests.test_encode_symbol_ref_count.<locals>.gen.<locals>.<lambda>H  r   r    c                      y)NzX()r   r  s    r   r   zKPrefixCodeTests.test_encode_symbol_ref_count.<locals>.gen.<locals>.<lambda>I  r   r    )__hash____repr__)r_   r   r    r   r  z9PrefixCodeTests.test_encode_symbol_ref_count.<locals>.genF  s+     $sB(+!   s   )r   r   r   rn  )rD   r,   codedictr  s       r   test_encode_symbol_ref_countz,PrefixCodeTests.test_encode_symbol_ref_countB  s8    J#'	
 	*ahh#%@r    c                     t               }dt        d      i} G d d      }| j                  t        |j                  | |       g       y )Nr,   r   c                       e Zd Zd Zy)CPrefixCodeTests.test_encode_swallowed_exception.<locals>.Unhashablec                     t        d      )NzOOM in __hash__)r  r~   s    r   r
  zLPrefixCodeTests.test_encode_swallowed_exception.<locals>.Unhashable.__hash__Q  s    !"344r    N)rk   rx   ry   r
  r   r    r   
Unhashabler  P  s    5r    r  )r   r   r  rn  )rD   r,   r  r  s       r   test_encode_swallowed_exceptionz/PrefixCodeTests.test_encode_swallowed_exceptionM  s?    J#'	5 	5 	+qxxJL>Jr    c                 l   t        d      t        d      d}t               }|j                  |d       | j                  t        |j                  |d       | j                  t        |j                  |d       | j                  t        |j                  |d        | j	                  |t        d             y )Nr   r  rb  abbar  g?r  )r   rn  r   r   rV   rD   r   r,   s      r   test_encode_not_iterablez(PrefixCodeTests.test_encode_not_iterableV  s    3-hsm4J	F)QXXq"5)QXXq#6)QXXq$7HV,-r    c                 v   t               }| j                  t        |j                  d d       | j                  t        |j                  i d       | j                  t        |j                  ddid       | j                  t        |j                  dt               id       | j                  t        |      d       y )Nr   r,   re   r   )r   r   r   rn  r   rV   rX   rC   s     r   test_check_codedict_encodez*PrefixCodeTests.test_check_codedict_encode_  s    J)QXXtR8*ahhB7)QXXSz3?*ahhhj0A3GQ#r    c                    t        d      }| j                  t        |j                  d       | j                  t        |j                  i        | j                  t        |j                  ddi       | j                  t        |j                  dg i       | j                  t        |j                  dt               i       | j                  |t        d             y )N1100101r   r,   r  )r   r   r   r  r   rV   rC   s     r   test_check_codedict_decodez*PrefixCodeTests.test_check_codedict_decodeg  s    Y)QXXq1*ahh3)QXXRy9)QXXRy9*ahhhj0ABHY/0r    c                 Z    t               }| j                  t        |j                  d       y )N
iterdecoder  rC   s     r   test_no_iterdecodez"PrefixCodeTests.test_no_iterdecodep  r  r    c                 J   t        d      t        d      t        d      t        d      d}t        |      }t        d      }t        d      }| j                  t        |j	                  |            |       | j                  ||       | j                  |t        d             y )Nr  r  rs  r  r  	101001000Ilan)r   r0  r.  rV   r  )rD   r   dcopyr,   r   s        r   test_decode_simplez"PrefixCodeTests.test_decode_simpleu  s    3-5/9Q[!6lahhqk*C0E"H[12r    c                     t        d      }|j                  t              }| j                  |d       | j	                  t        |      dg       y )Nr  decodeiteratorr,   )r   r  r  rm   rV   r.  )rD   r,   r  s      r   test_decode_typez PrefixCodeTests.test_decode_type  sA    VXXm$"./bC5)r    c                 R   t        d      t        d      t        d      t        d      d}t        |      }t        d      }|j                  |      }~| j                  dj	                  |      d       |j                  |      }~| j                  dj	                  |      d       y )	Nr  r  rs  r  r  r!  r   r"  )r   r   r  rV   r	  )rD   r   rH   r,   r  s        r   test_decode_removez"PrefixCodeTests.test_decode_remove  s    3-5/9qM[!XXa[f-XXa[f-r    c                     dt        d      i}t               }| j                  t        |j                  |            g        | j                  |dt        d      i       | j                  t	        |      d       y )Nr,   r  r   )r   rV   r.  r  rX   r  s      r   test_decode_emptyz!PrefixCodeTests.test_decode_empty  sa    (3- Jahhqk*B/S(3-01Q#r    c                 P   t        d      t        d      d}t        d      }d}| j                  t        |t        |j	                  |             |j	                  |      }| j                  |d       | j                  t        |t        |       t        |      }| j                  t        |t        |j	                  |             | j                  |t        d             | j                  |t        d      t        d      d       | j                  |j                         |       y )Nr   r  rb  rU  z$incomplete prefix code at position 3r&  )	r   rw   r   r.  r  rm   r   rV   r  )rD   r   r,   rr   r  rH   s         r   test_decode_incompletez&PrefixCodeTests.test_decode_incomplete  s    3-huo6W4  S$DXXa["./  S$;qM  S$DHW-.(3-huoFGQ'r    c                     t               }|j                  t        d       t        |      }|j	                  d       d|z  }| j                  t        |t        |j                  t                     y )Nznow we riser  z%incomplete prefix code at position %d)	r   rn  r  rX   r  rw   r   r.  r  )rD   r,   r   rr   s       r   test_decode_incomplete_2z(PrefixCodeTests.test_decode_incomplete_2  sV    J	.F	59  S!%qxx'>	@r    c                    t        d      t        d      d}t        d      }|j                  |      }| j                  t        |      d       | j	                  t
        dt        |       | j                  |t        d             y )Nr   r  rb  r*  r,   z$incomplete prefix code at position 1)r   r  rV   r  rw   r   rD   r   r,   r  s       r   test_decode_no_termz#PrefixCodeTests.test_decode_no_term  sl    3-huo6UOXXa[b3'  !G!%r	+ 	HUO,r    c                 `   t        t              }t        d      }d}| j                  t        |t
        |j                  |             t        |      }| j                  t        |t
        |j                  |             | j                  |       | j                  |j                         |       y )Nz!1011 1100 0100 011110111001101001z9prefix code unrecognized in bitarray at position 12 .. 21)r0  r  r   rw   r   r.  r  r   rf   rV   r  )rD   r   r,   rr   rH   s        r   test_decode_buggybitarrayz)PrefixCodeTests.test_decode_buggybitarray  s    89I  S$DqM  S$DqQ'r    c                     dt        d      i}t        d      }|j                  |      }| j                  t        t        |       | j                  |t        d             | j                  |dt        d      i       y )Nr,   r   r  )r   r  r   r   r  rV   r1  s       r   test_decode_buggybitarray2z*PrefixCodeTests.test_decode_buggybitarray2  se    (3- SMXXa[*dB/HSM*S(3-01r    c                    t        d      t        d      d}t        d      }| j                  t        t        |j	                  |             t        |      }| j                  t        t        |j	                  |             | j                  |t        d             | j                  |t        d      t        d      d       | j                  |j                         |       y )Nr  r  rb  r  )r   r   r   r  r  r   rV   r  )rD   r   r,   rH   s       r   test_decode_buggybitarray3z*PrefixCodeTests.test_decode_buggybitarray3  s    4.x~6SM*dAHHQK8qM*dAHHQK8HSM*(4.x~FGQ'r    c                    t        j                  d      }t        j                  d      }t        t              }| j	                         D ]  }	 |j                  |        y # t        $ r}t        |      }|j                  |      }|j                  |      }| j                  |xr |       |rt        |j                  d            }	|r\t        |j                  d            t        |j                  d            }
}	| j                  ||	|
 t        j                         v        |d 	 j                  |       Y d }~d }~ww xY w)Nzincomplete prefix code.+\s(\d+)z0prefix code unrecognized.+\s(\d+)\s*\.\.\s*(\d+)r'   rK   )recompiler   r  r@   r  r   rp   matchrc   r   r  values)rD   pat1pat2rH   r,   rv   rr   m1m2r   r  s              r   test_decode_randomz"PrefixCodeTests.test_decode_random  s	   zz<=zzMN}%%%' 	 A 	   
 !fZZ_ZZ_  +BHHQK(Arxx{+S!-=qA$$QqV}/C/C/E%EF"1Q
 s   A""	E+CE  Ec                 v   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               }| j                  t        |j                  |       | j	                  |       @ y r  )r   r   r   r  rf   r  s      r   test_decode_ambiguous_codez*PrefixCodeTests.test_decode_ambiguous_code  s    3-hsm(3-H4.x~HSMJ3-htn53-htn8E?K	
 	A 
Aj!((A6NN1	r    c                    t        d      t        d      t        d      t        d      t        d      d}t               }|j                  |g d       | j                  |t        d             | j                  t        |j	                  |            g d       |j	                  |      }| j                  t        |      d u        | j                  t        |      d       | j                  t        |      d	       | j                  t        |      d
       | j                  t        |      d       | j                  t        t        |       y )Nr  r  r  r  r*  )Nr   r'   r   rK   00110111010011r   r'   r   rK   )	r   rn  rV   r.  r  rY   r  r   r  r1  s       r   test_miscitemszPrefixCodeTests.test_miscitems  s    TNUOUOUOUO	%
 J	'(H%567ahhqk*,?@XXa[RD()b1%b1%b2&b1%-r2r    c                    t               }d}|j                  t        |       | j                  |t        d             | j                  dj	                  |j                  t                    |       t        t              }| j                  dj	                  |j                  |            |       | j                  |       y )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   rn  r  rV   r	  r  r   rf   )rD   r,   messagerH   s       r   test_quick_examplez"PrefixCodeTests.test_quick_example  s    J@	(H(
) 
	* 	-!897C}%!-w7qr    N)rk   rx   ry   r  r  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    s    .-B J	AK.$1L
3*.$(@-
(2
( &	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y)BufferImportTestsc                    d}t        |      }|j                         }| j                  |j                  d       | j	                  |j
                         | j	                  |j                         | j                  t        |j                  d       | j                  t        |j                         | j                  |t        d             | j                  |       y )Nr  r   r   r'      )r   r[   rV   r]   rY   r`   r\   r   r   r(   r   r   rf   rD   re   r,   rd   s       r   
test_byteszBufferImportTests.test_bytes$  s    A}}Q'&&)QXXq1)QWW-E#J'qr    c           	         t        ddgz        }t        |d      }|j                         }| j                  |j                  d       | j                  |j                         | j                  |j                         d|d<   | j                  |d   d       d|d<   | j                  |d   d       d|d d  | j                  |t        ddgz               | j                  t        |j                         t        d	d
      |dd | j                  |t        ddgddgz  z                | j                  |j                         |       dD ]7  }| j                  t        |j                  t        dd      t        |             9 dx|d<   |d<   | j                  |t        ddgz               | j                  |dt        d      z         | j                  |       y )Nr  r   r0   r   r'   r   r~  r  10000010r1   rT   rR   rR  r   b   )r   r   rK   rN  r  )r   r   r[   rV   r]   rc   r`   rY   r\   r   r  rx  r   r   rN   rf   )rD   re   r,   rd   r*   s        r   test_bytearrayz BufferImportTests.test_bytearray2  s   cQCi Ah/}}Q''&!1q!!1s#!IcSEk23+quu-:e4!BIsBi"u*&<=>a( 	+Ak1==%2,&qk+	+ !qtIcSEk23C(3-/0qr    c                 4   t        j                   dg d      }t        d d|      }| j                  |t        d             d|d<   | j                  |t        d             d|d<   | j                  |j                         g d	       | j	                  |       y )
Nr^  )r   r  r  r0   z00000000 11111111 00000010r|  r'   z00000000 00000100 00000010r;   )rR   r|  r  )r   r   rV   rB   rf   rh   s      r   
test_arrayzBufferImportTests.test_arrayN  s    KK\*T8Q'H%ABC!H%ABC![1qr    c                    t        dd      }t        d|      }| j                  ||u        |j                         }| j                  |j                         | j                  |j                  d       |j                         }| j                  |j                         | j                  |j                  d       | j                  |j                  |j                         | j                  ||u        | j                  ||       d|dd | j                  ||       d|dd	 | j                  ||       |d
dxxx dz  ccc | j                  ||       d|ddd<   | j                  ||       | j                  t        d|j                         | j                  t        d|j                         | j                  |       | j                  |       y )Nr  r0   rk  r'   r   i  i  iG  i^  e   i  O   r  iH&  rM   rZ  zcannot resize imported buffer)r4   r   rc   r[   r\   rV   r  rY   r^   rw   r  rx  rf   )rD   r,   re   a_infob_infos        r   r  zBufferImportTests.test_bitarrayY  s   eX&HQ/a )+(+8a A#c
A#c
A	#dA#d1*A  KEE	 	  8EE	 	qqr    c                 b   t        d      }| j                  |j                         |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 ].  }| j	                  |j                         | j                  |       0 y )
Ns   XAr   r;   rM   rR  rK   r  r   r'   )r   rY   r`   ry  rc   rf   rh   s      r   r$  zBufferImportTests.test_copy|  s    E"

#&&(AE1q5!hrl*:q&1"a(5/1A$#A#1a&	1Xb\?< 	A QZZ(NN1		r    c                    t        dd      }t        t        |      dd d      }| j                  |j	                         j
                  |j	                         j
                  dz          t        t        |      dd d      }| j                  |j	                         j
                  |j	                         j
                  dz          | j                  |dd |       | j                  |d	d
 |       |j                  d       |j                  d       |j                  d       t        d      }|j                  d       d|dd	 | j                  ||       y )Ni    r1   r  i   r   i   i   i   i   i @  r   r'   )r4   r   r  rV   r[   r^   r(   r  s        r   test_bitarray_shared_sectionsz/BufferImportTests.test_bitarray_shared_sections  s   fe$JqM%6uE000058	:JqM%6uE000058	:9y1159y115			V	#$)i Ar    c                 J   t        d      D ]  }t        |      }t        ||j                        }| j	                  |j
                  d       | j	                  t        |      dz  d       | j                  |d | |       | j                  |       | j                  |        y )Nr  r   r   rR   )	r=   r4   r   r+   rV   rZ   rX   ri   rf   r  s       r   rw  z%BufferImportTests.test_bitarray_range  s    s 	A!A!((3AQYY*SVaZ+QrUA&NN1NN1	r    c           	         t        dd      g}t        dd      D ]$  }|j                  t        d||dz
                  & | j	                  |d   |d          |d   j                  d       |D ]M  }| j	                  t        |      d       | j                  |j                                | j                  |       O y )Nr  r1   r'   r  rk  r  r   )
r4   r=   rV  r   rV   r(   rX   rY   rZ  rf   )rD   r   r*   r,   s       r   test_bitarray_chainz%BufferImportTests.test_bitarray_chain  s    r5!"q# 	>AHHXU1QU8<=	> 	2!%	!A 	ASVR(OOAEEG$NN1	r    c                 &   t        d      }| j                  |j                         | j                  |       t	        |      }| j                  |j                         | j                  t        |j                  dd       | j                  |       y )Nz10011011 011r   r'   r   )r   rY   r`   rf   r   r   r   r   rh   s      r   r,  z%BufferImportTests.test_frozenbitarray  sf    >*

#qA

#)Q]]Aq9qr    c           	      t    ddg ddddit        g d      fD ]  }| j                  t        t        |         y )Nr  gGz?)r'   rK   r;   r'   rK   r   )r/  r   r   r   r   s     r   test_invalid_bufferz%BufferImportTests.test_invalid_buffer  s>    y)aV	N% 	?Ci#>	?r    c                     t        ddgz        }t        |      }~| j                  |t        d             |j	                  d       | j                  |j                                | j                  |       y )Nr  r   r   rN  r'   )r   r   rV   r   r(   rY   rZ  rf   rV  s      r   test_del_import_objectz(BufferImportTests.test_del_import_object  s\    cQCi AE#J'	 qr    c           	         t        d      }|j                         }| j                  |j                         | j                  |j                         | j                  t        |j                  d       | j                  t        |j                         | j                  t        |j                         | j                  t        |j                  dt        d      id       | j                  t        |j                  g d       | j                  t        |j                         | j                  t        |j                  d       | j                  t        |j                  d	d
       | j                  t        |j                         | j                  t        |j                   d       | j                  t        |j"                         | j                  t        |j$                  d
       | j                  t        |j&                         | j                  t        |j(                  d	       | j                  t        |j*                         | j                  t        |j,                  d	       | j                  t        |j,                  t/        d d d             | j                  t        |j0                  d	d	       | j                  t        |j2                  t        d             | j                  t        |j4                  t        d             | j                  t        |j6                  t        d             | j                  t        |j8                  d
       | j                  t        |j:                  d
       | j=                  |       y )Nr   r   Tr,   r   r`  r   r'   r   r    r   r'        rK   rR   )r   r[   rY   r`   r\   r   r   rV  r&  r   rn  r  r&  r:  r  r  rO  rx  r  r  r(   rB  rv  rN   r   r;  rk  rl  r  r  rf   rD   r,   rd   s      r   test_readonly_errorsz&BufferImportTests.test_readonly_errors  sS   D!}}&&)QXXt4)Q]]3)QWW-)QXXXc]/CTJ)QXXy9)QVV,)Q[[#6)QXXq!4)QXX.)QVV[9)QUU+)QXXq1)QYY/)QXXq1)QVV,)Q]]A6)Q]]E$a4HI)Q]]Aq9)QZZ!=)QYY<)QZZ!=)Q]]A6)Q]]A6qr    c                    t        t        dg            }|j                         }| j                  |j                         | j                  |j                         | j                  t        |j                  d       | j                  t        |j                         | j                  t        |j                  dt        d      id       | j                  t        |j                  g d       | j                  t        |j                  d       | j                  t        |j                  d	d
       | j                  t        |j                  d       | j                  t        |j                          | j                  t        |j"                  d
       | j                  t        |j$                  d	       | j'                  |       y )Nr  r   Tr,   r   r`  rh  rq  r   r'   ri  )r   r   r[   rc   r`   rY   r\   r   r  rV  r   rn  r  r:  r  rO  rx  r  rv  rf   rj  s      r   test_resize_errorsz$BufferImportTests.test_resize_errors  s1   Ise,-}}'&+qxx6+qww/+qxx#x}1EtL+qxx;+q{{D9+qxxA6+qvv{;+quu-+qxx3+q}}a8qr    N)rk   rx   ry   rP  r#   r   rT  rV  r  r$  r^  rw  ra  r,  rd  rf  rk  rm  r   r    r   rL  rL  "  s     G_ 6 G_ !F G_ &	
? G_  G_ > G_ r    rL  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
BufferExportTestsc                 j   t        dd      }t        |      }| j                  |j                         | j	                  |j                         j                  d       | j	                  t        |      d       | j	                  |d   d       | j	                  |j                         d       d|d	<   | j	                  |j                         d
       t        |      }| j                  |j                         | j	                  |j                         j                  d       | j                  |       y )Nz01000001 01000010 01000011r1   rT   r'   r;   r   r   r   r}  s   AFCrK   )
r   r  rc   r`   rV   r[   r  rX   r   rf   )rD   r,   r]  r  s       r   test_read_simplez"BufferExportTests.test_read_simple  s    1%@qM$00!4Q#1r"f-"f-qM$00!4qr    c                    t        d      }i }t        dd      D ]Y  }t        |      ||<   | j                  |j                         j                  |       | j                  t        ||         d       [ | j                  |       y )Nz01000111 01011111r'   rI  r   rR  )r   r=   rV   r[   r  rX   rf   )rD   r,   r   r*   s       r   test_many_exportsz#BufferExportTests.test_many_exports  sw    ()q" 	,A1%AaDQ]]_44a8S1Y+	, 	qr    c                    t        d      D ]  }t        |      }t        |      }| j                  t	        |      |j
                         |j                         }| j                  |j                         | j                  |j                         | j                  |j                  d       | j                  |        y rP  )r=   r   r  rV   rX   rW   r[   rc   r`   r\   r  rf   )rD   r*   r,   r]  rd   s        r   r  zBufferExportTests.test_range  s    s 	AA1ASVQXX.==?DT]]+T]]+T\\1-NN1	r    c                 v   t        t        j                  d            }t        |      }| j	                  t        |      d       |dd }| j	                  |dd j                         |j                                | j	                  |j                         |j                                | j                  |       y )Nr  i  i  "   rm  )r   r2   r3   r  rV   rX   r   rf   )rD   r,   r]  re   s       r   test_read_randomz"BufferExportTests.test_read_random%  s    RZZ_%qMQ%fv2b))+QYY[9aiik2qr    c                    t        dd      }t        |      }| j                  |j                         | j	                  t
        |j                  d       | j	                  t
        |j                         | j	                  t
        |j                  dt        d      id       | j	                  t
        |j                  d       | j	                  t
        |j                  d       | j	                  t
        |j                  d	d       | j	                  t
        |j                  d       | j	                  t
        |j                         | j	                  t
        |j                  d       | j	                  t
        |j                  t!        d	d
             |j#                          | j%                  |j'                         |j'                                | j)                  |       y )Nr*  r1   rT   r'   r,   r   r`  rK  r   rR   )r   r  rc   r`   r   r  rV  r   rn  r  r:  r  rO  rx  r  rv  rN   r&  rV   r   rf   r  s      r   r  zBufferExportTests.test_resize.  sE   U5)qM$+qxx3+qww/+qxx#x}1EtL+qxx5+q{{E:+qxxA6+qvvu5+quu-+qxx3+q}}eAqkB	aiik2qr    c                    t        d      }t        |      }| j                  |j                         | j	                  t        |      d       | j	                  |j                         |j                                | j                  |       y )Nr2  rM   )r   r  rY   r`   rV   rX   r   rf   r  s      r   r,  z%BufferExportTests.test_frozenbitarray@  sa    2qM

#Q#aiik2qr    c                 d   t        d      }t        |      }| j                  |j                         d|d<   | j	                  |dd t        d             d|d<   | j	                  |dd t        d	             d
|dd | j	                  |dd j                         d       | j                  |       y )Nr&  r  r  i  i  
0111111110r   i  
0111011110r   i-  i0  i`	  i	      ABC )r   r  rc   r`   rV   r   r   rf   r  s      r   
test_writezBufferExportTests.test_writeH  s    $KqM$#4x'=>$4x'=>#c
7W-557Hqr    c                    t        d      }t        |      }|dd }d|d<   d|d<   d|d<   | j                  |j                         d	       d
|dd | j                  |j                         d       | j	                  |       y )Nr2  r'   r  r   r   B   rm  rK   r}  s   XYZs    XYZ )r   r  rV   r   rf   )rD   r,   r   r]  s       r   test_write_memoryview_slicez-BufferExportTests.test_write_memoryview_sliceT  s}    "IqMaF!!!n5!An5qr    N)rk   rx   ry   rq  rs  r  rw  r  r,  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y)FrozenbitarrayTestsc                 &   t        d      }| j                  |t        d             | j                  |j                         d       | j	                  |t               | j                  t        |      t                | j                  |j                         | j                  |       t        t                     }| j                  |t                      | j                  t        |      t                dD ]  }t        d|      }| j                  |j                  |       | j                  t        |      t                t        t        d|            }| j                  |j                  |       | j                  t        |      t                 y )Nr  r   r   )r   rV   r   r   rU   r_   rY   r`   rf   ri   r+   r+  s      r   	test_initzFrozenbitarrayTests.test_initd  s%   5!HUO,5)a*a.1

#q8:&N,-a.1% 	6Fq&)AQXXv.T!Wn5x623AQXXv.T!Wn5	6r    c                 b   t        d      }| j                  |d   d       | j                  |d d j                         d       | j                  |j                         d       | j                  |j	                  d      d       |j                         }| j                  ||       | j                  t        |      t                | j                  t        |      d       | j                  |j                                | j                  |j                                | j                  |       y )Nr  rK   r   r  r  r   )r   rV   r   rb   r  ry  r_   rX   rc   rZ  rY   r   rf   rh   s      r   test_methodsz FrozenbitarrayTests.test_methodsz  s    9%1q!2Av.A&Q'FFHAa.1Q#! qr    c                 X   | j                         D ]  }t        |      }| j                  ||u        | j                  ||       t        |      }| j                  ||u        | j                  ||       | j	                  t        |      t        |             | j                  |        y r   )r@   r   rc   ri   rV   r  rf   r'  s       r   test_init_from_bitarrayz+FrozenbitarrayTests.test_init_from_bitarray  s    %%' 	Aq!AQ!V$Q"q!AQ!V$Q"T!Wd1g.NN1	r    c                 n   d}t        |      |t        |      t        |      fD ]G  }t        |      }| j	                  t        |      t               | j	                  |t        |             I t        dd      }| j	                  |j                         d       | j	                  |j                  d       y )N)r   r'   r   r'   r'   FT   ABr1   0100000101000010)r.  r   r   r   rV   r_   r   r+   )rD   tupobjr,   s       r   test_init_from_miscz'FrozenbitarrayTests.test_init_from_misc  s    (9c49hsm; 	/Cs#AT!Wn5Q.	/ 5%(#565)r    c                 t   dt        d      fD ]  }t        |d      }| j                  t        |      t               | j                  t	        |      dt	        |      z         | j                  |j                         |       | j                  |d d j                         d       | j                  |        y )Ns   ABCDr0   rR   r  )r   r   rV   r_   rX   r   r   rf   r1  s      r   test_init_bytes_bytearrayz-FrozenbitarrayTests.test_init_bytes_bytearray  s    i44 	Aq(+AT!Wn5SVQQZ0QYY[!,QrUZZ\:6NN1	r    c                    t               }| j                  t        |      d       | j                  t        |      d       t        d      }| j                  t        |      d       | j                  t        |      d       y )Nzfrozenbitarray()r  zfrozenbitarray('10111'))r   rV   rl   rp   rC   s     r   r!  zFrozenbitarrayTests.test_repr  sh    a"45Q!347#a";<Q!:;r    c           	         t        d      }| j                  t        |j                  d       | j                  t        |j                         | j                  t        |j
                         | j                  t        |j                  dt        d      id       | j                  t        |j                  g d       | j                  t        |j                         | j                  t        |j                  d       | j                  t        |j                  dd	       | j                  t        |j                         | j                  t        |j                  d
       | j                  t        |j                         | j                  t        |j                  d	       | j                  t        |j                          | j                  t        |j"                  d       | j                  t        |j$                         | j                  t        |j&                  d       | j                  t        |j&                  t)        d d d             | j                  t        |j*                  dd       | j                  t        |j,                  t        d             | j                  t        |j.                  t        d             | j                  t        |j0                  t        d             | j                  t        |j2                  d	       | j                  t        |j4                  d	       | j7                  |       y )Nr  Tr,   r   r`  rh  r    r   r'   ri  rK   r  rt  r  )r   r   r   rV  r&  r   rn  r   r  r&  r:  r  r  rO  rx  r  r  r(   rB  rv  rN   r   r;  rk  rl  r  r  rf   rC   s     r   test_immutablez"FrozenbitarrayTests.test_immutable  s(   5!)QXXt4)Q]]3)QWW-)QXXXc]/CTJ)QXXy9)QVV,)Q[[#6)QXXq!4)QXX.)QVV[9)QUU+)QXXq1)QYY/)QXXq1)QVV,)Q]]A6)Q]]E$a4HI)Q]]Aq9)QZZ%A)QYY@)QZZ%A)Q]]A6)Q]]A6qr    c                 j   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 ]M  }| j                  t	        |      t                | j                  |j                         | j                  |       O y )
NrD  r;   rM   r  rK   r  r   r'   r*  )r   ry  r   rV   r_   rY   r`   rf   rh   s      r   r$  zFrozenbitarrayTests.test_copy  s    5!QVVXq1ua!eQ%-@q&1"a(5/1A$#A#1a&	1Xe_+=? 	A T!Wn5OOAJJ'NN1	r    c                     t        d      }| j                  |j                         |j                          | j	                  |j                         y )NN   )r   rc   r`   _freezerY   rC   s     r   test_freezezFrozenbitarrayTests.test_freeze  s6    RL$			

#r    c                     t        dd      }t        |      }| j                  |j                         d       | j	                  t
        |j                  dd       y )Nz01000001 01000010r1   r  r   |   )r   r  rV   r   r   r   r   r  s      r   test_memoryviewz#FrozenbitarrayTests.test_memoryview  sF    .6qMe,)Q]]At<r    c                     t        g d      }t        |d      }| j                  |t        dd             |j	                         }| j                  |j                         | j                  |j                         y )N)r   _   r}  r1   r   z00001111 01011111 10000000)ra   r   ri   r   r[   rY   r`   r\   rO  s       r   test_buffer_import_readonlyz/FrozenbitarrayTests.test_buffer_import_readonly  s[    - !E2H%A5IJ}}&&r    c                 X    t        ddg      }| j                  t        dt        |       y )Nr   r  z1cannot import writable buffer into frozenbitarrayr   )r   rw   r   r   )rD   r  s     r   test_buffer_import_writablez/FrozenbitarrayTests.test_buffer_import_writable  s.    r2h  ?1 	! 	&r    c                    t        d      }t        d      }t        d      }t        d      }t        ||||g      }| j                  t        |      d       | j	                  ||v        | j                  t        d      |v        y )Nr  rr  r  r*  r  r   )r   r/  rV   rX   rY   rc   )rD   r,   re   r  r   r
  s         r   test_as_setzFrozenbitarrayTests.test_as_set  sx    34 4 5!Aq!Q#Q,12r    c                     t        d      }t        d      }|d|di}| j                  |t        d         d       | j                  |t        |         d       y )Nr  r'  r  iY  r   rV   rD   r,   re   r   s       r   test_as_dictkeyz#FrozenbitarrayTests.test_as_dictkey  sX    4 6"Q>$/0#6>!,-s3r    c                     t        d      }t        d      }|d|di}t        d      }| j                  ||       | j                  ||   d       y )Nrd  r  re  twor  )rD   a1a2dcta3s        r   test_as_dictkey2z$FrozenbitarrayTests.test_as_dictkey2  sR    D!D!5"e$D!R R%(r    c                     t        d      }t        d      }| j                  ||z   t        d             |j                  |       | j                  |t        d             y )Nr  rK  1100011)r   r   rV   r  rh   s      r   test_mixzFrozenbitarrayTests.test_mix
  sN    UO6"Q 34	HY/0r    c                    t        dd      }t        dd      }| j                  ||       | j                  t        |      t        |             |di}| j                  ||   d       | j                  t        t	        ||g            d       y )Nr  r1   r0   valuer'   )r   rV   r  rX   r/  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                    | j                         D ]  }t        |      }t        || j                  |j                              }| j	                  ||       | j                  |j                  |j                         | j	                  t        |      t        |             |d|di}| j	                  t        |      d        y )Nr'   rK   )r@   r   rI   r+   rV   r   r  rX   r  s       r   test_hash_endianness_randomz/FrozenbitarrayTests.test_hash_endianness_random  s    %%' 	(Aq!Aq$"6"6qxx"@AAQ"!((3T!Wd1g.Aq!ASVQ'	(r    c                 <   | j                         D ]  }t        |      }d|_        t        j                  t        j
                  |            }| j                  ||       | j                  |j                  |j                         | j                  t        |      j                  d             | j                  |j                         | j                  |       | j                  |       | j                  |       | j                  |j                  d        y )Nr  r   )r@   r   r   r  r  r  rV   r+   rY   rp   
startswithr`   rf   )rD   r,   r   r  s       r   rz  zFrozenbitarrayTests.test_pickle$  s    %%' 	(Aq!AAEV\\!_-AQ"QXXqxx0OOCF--.>?@OOAJJ'NN1NN1NN1QUUB'	(r    c                 
   | j                         D ]p  }t        |      }| j                  t        |      |j	                                | j                  t        |      |j	                                | j                  |       r y r   )r@   r   rV   ra   r   r   rf   rC   s     r   r  z(FrozenbitarrayTests.test_bytes_bytearray2  sd    %%' 	Aq!AU1Xqyy{3Yq\199;7NN1		r    N)rk   rx   ry   r  r  r  r  r  r!  r  r$  r  r  r  r#   r   r  r  r  r  r  r  r  rz  r  r   r    r   r  r  b  sy    6,	*<6$=' G_& &34)1.((r    r  c                 j   dd l }t        dt        j                  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$                         }|j'                  |j)                  t        j*                  t,                        |j'                  |j)                  |j.                               t!        j0                  |       }|j3                  |      }|S )Nr   zbitarray is installed in: %szbitarray version: %szsys.version: %szsys.prefix: %srK   r   zsys._is_gil_enabled(): %szpointer size: %d bitrR   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printr2   r  r  r  r   r   r   prefixr   r   r   r   r   r   unittest
TestLoader	TestSuiteaddTestsloadTestsFromModulemodulesrk   	test_utilTextTestRunnerrun)r  r   loadersuiterunnerresults         r   r  r  ;  s   	
(277??8+D
DE	
 ;
./	
ckk
)*	
SZZ
'(
w&)C,?,?,AAB	
 AK
01	
!2
23	
&1A)B
BC	
$w/E'F
FG	
&);)=
=>	
"S]]
23	
'*;"<
<=	.7:.
./	+(
()  "F E	NN6--ckk(.CDE	NN6--h.@.@AB$$y9FZZFMr    __main__r   )r/   )r'   )h__doc__r:  r2   r   r  r  rj  rd  ior   r   randomr   r   r   r   r	   r
   stringr   r   ry  r   r  r  r|  r:  r   machiner  python_implementationr   r   r   r   r   r   r   r   r   r   r   r#   r   r   r-   r4   objectr6   TestCaser|   r   r?  rO  rb  rq  r  r  r	  r  r%  rB  rT  rY  rg  r  r  r  r   r  r,  rX  r  r  r  r  r  r#  r,  r>  rI  rv  r  r  r  r  r  r  r  r  r  r  r8  r[  ra  r  r  r  rL  ro  r  r  rk   mainr   r    r   <module>r     s  

 
 	 
     , L L         x!X-
.
-x--/69
:/ / /
 '
 	
OI6 OIfG88,, G8VJ2))4 J2\ 6X&&  6H .8$$d  .D,;8$$d ,;\:8$$d :<)1H%%t )1VE;H%%t E;NNCH%%t NCd,(++T ,@_A(++T _AB>D(++T >DDJx00$ J%)H--t %)N_AH--t _AB=@H--t =@Ba:!!4 a:J_(##T _F[)x(($ [)~(1**D (1XY$H%%t Y$zgA(##T gAV	C(##T CN!(##T !@(##T :--h'' --^(##T >!!4 BKE(##T KEZ)5!!4 )5Z[:!!4 [:z5x  $ 5n!?8$$d !?F%(##T %N#A(##T #AJ6N!!4 6NpU?x(($ U?n>(##T >(""D $;""D ;Fh<""D h<Xd$(##T d$Pe-""D e-R1h'' 1<t?!!4 t?p	%"%x	':&	"%x	': (	 #&x'8 %	 #&x'9	
 (	
 #&x'8 &	 #&x'= *	 #&x'8 (	 #&x'7 &	 (0'9	-	 x'7	&	x'7	(	x	':	(	x'=	(	x'>"Q2h'' Q2jEh'' ERY))4 Yz_))4 _FU(++T Ur6 zHMMO r    