Skip to content

Commit 6bd0f37

Browse files
committed
improve base2ba() testing
1 parent b4811e8 commit 6bd0f37

File tree

1 file changed

+33
-33
lines changed

1 file changed

+33
-33
lines changed

bitarray/test_util.py

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)