t/t-algorithms.py: Add tests for the new `KeySZ.pad' method.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 17 Nov 2019 23:41:14 +0000 (23:41 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Wed, 27 Nov 2019 15:11:29 +0000 (15:11 +0000)
t/t-algorithms.py

index 8e073f2..f63565a 100644 (file)
@@ -149,6 +149,7 @@ class TestKeysize (U.TestCase):
     for n in [0, 12, 20, 5000]:
       me.assertTrue(ksz.check(n))
       me.assertEqual(ksz.best(n), n)
+      me.assertEqual(ksz.pad(n), n)
 
     ## A typical two-byte spec.  (No published algorithms actually /need/ a
     ## two-byte key-size spec, but all of the HMAC variants use one anyway.)
@@ -160,6 +161,7 @@ class TestKeysize (U.TestCase):
     for n in [0, 12, 20, 5000]:
       me.assertTrue(ksz.check(n))
       me.assertEqual(ksz.best(n), n)
+      me.assertEqual(ksz.pad(n), n)
 
     ## Check construction.
     ksz = C.KeySZAny(15)
@@ -186,6 +188,8 @@ class TestKeysize (U.TestCase):
       else: me.assertFalse(ksz.check(x))
       if best is None: me.assertRaises(ValueError, ksz.best, x)
       else: me.assertEqual(ksz.best(x), best)
+      if pad is None: me.assertRaises(ValueError, ksz.pad, x)
+      else: me.assertEqual(ksz.pad(x), pad)
 
     ## Check construction.
     ksz = C.KeySZSet(7)
@@ -210,13 +214,15 @@ class TestKeysize (U.TestCase):
     me.assertEqual(ksz.min, 4)
     me.assertEqual(ksz.max, 32)
     me.assertEqual(ksz.mod, 4)
-    for x, best in [(3, None), (4, 4), (5, 4),
-                    (15, 12), (16, 16), (17, 16),
-                    (31, 28), (32, 32), (33, 32)]:
-      if x == best: me.assertTrue(ksz.check(x))
+    for x, best, pad in [(3, None, 4), (4, 4, 4), (5, 4, 8),
+                         (15, 12, 16), (16, 16, 16), (17, 16, 20),
+                         (31, 28, 32), (32, 32, 32), (33, 32, None)]:
+      if x == best == pad: me.assertTrue(ksz.check(x))
       else: me.assertFalse(ksz.check(x))
       if best is None: me.assertRaises(ValueError, ksz.best, x)
       else: me.assertEqual(ksz.best(x), best)
+      if pad is None: me.assertRaises(ValueError, ksz.pad, x)
+      else: me.assertEqual(ksz.pad(x), pad)
 
     ## Check construction.
     ksz = C.KeySZRange(28, 21, 35, 7)