aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/testlib
diff options
context:
space:
mode:
authorCharles Yin <charles.yin@nokia.com>2011-07-20 11:28:26 +1000
committerQt by Nokia <qt-info@nokia.com>2011-07-20 05:36:02 +0200
commit29cf717366623bceb4d4e3009600cfa538529c10 (patch)
tree0a82d6887057a21c4ac1bde69e9fb3e46f5d53d3 /src/imports/testlib
parenta1867e5c6229e171b0fac3e57b96295221f2ea0a (diff)
fix qmltest bugs
Change-Id: If814516b1094b85fba46e215b44e1a2b582179c5 Reviewed-on: http://codereview.qt.nokia.com/1858 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Charles Yin <charles.yin@nokia.com>
Diffstat (limited to 'src/imports/testlib')
-rw-r--r--src/imports/testlib/SignalSpy.qml1
-rw-r--r--src/imports/testlib/TestCase.qml13
-rw-r--r--src/imports/testlib/main.cpp42
3 files changed, 50 insertions, 6 deletions
diff --git a/src/imports/testlib/SignalSpy.qml b/src/imports/testlib/SignalSpy.qml
index f32a9c6129..59d44185a1 100644
--- a/src/imports/testlib/SignalSpy.qml
+++ b/src/imports/testlib/SignalSpy.qml
@@ -40,6 +40,7 @@
****************************************************************************/
import QtQuick 2.0
+import QtTest 1.0
Item {
id: spy
diff --git a/src/imports/testlib/TestCase.qml b/src/imports/testlib/TestCase.qml
index 22fd5b66bb..1a222a6138 100644
--- a/src/imports/testlib/TestCase.qml
+++ b/src/imports/testlib/TestCase.qml
@@ -145,6 +145,7 @@ Item {
if ("mapFromItem" in o && "mapToItem" in o) {
return "declarativeitem"; // @todo improve detection of declarative items
} else if ("x" in o && "y" in o && "z" in o) {
+ console.log("typeof debug:" + o);
return "vector3d"; // Qt3D vector
}
return "object";
@@ -162,18 +163,17 @@ Item {
// Author: Philippe Rathé <prathe@gmail.com>
function qtest_compareInternal(act, exp) {
var success = false;
-
if (act === exp) {
success = true; // catch the most you can
} else if (act === null || exp === null || typeof act === "undefined" || typeof exp === "undefined") {
success = false; // don't lose time with error prone cases
} else {
var typeExp = qtest_typeof(exp), typeAct = qtest_typeof(act)
-
if (typeExp !== typeAct) {
// allow object vs string comparison (e.g. for colors)
// else break on different types
- if ((typeExp === "string" && typeAct === "object") || (typeExp === "object" && typeAct === "string")) {
+ if ((typeExp === "string" && (typeAct === "object") || typeAct == "declarativeitem")
+ || ((typeExp === "object" || typeExp == "declarativeitem") && typeAct === "string")) {
success = (act == exp)
}
} else if (typeExp === "string" || typeExp === "boolean" || typeExp === "number" ||
@@ -227,7 +227,6 @@ Item {
for (i in act) { // be strict: don't ensures hasOwnProperty and go deep
aProperties.push(i); // collect act's properties
-
if (!qtest_compareInternal(act[i], exp[i])) {
eq = false;
break;
@@ -258,7 +257,7 @@ Item {
}
function qtest_formatValue(value) {
- if (typeof value == "object") {
+ if (qtest_typeof(value) == "object") {
if ("x" in value && "y" in value && "z" in value) {
return "Qt.vector3d(" + value.x + ", " +
value.y + ", " + value.z + ")"
@@ -275,6 +274,7 @@ Item {
function compare(actual, expected, msg) {
var act = qtest_formatValue(actual)
var exp = qtest_formatValue(expected)
+
var success = qtest_compareInternal(actual, expected)
if (msg === undefined) {
if (success)
@@ -282,8 +282,9 @@ Item {
else
msg = "Compared values are not the same"
}
- if (!qtest_results.compare(success, msg, act, exp, util.callerFile(), util.callerLine()))
+ if (!qtest_results.compare(success, msg, act, exp, util.callerFile(), util.callerLine())) {
throw new Error("QtQuickTest::fail")
+ }
}
function tryCompare(obj, prop, value, timeout) {
diff --git a/src/imports/testlib/main.cpp b/src/imports/testlib/main.cpp
index 0f27102764..5781b3ddf1 100644
--- a/src/imports/testlib/main.cpp
+++ b/src/imports/testlib/main.cpp
@@ -79,6 +79,48 @@ public:
}
public Q_SLOTS:
+
+ QDeclarativeV8Handle typeName(const QVariant& v) const
+ {
+ QString name(v.typeName());
+ //qDebug() << "type:" << name << " string value:" << v.toString() << " value:" << v;
+ if (v.canConvert<QObject*>()) {
+ QDeclarativeType *type = 0;
+ const QMetaObject *mo = v.value<QObject*>()->metaObject();
+ while (!type && mo) {
+ type = QDeclarativeMetaType::qmlType(mo);
+ mo = mo->superClass();
+ }
+ if (type) {
+ name = type->qmlTypeName();
+ }
+ }
+
+ return QDeclarativeV8Handle::fromHandle(v8::String::New(name.toUtf8()));
+ }
+
+ bool compare(const QVariant& act, const QVariant& exp) const {
+ return act == exp;
+ }
+// QDeclarativeV8Handle toString(const QVariant& v) const
+// {
+// QString name(v.typeName());
+
+// if (v.canConvert<QObject*>()) {
+// QDeclarativeType *type = 0;
+// const QMetaObject *mo = v.value<QObject*>()->metaObject();
+// while (!type && mo) {
+// type = QDeclarativeMetaType::qmlType(mo);
+// mo = mo->superClass();
+// }
+// if (type) {
+// name = type->qmlTypeName();
+// }
+// }
+
+// return QDeclarativeV8Handle::fromHandle(v8::String::New(name.toUtf8()));
+// }
+
QDeclarativeV8Handle callerFile(int frameIndex = 0) const
{
v8::HandleScope scope;