aboutsummaryrefslogtreecommitdiff
path: root/test/ec/test_op.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/ec/test_op.py')
-rw-r--r--test/ec/test_op.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/ec/test_op.py b/test/ec/test_op.py
new file mode 100644
index 0000000..13efc53
--- /dev/null
+++ b/test/ec/test_op.py
@@ -0,0 +1,32 @@
+from ast import parse
+from unittest import TestCase
+
+from parameterized import parameterized
+
+from pyecsca.ec.mod import Mod
+from pyecsca.ec.op import CodeOp
+
+
+class OpTests(TestCase):
+
+ @parameterized.expand([
+ ("add", "x = a+b", "x = a+b"),
+ ("sub", "x = a-b", "x = a-b"),
+ ("mul", "y = a*b", "y = a*b"),
+ ("div", "z = a/b", "z = a/b"),
+ ("pow", "b = a**d", "b = a^d")
+ ])
+ def test_str(self, name, module, result):
+ code = parse(module, mode="exec")
+ op = CodeOp(code)
+ self.assertEqual(str(op), result)
+
+ @parameterized.expand([
+ ("add", "x = a+b", {"a": Mod(5, 21), "b": Mod(7, 21)}, Mod(12, 21)),
+ ("sub", "x = a-b", {"a": Mod(7, 21), "b": Mod(5, 21)}, Mod(2, 21))
+ ])
+ def test_call(self, name, module, locals, result):
+ code = parse(module, mode="exec")
+ op = CodeOp(code)
+ res = op(**locals)
+ self.assertEqual(res, result)