X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/ffad1322bf20f0244658afcc4a799a9ea022ddd8..a4cc2ca5f36dfe675fd451606502b2479249463e:/t/t-mp.py diff --git a/t/t-mp.py b/t/t-mp.py index ff373ca..9927c12 100644 --- a/t/t-mp.py +++ b/t/t-mp.py @@ -56,22 +56,30 @@ 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): y = C.MP(6556380541834372447694561492436749633) me.assertEqual(str(y), '6556380541834372447694561492436749633') - me.assertEqual(repr(y), 'MP(6556380541834372447694561492436749633L)') + 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)), + '0b100111011011001100000010001011') def test_number(me): x, y, m, zero = C.MP(169), C.MP(24), C.MP(205), C.MP(0) @@ -135,6 +143,28 @@ class TestMP (U.TestCase): me.assertTrue(y < x) me.assertFalse(x < x) + def test_float(me): + x, y = C.MP(169), 24.0 + for fn in [T.add, T.sub, T.mul, T.div]: + me.assertEqual(type(fn(x, y)), float) + me.assertEqual(type(fn(y, x)), float) + me.assertEqual(x, 169.0) + me.assertNotEqual(x, 169.1) + me.assertNotEqual(x, 168.9) + me.assertTrue(x > 168.9) + me.assertTrue(x < 169.1) + z = 1.0 + 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)) @@ -377,29 +407,38 @@ 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): y = C.GF(0x4eeb684a0954ec4ceb255e3e9778d41) me.assertEqual(str(y), '0x4eeb684a0954ec4ceb255e3e9778d41') - me.assertEqual(repr(y), 'GF(0x4eeb684a0954ec4ceb255e3e9778d41L)') + 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)), + '0b100111011011001100000010001011') def test_number(me): x, y, m, zero = C.GF(0xa9), C.GF(0x18), C.GF(0x11b), C.GF(0)