mp.c: Tighten up the `MP' and `GF' implicit conversions.
[catacomb-python] / t / t-convert.py
index a5f7ff0..19d6918 100644 (file)
@@ -51,7 +51,7 @@ class TestConvert (U.TestCase):
     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):
@@ -76,10 +76,10 @@ class TestConvert (U.TestCase):
     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))
@@ -91,13 +91,18 @@ class TestConvert (U.TestCase):
     ## `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)
@@ -109,11 +114,15 @@ class TestConvert (U.TestCase):
     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))