From 20470e30d11733ada5443ff993d8518aa14737ca Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Wed, 17 Mar 2010 12:56:52 +1000 Subject: Tests for default count(), get() values should be run on the worker list model instead of being ignored. Also do some cleaning up in the list model. --- src/declarative/util/qdeclarativelistmodel.cpp | 2 +- .../util/qdeclarativelistmodelworkeragent.cpp | 7 +--- .../qdeclarativelistmodel/data/model.qml | 10 ++--- .../qdeclarativelistmodel/data/script.js | 5 ++- .../tst_qdeclarativelistmodel.cpp | 44 ++++++++++++---------- 5 files changed, 33 insertions(+), 35 deletions(-) diff --git a/src/declarative/util/qdeclarativelistmodel.cpp b/src/declarative/util/qdeclarativelistmodel.cpp index 61e49ce..824e1b5 100644 --- a/src/declarative/util/qdeclarativelistmodel.cpp +++ b/src/declarative/util/qdeclarativelistmodel.cpp @@ -483,7 +483,7 @@ void QDeclarativeListModel::append(const QScriptValue& valuemap) qmlInfo(this) << tr("append: value is not an object"); return; } - + insert(count(), valuemap); } diff --git a/src/declarative/util/qdeclarativelistmodelworkeragent.cpp b/src/declarative/util/qdeclarativelistmodelworkeragent.cpp index ee43447..2951262 100644 --- a/src/declarative/util/qdeclarativelistmodelworkeragent.cpp +++ b/src/declarative/util/qdeclarativelistmodelworkeragent.cpp @@ -160,9 +160,6 @@ void QDeclarativeListModelWorkerAgent::insert(int index, const QScriptValue &val QScriptValue QDeclarativeListModelWorkerAgent::get(int index) const { - if (index < 0 || index >= count()) - return m_engine->undefinedValue(); - return m_copy->get(index); } @@ -206,7 +203,7 @@ bool QDeclarativeListModelWorkerAgent::event(QEvent *e) FlatListModel *orig = m_orig->m_flat; FlatListModel *copy = s->list->m_flat; if (!orig || !copy) { - qWarning("QML List worker: cannot synchronize lists"); + qWarning("QML ListModel worker: sync() failed"); return QObject::event(e); } orig->m_roles = copy->m_roles; @@ -233,8 +230,6 @@ bool QDeclarativeListModelWorkerAgent::event(QEvent *e) if (cc) emit m_orig->countChanged(m_copy->count()); - - //qDebug() << "------sync():" << m_copy->count() << s->list->count() << m_orig->count(); } } diff --git a/tests/auto/declarative/qdeclarativelistmodel/data/model.qml b/tests/auto/declarative/qdeclarativelistmodel/data/model.qml index 97e3030..ebd4ebf 100644 --- a/tests/auto/declarative/qdeclarativelistmodel/data/model.qml +++ b/tests/auto/declarative/qdeclarativelistmodel/data/model.qml @@ -4,20 +4,18 @@ Item { id: item property var model property bool done: false + property var result - function evalExpressionViaWorker(expr) { + function evalExpressionViaWorker(commands) { done = false - if (expr[expr.length-1] == ';') - expr = expr.substring(0, expr.length-1) - var cmds = expr.split(';') - - worker.sendMessage({'commands': cmds, 'model': model}) + worker.sendMessage({'commands': commands, 'model': model}) } WorkerScript { id: worker source: "script.js" onMessage: { + item.result = messageObject.result item.done = true } } diff --git a/tests/auto/declarative/qdeclarativelistmodel/data/script.js b/tests/auto/declarative/qdeclarativelistmodel/data/script.js index bfeeb8b..66a4acb 100644 --- a/tests/auto/declarative/qdeclarativelistmodel/data/script.js +++ b/tests/auto/declarative/qdeclarativelistmodel/data/script.js @@ -1,12 +1,13 @@ WorkerScript.onMessage = function(msg) { + var result = null try { for (var i=0; ideleteLater(); - loop.exec(); + QDeclarativeExpression e(eng.rootContext(), operations.last().toString(), &model); + if (QByteArray(QTest::currentDataTag()).startsWith("nested")) + QVERIFY(e.value().toInt() != result); + else + QCOMPARE(e.value().toInt(), result); + } + delete item; QTest::ignoreMessage(QtWarningMsg, "QThread: Destroyed while thread is still running"); qApp->processEvents(); } @@ -354,7 +358,7 @@ void tst_QDeclarativeListModel::convertNestedToFlat_fail() QTest::ignoreMessage(QtWarningMsg, "QML ListModel (unknown location) List contains nested list values and cannot be used from a worker script"); QVERIFY(QMetaObject::invokeMethod(item, "evalExpressionViaWorker", Q_ARG(QVariant, script))); - waitForWorker(item); + waitForWorker(item); QCOMPARE(model.count(), 2); -- cgit v0.12