summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorYesudeep Mangalapilly <yesudeep@gmail.com>2011-08-12 13:06:51 +0530
committerYesudeep Mangalapilly <yesudeep@gmail.com>2011-08-12 13:06:51 +0530
commitb7341b658d6d2285676ce0b3c287383ad69a293e (patch)
tree2610f797f057feedec88d13d9ed7d16efe5c4232 /tests
parenta5673890cec3d7518726b15d4cecc17c0b55aa4a (diff)
downloadrsa-b7341b658d6d2285676ce0b3c287383ad69a293e.tar.gz
Adds verification tests for int2bytes and bytes2int
* There is a bug in the older int2bytes implementation. I've raised an issue on bitbucket for that already. #11 The pkcs1 file verification test fails if the behavior for int2bytes is corrected.
Diffstat (limited to 'tests')
-rw-r--r--tests/test_transform.py55
1 files changed, 45 insertions, 10 deletions
diff --git a/tests/test_transform.py b/tests/test_transform.py
index 9bd3c6d..ffd9ec8 100644
--- a/tests/test_transform.py
+++ b/tests/test_transform.py
@@ -3,30 +3,65 @@
import unittest2
from rsa._compat import b
-from rsa.transform import int2bytes, old_int2bytes
+from rsa.transform import int2bytes, bytes2int, _int2bytes
-class Test_integer_to_bytes(unittest2.TestCase):
+class Test_int2bytes(unittest2.TestCase):
+ def test_accuracy(self):
+ self.assertEqual(int2bytes(123456789), b('\x07[\xcd\x15'))
+ self.assertEqual(_int2bytes(123456789), b('\x07[\xcd\x15'))
+
+ def test_codec_identity(self):
+ self.assertEqual(bytes2int(int2bytes(123456789, 128)), 123456789)
+ self.assertEqual(bytes2int(_int2bytes(123456789, 128)), 123456789)
+
def test_chunk_size(self):
- self.assertEqual(int2bytes(123456789, 6),
- b('\x00\x00\x07[\xcd\x15'))
+ self.assertEqual(int2bytes(123456789, 6), b('\x00\x00\x07[\xcd\x15'))
self.assertEqual(int2bytes(123456789, 7),
b('\x00\x00\x00\x07[\xcd\x15'))
- self.assertEqual(old_int2bytes(123456789, 6),
+
+ self.assertEqual(_int2bytes(123456789, 6),
b('\x00\x00\x07[\xcd\x15'))
- self.assertEqual(old_int2bytes(123456789, 7),
+ self.assertEqual(_int2bytes(123456789, 7),
b('\x00\x00\x00\x07[\xcd\x15'))
+ def test_zero(self):
+ self.assertEqual(int2bytes(0, 4), b('\x00') * 4)
+ self.assertEqual(int2bytes(0, 7), b('\x00') * 7)
+ self.assertEqual(int2bytes(0), b('\x00'))
+
+ self.assertEqual(_int2bytes(0, 4), b('\x00') * 4)
+ self.assertEqual(_int2bytes(0, 7), b('\x00') * 7)
+ self.assertEqual(_int2bytes(0), b('\x00'))
+
+ def test_correctness_against_base_implementation(self):
+ # Slow test.
+ values = [
+ 1 << 512,
+ 1 << 8192,
+ 1 << 77,
+ ]
+ for value in values:
+ self.assertEqual(int2bytes(value), _int2bytes(value),
+ "Boom %d" % value)
+ self.assertEqual(bytes2int(int2bytes(value)),
+ value,
+ "Boom %d" % value)
+ self.assertEqual(bytes2int(_int2bytes(value)),
+ value,
+ "Boom %d" % value)
+
def test_raises_OverflowError_when_chunk_size_is_insufficient(self):
self.assertRaises(OverflowError, int2bytes, 123456789, 3)
self.assertRaises(OverflowError, int2bytes, 299999999999, 4)
- self.assertRaises(OverflowError, old_int2bytes, 123456789, 3)
- self.assertRaises(OverflowError, old_int2bytes, 299999999999, 4)
+
+ self.assertRaises(OverflowError, _int2bytes, 123456789, 3)
+ self.assertRaises(OverflowError, _int2bytes, 299999999999, 4)
def test_raises_ValueError_when_negative_integer(self):
self.assertRaises(ValueError, int2bytes, -1)
- self.assertRaises(ValueError, old_int2bytes, -1)
+ self.assertRaises(ValueError, _int2bytes, -1)
def test_raises_TypeError_when_not_integer(self):
self.assertRaises(TypeError, int2bytes, None)
- self.assertRaises(TypeError, old_int2bytes, None)
+ self.assertRaises(TypeError, _int2bytes, None)