From aadfb8afc9d7f9ae00bdb53b72e39ff0b2bebe6d Mon Sep 17 00:00:00 2001 From: Boxiang Sun Date: Sat, 28 Apr 2018 10:29:30 +0800 Subject: Implement Python slicing support for QByteArray PySide2 for Python 3 didn't support get item by slice, e.g. ``` >>> from PySide2.QtCore import QByteArray >>> ba = QByteArray('1234567890') >>> ba[2:4] Traceback (most recent call last): File "", line 1, in TypeError: sequence index must be integer, not 'slice' ``` This is because get item by slice is supported by mp_subscript. But current PySide2 doesn't implemented it. So I added __mgetitem__ in QByteArray. And we also need to keep __getitem__ to support iterate over QByteArray. Also removed the __getslice__ from QByteArray. Task-number: PYSIDE-567 Change-Id: I01f79cc2ab8700da92155cfad96be2e98bb8b331 Reviewed-by: Alexandru Croitor --- sources/pyside2/tests/QtCore/qbytearray_test.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'sources/pyside2/tests') diff --git a/sources/pyside2/tests/QtCore/qbytearray_test.py b/sources/pyside2/tests/QtCore/qbytearray_test.py index c6008cf12..0be972c0a 100644 --- a/sources/pyside2/tests/QtCore/qbytearray_test.py +++ b/sources/pyside2/tests/QtCore/qbytearray_test.py @@ -152,15 +152,20 @@ class QByteArrayOnQVariant(unittest.TestCase): a = QSettings().value("some_prop", QByteArray()) self.assertEqual(type(a), QByteArray) -class TestBug666(unittest.TestCase): - '''QByteArray does not support slices''' +class TestBug567(unittest.TestCase): + ''' + QByteArray should support slices + ''' def testIt(self): - if not py3k.IS_PY3K: - ba = QByteArray('1234567890') - self.assertEqual(ba[2:4], '34') - self.assertEqual(ba[:4], '1234') - self.assertEqual(ba[4:], '567890') - self.assertEqual(len(ba[4:1]), 0) + ba = QByteArray('1234567890') + self.assertEqual(ba[2:4], '34') + self.assertEqual(ba[:4], '1234') + self.assertEqual(ba[4:], '567890') + self.assertEqual(len(ba[4:1]), 0) + self.assertEqual(ba[::-1], '0987654321') + self.assertEqual(ba[::2], '13579') + self.assertEqual(ba[::-2], '08642') + self.assertEqual(ba[2:8:3], '36') class QByteArrayBug514(unittest.TestCase): def testIt(self): -- cgit v1.2.3