Adding tests and fixing QString __setitem__ and []
Instead of calling replace, using remove/insert, as there's no way of replacing only 1 char at a given position by another string directly.
This commit is contained in:
parent
2cee6b6fca
commit
5e0169fe50
2 changed files with 60 additions and 2 deletions
|
|
@ -1071,8 +1071,9 @@
|
||||||
</add-function>
|
</add-function>
|
||||||
<add-function signature="__setitem__">
|
<add-function signature="__setitem__">
|
||||||
<inject-code class="target" position="beginning">
|
<inject-code class="target" position="beginning">
|
||||||
|
%CPPSELF.remove(_i, 1);
|
||||||
PyObject* args = Py_BuildValue("(nO)", _i, _value);
|
PyObject* args = Py_BuildValue("(nO)", _i, _value);
|
||||||
PyObject* result = SbkQStringFunc_replace(self, args);
|
PyObject* result = SbkQStringFunc_insert(self, args);
|
||||||
Py_DECREF(args);
|
Py_DECREF(args);
|
||||||
Py_XDECREF(result);
|
Py_XDECREF(result);
|
||||||
return !result ? -1 : 0;
|
return !result ? -1 : 0;
|
||||||
|
|
|
||||||
|
|
@ -42,8 +42,65 @@ class QStringOperatorEqual(unittest.TestCase):
|
||||||
string = 'another test string'
|
string = 'another test string'
|
||||||
self.assertEqual(QString(string), QByteArray(string))
|
self.assertEqual(QString(string), QByteArray(string))
|
||||||
|
|
||||||
|
|
||||||
|
class QStringOperatorAtSetter(unittest.TestCase):
|
||||||
|
'''Test case for operator QString[] - __setitem__'''
|
||||||
|
|
||||||
|
def testSetterString(self):
|
||||||
|
'''QString[x] = pythonstring'''
|
||||||
|
obj = QString('123456')
|
||||||
|
obj[1] = '0'
|
||||||
|
self.assertEqual(obj, QString('103456'))
|
||||||
|
|
||||||
|
def testSetterStringLarge(self):
|
||||||
|
'''QString[x] = pythonstring (larget than 1 char)'''
|
||||||
|
obj = QString('123456')
|
||||||
|
obj[3] = 'abba'
|
||||||
|
self.assertEqual(obj, QString('123abba56'))
|
||||||
|
|
||||||
|
def testSetterQString(self):
|
||||||
|
'''QString[x] = QString'''
|
||||||
|
obj = QString('123456')
|
||||||
|
obj[3] = QString('string')
|
||||||
|
self.assertEqual(obj, QString('123string56'))
|
||||||
|
|
||||||
|
def testSetterQByteArray(self):
|
||||||
|
'''QString[x] = qbytearray'''
|
||||||
|
obj = QString('123456')
|
||||||
|
obj[3] = QByteArray('array')
|
||||||
|
self.assertEqual(obj, QString('123array56'))
|
||||||
|
|
||||||
|
|
||||||
|
class QStringOperatorAtSetterNegativeIndex(unittest.TestCase):
|
||||||
|
'''Test case for QString[] - __setitem__ - for negative index'''
|
||||||
|
|
||||||
|
def testSetterNegativeIndex(self):
|
||||||
|
'''QString[x] = string - negative index'''
|
||||||
|
obj = QString('123456')
|
||||||
|
obj[-3] = 'array'
|
||||||
|
self.assertEqual(obj, QString('123array56'))
|
||||||
|
|
||||||
|
|
||||||
|
class QStringOperatorAtSetterLargeIndex(unittest.TestCase):
|
||||||
|
'''Test case for QString[] - __setitem__ - for 'overflown' index'''
|
||||||
|
|
||||||
|
def testSetterLargeIndexEmpty(self):
|
||||||
|
'''QString[x] = somestring - Overflow index on empty string'''
|
||||||
|
# should pad with spaces if the index is larger
|
||||||
|
obj = QString('')
|
||||||
|
obj[2] = 'a'
|
||||||
|
self.assertEqual(obj, QString(' a'))
|
||||||
|
|
||||||
|
def testSetterLargeIndexNormal(self):
|
||||||
|
'''QString[x] = somestring - Overflow index on normal string'''
|
||||||
|
# should pad with spaces if the index is larger
|
||||||
|
obj = QString('mystring')
|
||||||
|
obj[10] = 'normal'
|
||||||
|
self.assertEqual(obj, QString('mystring normal'))
|
||||||
|
|
||||||
|
|
||||||
class QStringOperatorAt(unittest.TestCase):
|
class QStringOperatorAt(unittest.TestCase):
|
||||||
'''TestCase for operator QString[]'''
|
'''TestCase for operator QString[] - __getitem__'''
|
||||||
|
|
||||||
def testInRange(self):
|
def testInRange(self):
|
||||||
#QString[x] where x is a valid index
|
#QString[x] where x is a valid index
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue