From 1f05a3b7fb754d6b30300e1e50aeb92aabe6afd6 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Thu, 10 May 2007 18:41:30 +0000 Subject: Fix the array tests. Only a minor change to the C code was required. --- Lib/test/test_array.py | 28 ++++++++++++---------------- Modules/arraymodule.c | 4 +++- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py index 3f8df52..937aa7e 100755 --- a/Lib/test/test_array.py +++ b/Lib/test/test_array.py @@ -755,32 +755,28 @@ tests.append(CharacterTest) if test_support.have_unicode: class UnicodeTest(StringTest): typecode = 'u' - example = str(r'\x01\u263a\x00\ufeff', 'unicode-escape') - smallerexample = str(r'\x01\u263a\x00\ufefe', 'unicode-escape') - biggerexample = str(r'\x01\u263a\x01\ufeff', 'unicode-escape') + example = '\x01\u263a\x00\ufeff' + smallerexample = '\x01\u263a\x00\ufefe' + biggerexample = '\x01\u263a\x01\ufeff' outside = str('\x33') minitemsize = 2 def test_unicode(self): - self.assertRaises(TypeError, array.array, 'b', str('foo', 'ascii')) + self.assertRaises(TypeError, array.array, 'b', 'foo') - a = array.array('u', str(r'\xa0\xc2\u1234', 'unicode-escape')) - a.fromunicode(str(' ', 'ascii')) - a.fromunicode(str('', 'ascii')) - a.fromunicode(str('', 'ascii')) - a.fromunicode(str(r'\x11abc\xff\u1234', 'unicode-escape')) + a = array.array('u', '\xa0\xc2\u1234') + a.fromunicode(' ') + a.fromunicode('') + a.fromunicode('') + a.fromunicode('\x11abc\xff\u1234') s = a.tounicode() - self.assertEqual( - s, - str(r'\xa0\xc2\u1234 \x11abc\xff\u1234', 'unicode-escape') - ) + self.assertEqual(s, '\xa0\xc2\u1234 \x11abc\xff\u1234') - s = str(r'\x00="\'a\\b\x80\xff\u0000\u0001\u1234', 'unicode-escape') + s = '\x00="\'a\\b\x80\xff\u0000\u0001\u1234' a = array.array('u', s) self.assertEqual( repr(a), - r"""array('u', u'\x00="\'a\\b\x80\xff\x00\x01\u1234')""" - ) + "array('u', '\\x00=\"\\'a\\\\b\\x80\\xff\\x00\\x01\\u1234')") self.assertRaises(TypeError, a.fromunicode) diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index c6de243..a5fd503 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -104,7 +104,9 @@ in bounds; that's the responsibility of the caller. static PyObject * c_getitem(arrayobject *ap, Py_ssize_t i) { - return PyString_FromStringAndSize(&((char *)ap->ob_item)[i], 1); + Py_UNICODE buf[1]; + buf[0] = ((unsigned char *)ap->ob_item)[i]; + return PyUnicode_FromUnicode(buf, 1); } static int -- cgit v0.12