@@ -1577,35 +1577,18 @@ def test_invalid_args(self):
15771577 self .assertRaises (TypeError , base2ba , None , '' )
15781578 self .assertRaises (TypeError , ba2base , 16.0 , a )
15791579 self .assertRaises (TypeError , base2ba , 16.0 , '' )
1580- for i in range (- 10 , 100 ):
1581- if i in (2 , 4 , 8 , 16 , 32 , 64 ):
1582- continue
1583- self .assertRaises (ValueError , ba2base , i , a )
1584- self .assertRaises (ValueError , base2ba , i , '' )
1580+ for values , msg in [
1581+ ([- 1023 , - 16 , - 1 , 0 , 3 , 5 , 31 , 48 , 63 , 129 , 511 , 4123 ],
1582+ "base must be a power of 2" ),
1583+ ([1 , 128 , 256 , 512 , 1024 , 2048 , 4096 , 8192 ],
1584+ "base must be 2, 4, 8, 16, 32 or 64" )]:
1585+ for i in values :
1586+ self .assertRaisesMessage (ValueError , msg , ba2base , i , a )
1587+ self .assertRaisesMessage (ValueError , msg , base2ba , i , '' )
15851588
15861589 self .assertRaises (TypeError , ba2base , 32 , None )
15871590 self .assertRaises (TypeError , base2ba , 32 , None )
15881591
1589- def test_binary (self ):
1590- a = base2ba (2 , '1011' )
1591- self .assertEqual (a , bitarray ('1011' ))
1592- self .assertEqual (ba2base (2 , a ), '1011' )
1593-
1594- for a in self .randombitarrays ():
1595- s = ba2base (2 , a )
1596- self .assertEqual (s , a .to01 ())
1597- self .assertEQUAL (base2ba (2 , s , a .endian ), a )
1598-
1599- def test_quaternary (self ):
1600- a = base2ba (4 , '0123' , 'big' )
1601- self .assertEqual (a , bitarray ('00 01 10 11' ))
1602- self .assertEqual (ba2base (4 , a ), '0123' )
1603-
1604- def test_octal (self ):
1605- a = base2ba (8 , '0147' , 'big' )
1606- self .assertEqual (a , bitarray ('000 001 100 111' ))
1607- self .assertEqual (ba2base (8 , a ), '0147' )
1608-
16091592 def test_hexadecimal (self ):
16101593 a = base2ba (16 , 'F61' , 'big' )
16111594 self .assertEqual (a , bitarray ('1111 0110 0001' ))
@@ -1619,27 +1602,44 @@ def test_hexadecimal(self):
16191602 self .assertEqual (ba2base (16 , a ), ba2hex (a ))
16201603
16211604 def test_base32 (self ):
1622- a = base2ba (32 , '7SH' , 'big' )
1623- self .assertEqual (a , bitarray ('11111 10010 00111' ))
1624- self .assertEqual (ba2base (32 , a ), '7SH' )
1625-
16261605 msg = os .urandom (randint (10 , 100 ) * 5 )
16271606 s = base64 .b32encode (msg ).decode ()
16281607 a = base2ba (32 , s , 'big' )
16291608 self .assertEqual (a .tobytes (), msg )
16301609 self .assertEqual (ba2base (32 , a ), s )
16311610
16321611 def test_base64 (self ):
1633- a = base2ba (64 , '/jH' , 'big' )
1634- self .assertEqual (a , bitarray ('111111 100011 000111' ))
1635- self .assertEqual (ba2base (64 , a ), '/jH' )
1636-
16371612 msg = os .urandom (randint (10 , 100 ) * 3 )
16381613 s = base64 .standard_b64encode (msg ).decode ()
16391614 a = base2ba (64 , s , 'big' )
16401615 self .assertEqual (a .tobytes (), msg )
16411616 self .assertEqual (ba2base (64 , a ), s )
16421617
1618+ def test_primes (self ):
1619+ primes = gen_primes (60 , odd = True )
1620+ base_2 = primes .to01 ()
1621+ for n , endian , rep in [
1622+ ( 2 , "little" , base_2 ),
1623+ ( 2 , "big" , base_2 ),
1624+ ( 4 , "little" , "232132030132012122122010132110" ),
1625+ ( 4 , "big" , "131231030231021211211020231220" ),
1626+ ( 8 , "little" , "65554155441515405550" ),
1627+ ( 8 , "big" , "35551455114545105550" ),
1628+ (16 , "little" , "e6bc4b46a921d61" ),
1629+ (16 , "big" , "76d32d265948b68" ),
1630+ (32 , "little" , "O3SJLSJTSI3C" ),
1631+ (32 , "big" , "O3JS2JSZJC3I" ),
1632+ (64 , "little" , "utMtkppEtF" ),
1633+ (64 , "big" , "dtMtJllIto" ),
1634+ ]:
1635+ a = bitarray (primes , endian )
1636+ s = ba2base (n , a )
1637+ self .assertEqual (type (s ), str )
1638+ self .assertEqual (s , rep )
1639+ b = base2ba (n , rep , endian )
1640+ self .assertEqual (b , a )
1641+ self .assertEqual (b .endian , endian )
1642+
16431643 alphabets = [
16441644 # m n alphabet
16451645 (1 , 2 , '01' ),
0 commit comments