Commits

Yesudeep Mangalapilly  committed 8feac95

Fixes a silly error.

  • Participants
  • Parent commits ce18449

Comments (0)

Files changed (3)

File rsa/common.py

     Number of bits needed to represent a integer excluding any prefix
     0 bits.
 
+    As per definition from http://wiki.python.org/moin/BitManipulation and
+    to match the behavior of the Python 3 API.
+
     :param num:
         Integer value. If num is 0, returns 0. Only the absolute value of the
         number is considered. Therefore, signed integers will be abs(num)
 
 
 def byte_size(number):
-    """Returns the number of bytes required to hold a specific long number.
+    """
+    Returns the number of bytes required to hold a specific long number.
     
     The number of bytes is rounded up.
     """
-    if number == 0:
-        return 0
-    # Does not perform floating-point division and uses built-in divmod
-    # operator.
     quanta, mod = divmod(bit_size(number), 8)
-    if mod:
+    if mod or number == 0:
         quanta += 1
     return quanta
     #return int(math.ceil(bit_size(number) / 8.0))

File tests/test_common.py

         self.assertRaises(struct.error, byte, 256)
         self.assertRaises(struct.error, byte, -1)
 
-
 class Test_byte_size(unittest2.TestCase):
     def test_values(self):
         self.assertEqual(byte_size(1 << 1023), 128)
         self.assertEqual(byte_size(1 << 1024), 129)
 
     def test_zero(self):
-        self.assertEqual(byte_size(0), 0)
+        self.assertEqual(byte_size(0), 1)
+        self.assertEqual(byte_size(255), 1)
+        self.assertEqual(byte_size(256), 2)
+        self.assertEqual(byte_size(0xffff), 2)
+        self.assertEqual(byte_size(0xffffff), 3)
+        self.assertEqual(byte_size(0xffffffff), 4)
+        self.assertEqual(byte_size(0xffffffffff), 5)
+        self.assertEqual(byte_size(0xffffffffffff), 6)
+        self.assertEqual(byte_size(0xffffffffffffff), 7)
+        self.assertEqual(byte_size(0xffffffffffffffff), 8)
+        
 
     def test_bad_type(self):
         self.assertRaises(TypeError, byte_size, [])
 envlist = py25,py26,py27,py32 #,pypy
 
 [pytest]
-addopts = -n4 -v --cov rsa --cov-report term-missing --doctest-modules
+addopts = -n4 -v --cov rsa --cov-report term-missing # --doctest-modules
 
 [testenv]
 commands=py.test []