From 7b876158dc8a69e030d09e6cf78a1e8b6662f0c3 Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Wed, 30 Jan 2008 09:51:48 +0000 Subject: Fixed #1969: split and rsplit in bytearray are inconsistent --- Lib/test/test_bytes.py | 11 ++++++++++- Misc/NEWS | 2 ++ Objects/bytesobject.c | 6 +++--- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py index 0fd2f76..40082c3 100644 --- a/Lib/test/test_bytes.py +++ b/Lib/test/test_bytes.py @@ -706,7 +706,7 @@ class BytesTest(unittest.TestCase): self.assertEqual(b.rsplit(None, 2), [b'arf', b'barf']) self.assertEqual(b' a bb c '.rsplit(None, 0), [b' a bb c']) self.assertEqual(b' a bb c '.rsplit(None, 1), [b' a bb', b'c']) - self.assertEqual(b' a bb c '.rsplit(None,2), [b' a', b'bb', b'c']) + self.assertEqual(b' a bb c '.rsplit(None, 2), [b' a', b'bb', b'c']) self.assertEqual(b' a bb c '.rsplit(None, 3), [b'a', b'bb', b'c']) def test_rsplit_bytearray(self): @@ -715,6 +715,15 @@ class BytesTest(unittest.TestCase): def test_rsplit_string_error(self): self.assertRaises(TypeError, b'a b'.rsplit, ' ') + def test_rsplit_unicodewhitespace(self): + b = b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F" + self.assertEqual(b.split(), [b'\x1c\x1d\x1e\x1f']) + self.assertEqual(b.rsplit(), [b'\x1c\x1d\x1e\x1f']) + ba = bytearray(b) + self.assertEqual(ba.split(), [bytearray(b'\x1c\x1d\x1e\x1f')]) + self.assertEqual(ba.rsplit(), [bytearray(b'\x1c\x1d\x1e\x1f')]) + + def test_partition(self): b = b'mississippi' self.assertEqual(b.partition(b'ss'), (b'mi', b'ss', b'issippi')) diff --git a/Misc/NEWS b/Misc/NEWS index d40a422..a2dbee4 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,8 @@ What's New in Python 3.0a3? Core and Builtins ----------------- +- Issue #1969: split and rsplit in bytearray are inconsistent + - map() and itertools.imap() no longer accept None for the first argument. Use zip() instead. diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c index 45dcb91..e0e3cd0 100644 --- a/Objects/bytesobject.c +++ b/Objects/bytesobject.c @@ -2388,16 +2388,16 @@ rsplit_whitespace(const char *s, Py_ssize_t len, Py_ssize_t maxcount) for (i = j = len - 1; i >= 0; ) { /* find a token */ - while (i >= 0 && Py_UNICODE_ISSPACE(s[i])) + while (i >= 0 && ISSPACE(s[i])) i--; j = i; - while (i >= 0 && !Py_UNICODE_ISSPACE(s[i])) + while (i >= 0 && !ISSPACE(s[i])) i--; if (j > i) { if (maxcount-- <= 0) break; SPLIT_ADD(s, i + 1, j + 1); - while (i >= 0 && Py_UNICODE_ISSPACE(s[i])) + while (i >= 0 && ISSPACE(s[i])) i--; j = i; } -- cgit v0.12