X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/8aafc119905401cd820194d547018043510b1f88..3aa44e37be6b205c19952db14324cfb588b46731:/t/t-mp.py?ds=sidebyside diff --git a/t/t-mp.py b/t/t-mp.py index 93a1e2f..9927c12 100644 --- a/t/t-mp.py +++ b/t/t-mp.py @@ -56,14 +56,17 @@ class TestMP (U.TestCase): me.assertEqual(C.MP(str(big)), big) me.assertEqual(C.MP('0x4eeb684a0954ec4ceb255e3e9778d41'), big) me.assertEqual(C.MP('4eeb684a0954ec4ceb255e3e9778d41', 16), big) + me.assertEqual(C.MP('0x4eeb684a0954ec4ceb255e3e9778d41', 16), big) me.assertEqual(C.MP('0b0', 16), 176) # not 0 me.assertEqual(C.MP('047353320450112516611472622536175135706501'), big) me.assertEqual(C.MP('0o47353320450112516611472622536175135706501'), big) me.assertEqual(C.MP('047353320450112516611472622536175135706501', 8), big) + me.assertEqual(C.MP('0o47353320450112516611472622536175135706501', 8), big) me.assertEqual(C.MP('47353320450112516611472622536175135706501', 8), big) me.assertEqual(C.MP('0b100111011011001100000010001011'), 661438603) + me.assertEqual(C.MP('0b100111011011001100000010001011', 2), 661438603) me.assertEqual(C.MP('100111011011001100000010001011', 2), 661438603) def test_string(me): @@ -71,7 +74,8 @@ class TestMP (U.TestCase): me.assertEqual(str(y), '6556380541834372447694561492436749633') me.assertEqual(repr(y), 'MP(6556380541834372447694561492436749633)') me.assertEqual(hex(y), '0x4eeb684a0954ec4ceb255e3e9778d41') - me.assertEqual(oct(y), '047353320450112516611472622536175135706501') + me.assertEqual(oct(y), T.py23('0', '0o') + + '47353320450112516611472622536175135706501') try: bin except NameError: pass else: me.assertEqual(bin(C.MP(661438603)), @@ -153,6 +157,14 @@ class TestMP (U.TestCase): while z == z + 1: z *= 2.0 me.assertNotEqual(C.MP(int(z)) + 1, z) + def test_strconv(me): + x, y = C.MP(169), "24" + for fn in [T.add, T.sub, T.div]: + me.assertRaises(TypeError, fn, x, y) + me.assertRaises(TypeError, fn, y, x) + me.assertEqual(x*y, 169*"24") + me.assertEqual(y*x, 169*"24") + def test_bits(me): x, y, zero = C.MP(169), C.MP(-24), C.MP(0) me.assertTrue(x.testbit(0)) @@ -395,21 +407,25 @@ class TestGF (U.TestCase): me.assertEqual(C.GF(E(1, 4)), C.GF(1)) me.assertRaises(TypeError, C.GF, E()) + me.assertNotEqual(x, 5) # no implicit conversion to int me.assertEqual(int(x), 5) y = C.GF(0x4eeb684a0954ec4ceb255e3e9778d41) me.assertEqual(type(int(y)), T.long) me.assertEqual(C.GF('0x4eeb684a0954ec4ceb255e3e9778d41'), y) me.assertEqual(C.GF('4eeb684a0954ec4ceb255e3e9778d41', 16), y) + me.assertEqual(C.GF('0x4eeb684a0954ec4ceb255e3e9778d41', 16), y) me.assertEqual(C.GF('0b0', 16), C.GF(176)) # not 0 me.assertEqual(C.GF('047353320450112516611472622536175135706501'), y) me.assertEqual(C.GF('0o47353320450112516611472622536175135706501'), y) me.assertEqual(C.GF('047353320450112516611472622536175135706501', 8), y) + me.assertEqual(C.GF('0o47353320450112516611472622536175135706501', 8), y) me.assertEqual(C.GF('47353320450112516611472622536175135706501', 8), y) t = C.GF(661438603) me.assertEqual(C.GF('0b100111011011001100000010001011'), t) + me.assertEqual(C.GF('0b100111011011001100000010001011', 2), t) me.assertEqual(C.GF('100111011011001100000010001011', 2), t) def test_string(me): @@ -417,7 +433,8 @@ class TestGF (U.TestCase): me.assertEqual(str(y), '0x4eeb684a0954ec4ceb255e3e9778d41') me.assertEqual(repr(y), 'GF(0x4eeb684a0954ec4ceb255e3e9778d41)') me.assertEqual(hex(y), '0x4eeb684a0954ec4ceb255e3e9778d41') - me.assertEqual(oct(y), '047353320450112516611472622536175135706501') + me.assertEqual(oct(y), T.py23('0', '0o') + + '47353320450112516611472622536175135706501') try: bin except NameError: pass else: me.assertEqual(bin(C.GF(661438603)),