diff options
Diffstat (limited to 'tests/QtCore/qstring_test.py')
-rw-r--r-- | tests/QtCore/qstring_test.py | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/tests/QtCore/qstring_test.py b/tests/QtCore/qstring_test.py new file mode 100644 index 000000000..3f0fb4931 --- /dev/null +++ b/tests/QtCore/qstring_test.py @@ -0,0 +1,192 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +'''Test cases for QString''' + +import unittest +import ctypes +import sys + +from PySide.QtCore import QString, QByteArray, QObject + +class QStringToNumber(unittest.TestCase): + def testReturnValueTypes(self): + obj = QString('37') + val, ok = obj.toInt() + self.assertEqual(type(val), int) + self.assertEqual(type(ok), bool) + + def testToNumberInt(self): + obj = QString('37') + self.assertEqual((37, True), obj.toInt()) + + def testToNumberLong(self): + obj = QString('3700000') + self.assertEqual((3700000, True), obj.toInt()) + + def testToNumberShort(self): + obj = QString('33') + self.assertEqual((ctypes.c_short(33).value, True), obj.toShort()) + + def testToNumberShortNegative(self): + obj = QString('-4') + self.assertEqual((ctypes.c_short(-4).value, True), obj.toShort()) + + def testToNumberShortOverflow(self): + obj = QString('1000000') + self.assertEqual(False, obj.toShort()[1]) + + def testToNumberUInt(self): + obj = QString('33') + self.assertEqual((ctypes.c_uint(33).value, True), obj.toUInt()) + + def testToNumberUIntNegative(self): + obj = QString('-4') + self.assertEqual(False, obj.toUInt()[1]) + + def testToNumberUIntOverflow(self): + obj = QString('10000000000000') + self.assertEqual(False, obj.toUInt()[1]) + + def testToNumberULong(self): + obj = QString('33') + self.assertEqual((ctypes.c_ulong(33).value, True), obj.toULong()) + + def testToNumberULongNegative(self): + obj = QString('-4') + self.assertEqual(False, obj.toULong()[1]) + + def testToNumberUShort(self): + obj = QString('33') + self.assertEqual((ctypes.c_ushort(33).value, True), obj.toUShort()) + + def testToNumberUShortLarge(self): + obj = QString('128') + self.assertEqual((ctypes.c_ushort(128).value, True), obj.toUShort()) + + def testToNumberUShortOverflow(self): + obj = QString('205000') + self.assertEqual(False, obj.toUShort()[1]) + + def testToNumberUShortNegative(self): + obj = QString('-4') + self.assertEqual(False, obj.toUShort()[1]) + + def testToNumberIntUsingHex(self): + obj = QString('2A') + self.assertEquals((0, False), obj.toInt()) + self.assertEqual((int(str(obj), 16), True), obj.toInt(16)) + + def testToNumberIntUsingHex(self): + obj = QString('101010') + self.assertEqual((int(str(obj), 2), True), obj.toInt(2)) + + def testToNumberFloat(self): + obj = QString('37.109') + self.assertEqual(ctypes.c_float(37.109).value, + obj.toFloat()[0]) + + def testToNumberDouble(self): + obj = QString('37.109') + self.assertEqual(ctypes.c_double(37.109).value, + obj.toDouble()[0]) + + def testToULongLong(self): + obj = QString('37109') + self.assertEqual(ctypes.c_ulong(37109).value, + obj.toULongLong()[0]) + +class QStringConstructor(unittest.TestCase): + '''Test case for QString constructors''' + + def testQStringDefault(self): + #QString() + obj1 = QString() + obj2 = QString() + + self.assertEqual(obj1, obj2) + + def testNullQString(self): + s = QString(None) + self.assertTrue(s.isNull()) + + def testQStringFromPy(self): + #QString(const char*) + sample = 'a new string' + obj1 = QString(sample) + obj2 = QString(sample) + self.assertEqual(obj1, obj2) + + def testQStringFromUnicode(self): + sample = u'áâãà' + obj1 = QString(sample) + obj2 = QString(sample) + self.assertEqual(obj1, obj2) + self.assertEqual(obj1, sample) + self.assertEqual(obj2, sample) + + def testQStringFromByteArray(self): + # QByteArray(const char *) must be working + sample = QByteArray('foo') + obj1 = QString(sample) + obj2 = QString(sample) + self.assertEqual(obj1, obj2) + + def testQStringArg(self): + a = QString("%1 %2 %3").arg(1).arg("two").arg(3.14) + self.assertEquals("1 two 3.14", str(a)) + + def testQStringArgNegative(self): + a = QString("%1").arg(-20) + self.assertEquals("-20", str(a)) + + +class QStringComparison(unittest.TestCase): + '''Test case for comparison to python strings''' + + def testComparePyString(self): + #Compare QStrings and Python strings. + py = '' + qstr = QString() + self.assertEqual(py, qstr) + + py = 'The quick brown fox jumps over the lazy dog' + qstr = QString(py) + self.assertEqual(py, qstr) + +class QStringRange(unittest.TestCase): + '''Test case for ranges in python strings''' + + def testSimpleRange(self): + #Test open start and open end intervals + py = 'The quick brown fox jumps over the lazy dog' + qstr = QString(py) + self.assertEqual(py[5:], qstr[5:]) + self.assertEqual(py[:7], qstr[:7]) + +class QStringIndexOf(unittest.TestCase): + def testEmpty(self): + string = QString() + self.assertEqual(string.indexOf(QString("aaa")), -1) + self.assertEqual(string.indexOf(QString()), 0) + + def testString(self): + string = QString("the quick brown fox") + self.assertEqual(string.indexOf("quick", 0), 4) + + +class QStringImplicitConvertion(unittest.TestCase): + '''Implicit conversions for QString''' + + def testQByteArray(self): + '''QString implicitly conversion: QByteArray''' + obj = QObject() + obj.setObjectName(QByteArray('foobar')) + self.assertEqual(obj.objectName(), QString('foobar')) + +class QStringHash(unittest.TestCase): + def testHash(self): + self.assertEqual(hash("key"), hash(QString("key"))) + self.assertEqual(hash(u"aéióu"), hash(QString(u"aéióu"))) + +if __name__ == '__main__': + unittest.main() |