| # Copyright 2011 Sybren A. Stüvel <[email protected]> |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # https://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| import unittest |
| from rsa.transform import int2bytes, bytes2int |
| |
| |
| class Test_int2bytes(unittest.TestCase): |
| def test_accuracy(self): |
| self.assertEqual(int2bytes(123456789), b'\x07[\xcd\x15') |
| |
| def test_codec_identity(self): |
| 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, 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') |
| |
| def test_correctness_against_base_implementation(self): |
| # Slow test. |
| values = [ |
| 1 << 512, |
| 1 << 8192, |
| 1 << 77, |
| ] |
| for value in values: |
| 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) |
| |
| def test_raises_ValueError_when_negative_integer(self): |
| self.assertRaises(ValueError, int2bytes, -1) |
| |
| def test_raises_TypeError_when_not_integer(self): |
| self.assertRaises(TypeError, int2bytes, None) |