diff options
Diffstat (limited to 'tests/QtCore/qstringlist_test.py')
-rw-r--r-- | tests/QtCore/qstringlist_test.py | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/tests/QtCore/qstringlist_test.py b/tests/QtCore/qstringlist_test.py new file mode 100644 index 000000000..031051684 --- /dev/null +++ b/tests/QtCore/qstringlist_test.py @@ -0,0 +1,171 @@ + +# -*- coding: utf-8 -*- + +'''Test cases for QStringList''' + +import unittest +from random import shuffle + +from PySide.QtCore import QStringList, QString + +from helper import random_string + +class UsesManyStrings(unittest.TestCase): + '''Helper class to setup a list of strings and QStrings''' + def setUp(self): + #Creates a list of strings and python strings + self.size = 10 + # List of Python strings + self.samples = [random_string() for x in range(self.size)] + # List of QStrings + self.strings = map(QString, self.samples) + + self.obj = QStringList(self.strings) + + +class TestConstructorBasic(unittest.TestCase): + '''Basic constructor test''' + + def testEmpty(self): + #QStringList() - default constructor + obj = QStringList() + self.assert_(isinstance(obj, QStringList)) + + def testQString(self): + #QStringList(QString) + qstr = QString('aaaa') + obj = QStringList(qstr) + self.assert_(isinstance(obj, QStringList)) + + def testPyString(self): + #QStringList(python_string) constructor + string = 'forty two' + obj = QStringList(string) + self.assert_(isinstance(obj, QStringList)) + + def testPyStringUnicode(self): + #QStringList(unicode python_string) constructor + string = 'Nação Zumbi' + obj = QStringList(string) + self.assert_(isinstance(obj, QStringList)) + + +class TestConstructorList(UsesManyStrings): + '''Test case for QStringList(List) constructor''' + + def testListQString(self): + #QStringList([QString]) constructor + obj = QStringList(self.strings) + self.assert_(isinstance(obj, QStringList)) + + def testListPyString(self): + #QStringList([python_string]) constructor + obj = QStringList(self.samples) + self.assert_(isinstance(obj, QStringList)) + + def testListMixed(self): + #QStringList([python_string and QString]) mixed constructor + mixed = self.samples + self.strings + shuffle(mixed) + obj = QStringList(mixed) + self.assert_(isinstance(obj, QStringList)) + + def testCopyList(self): + #QStringList(QStringList(list)) - copy constructor + obj = QStringList(self.strings) + obj2 = QStringList(obj) + self.assert_(isinstance(obj2, QStringList)) + self.assertEqual(obj, obj2) + + +class TestComparison(unittest.TestCase): + '''Test case for comparison of QStringLists''' + + def testEqual(self): + #QStringList == QStringList + string = QString('aaaabvbbcccedde') + obj1 = QStringList(string) + obj2 = QStringList(string) + self.assertEqual(obj1, obj2) + + +class TestIndexing(unittest.TestCase): + '''Test case for indexing through []''' + def testInvalidIndexEmpty(self): + #QStringList[x] for empty list + obj = QStringList() + self.assertRaises(IndexError, lambda:obj[0]) + + def testInvalidIndexQString(self): + #QStringList[1] raising IndexError for QStringList(QString) + obj = QStringList(QString('aaaaa')) + self.assertRaises(IndexError, lambda:obj[1]) + + def testValidIndexQString(self): + #QStringList[0] not raising IndexError for QStringList(QString) + string = QString('abcdefg') + obj = QStringList(string) + self.assertEqual(obj[0], string) + + def testNegativeIndexing(self): + #QStringList[-1] not raising IndexError for QStringList(QString) + string = QString('abcdefg') + obj = QStringList(string) + self.assertEqual(obj[-1], string) + + +class TestListIndexing(UsesManyStrings): + '''Test case for indexing QStringList longer than 1 string''' + + def testValid(self): + #QStringList[] for valid indexes + for i in range(self.size): + self.assertEqual(self.strings[i], self.obj[i]) + + def testNegativeValid(self): + #QStringList[] for valid indexes + for i in range(-1, -self.size, -1): + self.assertEqual(self.strings[i], self.obj[i]) + + def testInvalid(self): + #QStringList[] for invalid negative indexes + self.assertRaises(IndexError, lambda : self.obj[self.size]) + self.assertRaises(IndexError, lambda : self.obj[-(self.size+1)]) + + +class TestSlicing(UsesManyStrings): + '''Test case for slicing a QStringList''' + + def testSlicing(self): + #QStringList slicing + for i in range(self.size): + self.assertEqual(self.obj[i:], self.strings[i:]) + self.assertEqual(self.obj[:i], self.strings[:i]) + for j in range(i): + self.assertEqual(self.obj[j:i], self.strings[j:i]) + + for i in range(-1, -self.size, -1): + self.assertEqual(self.obj[:i], self.strings[:i]) + + +class TestShiftOperator(UsesManyStrings): + '''Test case for QStringList lshift operator''' + + def testShiftOperator(self): + #QStringList lshift + a = QStringList() + a << "a" << "b" << "c"; + self.assertEquals(3, a.count()) + b = ["1", "2", "3"] + c = ["4", "5", "6"] + a << b << c + self.assertEquals(9, a.count()) + + def testShiftOperator(self): + #QStringList lshift + a = QStringList() + b = ["1", 2, "3"] + self.assertRaises(TypeError, a.__lshift__, b) + +if __name__ == '__main__': + unittest.main() |