me.assertEqual(pow(C.MP(5), 2, 7), 4)
me.assertEqual(pow(5, C.MP(2), 7), 4)
me.assertEqual(pow(5, 2, C.MP(7)), 4)
- for bad in [C.GF, k, kk, float, lambda x: [x]]:
+ for bad in [C.GF, k, kk, str, float, lambda x: [x]]:
me.assertRaises(TypeError, pow, C.MP(5), bad(2))
me.assertRaises(TypeError, pow, C.MP(5), bad(2), 7)
if not (T.PY2 and T.DEBUGP):
me.assertEqual(pow(C.GF(0x5), 2), C.GF(0x11))
me.assertEqual(pow(C.GF(0x5), C.MP(2)), C.GF(0x11))
me.assertEqual(pow(C.GF(5), 2, C.GF(0x13)), C.GF(0x2))
- for bad in [k, kk, float, lambda x: [x]]:
+ for bad in [k, kk, str, float, lambda x: [x]]:
me.assertRaises(TypeError, pow, C.GF(5), bad(2))
me.assertRaises(TypeError, T.lsl, C.GF(5), bad(2))
- for bad in [C.MP, k, kk, float, lambda x: [x]]:
+ for bad in [int, C.MP, k, kk, str, float, lambda x: [x]]:
me.assertRaises(TypeError, pow, bad(5), C.GF(2))
me.assertRaises(TypeError, pow, bad(5), C.GF(2), bad(7))
me.assertRaises(TypeError, pow, bad(5), bad(2), C.GF(7))
## `MP' and `GF'.
me.assertEqual(C.MP(5), 5)
me.assertEqual(5, C.MP(5))
+ me.assertNotEqual(C.GF(5), 5)
+ me.assertNotEqual(5, C.GF(5))
me.assertNotEqual(C.MP(5), C.GF(5))
me.assertNotEqual(C.GF(5), C.MP(5))
me.assertEqual(C.MP(5) + 3, 8)
me.assertEqual(3 + C.MP(5), 8)
+ me.assertRaises(TypeError, T.add, C.GF(5), 3)
+ me.assertRaises(TypeError, T.add, 3, C.GF(5))
me.assertRaises(TypeError, T.add, C.MP(5), C.GF(3))
me.assertRaises(TypeError, T.add, C.GF(3), C.MP(5))
+ if T.PY3: me.assertRaises(TypeError, T.le, C.MP(4), C.GF(5))
## Field elements.
me.assertEqual(k(3) + 4, 7)
me.assertEqual(kk(3) + C.GF(7), C.GF(4))
me.assertRaises(TypeError, T.add, k(3), 3.0)
+ me.assertRaises(TypeError, T.add, k(3), "3")
me.assertRaises(TypeError, T.add, k(3), kk(3))
me.assertRaises(TypeError, T.add, kk(3), k(3))
me.assertRaises(TypeError, T.add, k(3), C.GF(7))
me.assertRaises(TypeError, T.add, C.GF(7), k(3))
+ me.assertRaises(TypeError, T.add, kk(3), 7)
me.assertRaises(TypeError, T.add, kk(3), 7.0)
+ me.assertRaises(TypeError, T.add, kk(3), "7")
+ me.assertRaises(TypeError, T.add, 7, kk(3))
me.assertRaises(TypeError, T.add, kk(3), C.MP(7))
me.assertRaises(TypeError, T.add, C.MP(7), kk(3))
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]:
+ 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))
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)