Given that ord() of a bytes object of length 1 is defined, it should
never return a negative number.
This commit is contained in:
parent
2b08b38dea
commit
f9e91c9c58
|
@ -1383,6 +1383,15 @@ class BuiltinTest(unittest.TestCase):
|
|||
self.assertEqual(ord(' '), 32)
|
||||
self.assertEqual(ord('A'), 65)
|
||||
self.assertEqual(ord('a'), 97)
|
||||
self.assertEqual(ord('\x80'), 128)
|
||||
self.assertEqual(ord('\xff'), 255)
|
||||
|
||||
self.assertEqual(ord(b' '), 32)
|
||||
self.assertEqual(ord(b'A'), 65)
|
||||
self.assertEqual(ord(b'a'), 97)
|
||||
self.assertEqual(ord(b'\x80'), 128)
|
||||
self.assertEqual(ord(b'\xff'), 255)
|
||||
|
||||
if have_unicode:
|
||||
self.assertEqual(ord(chr(sys.maxunicode)), sys.maxunicode)
|
||||
self.assertRaises(TypeError, ord, 42)
|
||||
|
|
|
@ -671,6 +671,11 @@ class BytesTest(unittest.TestCase):
|
|||
self.assertEqual(b.rstrip(b'im'), b'mississipp')
|
||||
self.assertEqual(b.rstrip(b'pim'), b'mississ')
|
||||
|
||||
def test_ord(self):
|
||||
b = b'\0A\x7f\x80\xff'
|
||||
self.assertEqual([ord(b[i:i+1]) for i in range(len(b))],
|
||||
[0, 65, 127, 128, 255])
|
||||
|
||||
# Optimizations:
|
||||
# __iter__? (optimization)
|
||||
# __reversed__? (optimization)
|
||||
|
|
|
@ -1482,7 +1482,7 @@ builtin_ord(PyObject *self, PyObject* obj)
|
|||
/* XXX Hopefully this is temporary */
|
||||
size = PyBytes_GET_SIZE(obj);
|
||||
if (size == 1) {
|
||||
ord = (long)*PyBytes_AS_STRING(obj);
|
||||
ord = (long)((unsigned char)*PyBytes_AS_STRING(obj));
|
||||
return PyInt_FromLong(ord);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue