From ce42ea6eebacdc4ae3cef913d03d06dd77bb1516 Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Wed, 15 Dec 2010 19:11:40 -0300 Subject: Updated the PySide test related to Python model returning data to C++. --- tests/pysidetest/modelview_test.py | 33 ++++++++++++++++++++++++++------- tests/pysidetest/testview.cpp | 7 ++----- 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 #include -QObject* +QVariant TestView::getData() { QModelIndex index; QVariant data = m_model->data(index); - QObject* obj = 0; - if (data.canConvert()) - obj = data.value(); - 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; }; -- cgit v1.2.3