diff options
Diffstat (limited to 'sources/pyside2/tests/QtSql')
-rw-r--r-- | sources/pyside2/tests/QtSql/CMakeLists.txt | 3 | ||||
-rw-r--r-- | sources/pyside2/tests/QtSql/bug_1013.py | 58 | ||||
-rw-r--r-- | sources/pyside2/tests/QtSql/qsqldatabaseandqueries_test.py | 99 | ||||
-rw-r--r-- | sources/pyside2/tests/QtSql/qvarianttype_test.py | 62 |
4 files changed, 222 insertions, 0 deletions
diff --git a/sources/pyside2/tests/QtSql/CMakeLists.txt b/sources/pyside2/tests/QtSql/CMakeLists.txt new file mode 100644 index 000000000..8db3a9813 --- /dev/null +++ b/sources/pyside2/tests/QtSql/CMakeLists.txt @@ -0,0 +1,3 @@ +PYSIDE_TEST(bug_1013.py) +PYSIDE_TEST(qsqldatabaseandqueries_test.py) +PYSIDE_TEST(qvarianttype_test.py) diff --git a/sources/pyside2/tests/QtSql/bug_1013.py b/sources/pyside2/tests/QtSql/bug_1013.py new file mode 100644 index 000000000..8657fb9d2 --- /dev/null +++ b/sources/pyside2/tests/QtSql/bug_1013.py @@ -0,0 +1,58 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtCore import * +from PySide2.QtSql import * +import unittest + +class TestBug1013 (unittest.TestCase): + + def someSlot(self, row, record): + record.setValue(0, 2) + self._wasCalled = True + + def testIt(self): + app = QCoreApplication([]) + db = QSqlDatabase.addDatabase('QSQLITE') + db.setDatabaseName(':memory:') + db.open() + query = QSqlQuery() + query.exec_('CREATE TABLE "foo" (id INT);') + model = QSqlTableModel() + model.setTable('foo') + + self._wasCalled = False + model.primeInsert.connect(self.someSlot) + model.select() + QTimer.singleShot(0,lambda: model.insertRow(0) and app.quit()) + app.exec_() + self.assertTrue(self._wasCalled) + self.assertEqual(model.data(model.index(0, 0)), 2) + +if __name__ == "__main__": + unittest.main() diff --git a/sources/pyside2/tests/QtSql/qsqldatabaseandqueries_test.py b/sources/pyside2/tests/QtSql/qsqldatabaseandqueries_test.py new file mode 100644 index 000000000..b99946c44 --- /dev/null +++ b/sources/pyside2/tests/QtSql/qsqldatabaseandqueries_test.py @@ -0,0 +1,99 @@ +#!/usr/bin/python + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +'''Test cases for QtSql database creation, destruction and queries''' + +import sys +import unittest + +from PySide2 import QtSql +from PySide2.QtCore import * +from PySide2.QtWidgets import * + +class Foo(QWidget): + def __init__(self): + QWidget.__init__(self) + self.model = QtSql.QSqlTableModel() + +class SqlDatabaseCreationDestructionAndQueries(unittest.TestCase): + '''Test cases for QtSql database creation, destruction and queries''' + + def setUp(self): + #Acquire resources + self.assertFalse(not QtSql.QSqlDatabase.drivers(), "installed Qt has no DB drivers") + self.assertTrue("QSQLITE" in QtSql.QSqlDatabase.drivers(), "\"QSQLITE\" driver not available in this Qt version") + self.db = QtSql.QSqlDatabase.addDatabase("QSQLITE") + self.db.setDatabaseName(":memory:") + self.assertTrue(self.db.open()) + + def tearDown(self): + #Release resources + self.db.close() + QtSql.QSqlDatabase.removeDatabase(":memory:") + del self.db + + def testTableCreationAndDestruction(self): + #Test table creation and destruction + query = QtSql.QSqlQuery() + query.exec_("CREATE TABLE dummy(id int primary key, dummyfield varchar(20))") + query.exec_("DROP TABLE dummy") + query.clear() + + def testTableInsertionAndRetrieval(self): + #Test table creation, insertion and retrieval + query = QtSql.QSqlQuery() + query.exec_("CREATE TABLE person(id int primary key, " + "firstname varchar(20), lastname varchar(20))") + query.exec_("INSERT INTO person VALUES(101, 'George', 'Harrison')") + query.prepare("INSERT INTO person (id, firstname, lastname) " + "VALUES (:id, :firstname, :lastname)") + query.bindValue(":id", 102) + query.bindValue(":firstname", "John") + query.bindValue(":lastname", "Lennon") + query.exec_() + + lastname = '' + query.exec_("SELECT lastname FROM person where id=101") + self.assertTrue(query.isActive()) + query.next() + lastname = query.value(0) + self.assertEqual(lastname, 'Harrison') + + def testTableModelDeletion(self): + app = QApplication([]) + + bar = Foo() + model = bar.model + del bar + del app + +if __name__ == '__main__': + unittest.main() + diff --git a/sources/pyside2/tests/QtSql/qvarianttype_test.py b/sources/pyside2/tests/QtSql/qvarianttype_test.py new file mode 100644 index 000000000..1eb532cea --- /dev/null +++ b/sources/pyside2/tests/QtSql/qvarianttype_test.py @@ -0,0 +1,62 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +'''Test cases for QVariant::Type converter''' +import unittest +import py3kcompat as py3k +from PySide2.QtSql import QSqlField + +class QVariantTypeTest(unittest.TestCase): + def testQVariantType(self): + f = QSqlField("name", str) + self.assertEqual(f.type(), py3k.unicode) + + f = QSqlField("name", "QString") + self.assertEqual(f.type(), py3k.unicode) + + f = QSqlField("name", "double") + self.assertEqual(f.type(), float) + + f = QSqlField("name", float) + self.assertEqual(f.type(), float) + + f = QSqlField("name", int) + self.assertEqual(f.type(), int) + + if not py3k.IS_PY3K: + f = QSqlField("name", long) + self.assertEqual(f.type(), int) # long isn't registered in QVariant:Type, just in QMetaType::Type + + #f = QSqlField("name", QObject) + #self.assertEqual(f.type(), None) + + f = QSqlField("name", None) + self.assertEqual(f.type(), None) + +if __name__ == '__main__': + unittest.main() |