Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r58693:cc896f4fb846
Date: 2012-11-02 17:08 -0700
http://bitbucket.org/pypy/pypy/changeset/cc896f4fb846/
Log: add more from/tobytes tests
diff --git a/pypy/rlib/rbigint.py b/pypy/rlib/rbigint.py
--- a/pypy/rlib/rbigint.py
+++ b/pypy/rlib/rbigint.py
@@ -270,7 +270,7 @@
@staticmethod
def frombytes(s, byteorder, signed):
- if byteorder != "big" and byteorder != "little":
+ if byteorder not in ('big', 'little'):
raise InvalidEndiannessError()
if byteorder != BYTEORDER:
@@ -306,7 +306,7 @@
@jit.elidable
def tobytes(self, nbytes, byteorder, signed):
- if byteorder != "big" and byteorder != "little":
+ if byteorder not in ('big', 'little'):
raise InvalidEndiannessError()
if not signed and self.sign == -1:
raise InvalidSignednessError()
diff --git a/pypy/rlib/test/test_rbigint.py b/pypy/rlib/test/test_rbigint.py
--- a/pypy/rlib/test/test_rbigint.py
+++ b/pypy/rlib/test/test_rbigint.py
@@ -9,7 +9,7 @@
from pypy.rlib import rbigint as lobj
from pypy.rlib.rarithmetic import r_uint, r_longlong, r_ulonglong, intmask
from pypy.rlib.rbigint import (rbigint, SHIFT, MASK, KARATSUBA_CUTOFF,
- _store_digit, _mask_digit)
+ _store_digit, _mask_digit, InvalidEndiannessError, InvalidSignednessError)
from pypy.rlib.rfloat import NAN
from pypy.rpython.test.test_llinterp import interpret
@@ -771,4 +771,19 @@
assert bigint.tolong() == 0x563412FF
s = "\xFF\x02\x03\x04\x05\x06\x07\x08\x09\x10\x11\x12\x13\x14\x15\xFF"
bigint = rbigint.frombytes(s, byteorder="big", signed=False)
- assert s == bigint.tobytes(byteorder="big", signed=False)
+ assert s == bigint.tobytes(16, byteorder="big", signed=False)
+ raises(InvalidEndiannessError, bigint.frombytes, '\xFF', 'foo',
+ signed=True)
+
+ def test_tobytes(self):
+ assert rbigint.fromint(0).tobytes(1, 'big', signed=True) == '\x00'
+ assert rbigint.fromint(-129).tobytes(2, 'big', signed=True) ==
'\xff\x7f'
+ assert rbigint.fromint(-129).tobytes(2, 'little', signed=True) ==
'\x7f\xff'
+ assert rbigint.fromint(65535).tobytes(3, 'big', signed=True) ==
'\x00\xff\xff'
+ assert rbigint.fromint(-65536).tobytes(3, 'little', signed=True) ==
'\x00\x00\xff'
+ assert rbigint.fromint(65535).tobytes(2, 'big', signed=False) ==
'\xff\xff'
+ assert rbigint.fromint(-8388608).tobytes(3, 'little', signed=True) ==
'\x00\x00\x80'
+ i = rbigint.fromint(-8388608)
+ raises(InvalidEndiannessError, i.tobytes, 3, 'foo', signed=True)
+ raises(InvalidSignednessError, i.tobytes, 3, 'little', signed=False)
+ raises(OverflowError, i.tobytes, 2, 'little', signed=True)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit