diff options
-rw-r--r-- | tests/pysidetest/modelview_test.py | 33 | ||||
-rw-r--r-- | tests/pysidetest/testview.cpp | 7 | ||||
-rw-r--r-- | tests/pysidetest/testview.h | 2 |
3 files changed, 29 insertions, 13 deletions
diff --git a/tests/pysidetest/modelview_test.py b/tests/pysidetest/modelview_test.py index ebab200af..8629b61c9 100644 --- a/tests/pysidetest/modelview_test.py +++ b/tests/pysidetest/modelview_test.py @@ -12,12 +12,15 @@ class MyObject(QObject): pass class ListModelKeepsReference(QAbstractListModel): + def __init__(self, parent=None): + QAbstractListModel.__init__(self, parent) + self.obj = MyObject() + self.obj.setObjectName(object_name) + def rowCount(self, parent=QModelIndex()): return 1 def data(self, index, role): - self.obj = MyObject() - self.obj.setObjectName(object_name) return self.obj class ListModelDoesntKeepsReference(QAbstractListModel): @@ -29,22 +32,38 @@ class ListModelDoesntKeepsReference(QAbstractListModel): obj.setObjectName(object_name) return obj +class ListModelThatReturnsString(QAbstractListModel): + def rowCount(self, parent=QModelIndex()): + return 1 + + def data(self, index, role): + self.obj = 'string' + return self.obj + #return 'string' + + class ModelViewTest(unittest.TestCase): - def testListModelKeepsReference(self): - model = ListModelKeepsReference() + def testListModelDoesntKeepsReference(self): + model = ListModelDoesntKeepsReference() view = TestView(model) obj = view.getData() - self.assertEqual(type(obj), MyObject) + self.assertEqual(type(obj), QObject) self.assertEqual(obj.objectName(), object_name) - def testListModelDoesntKeepsReference(self): - model = ListModelDoesntKeepsReference() + def testListModelKeepsReference(self): + model = ListModelKeepsReference() view = TestView(model) obj = view.getData() self.assertEqual(type(obj), MyObject) self.assertEqual(obj.objectName(), object_name) + def testListModelThatReturnsString(self): + model = ListModelThatReturnsString() + view = TestView(model) + obj = view.getData() + self.assertEqual(type(obj), unicode) + self.assertEqual(obj, 'string') if __name__ == '__main__': unittest.main() diff --git a/tests/pysidetest/testview.cpp b/tests/pysidetest/testview.cpp index c7e9c6db4..22ef9ddb1 100644 --- a/tests/pysidetest/testview.cpp +++ b/tests/pysidetest/testview.cpp @@ -2,14 +2,11 @@ #include <QDebug> #include <stdio.h> -QObject* +QVariant TestView::getData() { QModelIndex index; QVariant data = m_model->data(index); - QObject* obj = 0; - if (data.canConvert<QObject*>()) - obj = data.value<QObject*>(); - return obj; + return data; } diff --git a/tests/pysidetest/testview.h b/tests/pysidetest/testview.h index 2ae416264..1a65ea459 100644 --- a/tests/pysidetest/testview.h +++ b/tests/pysidetest/testview.h @@ -14,7 +14,7 @@ class PYSIDE_API TestView : public QObject public: TestView(QAbstractListModel* model, QObject* parent = 0) : QObject(parent), m_model(model) {} QAbstractListModel* model() { return m_model; } - QObject* getData(); + QVariant getData(); private: QAbstractListModel* m_model; }; |