summaryrefslogtreecommitdiffstats
path: root/tests/auto/qscriptcontext
diff options
context:
space:
mode:
authorOlivier Goffart <ogoffart@trolltech.com>2009-08-24 08:34:57 (GMT)
committerOlivier Goffart <ogoffart@trolltech.com>2009-08-24 08:34:57 (GMT)
commit648498dd839d88ea6ce9889eb71e16ac9a42e988 (patch)
tree5615d0fda515bddbe915930679599f026a6fabda /tests/auto/qscriptcontext
parent351870317388ac7479b39015263f1db440cc6587 (diff)
downloadQt-648498dd839d88ea6ce9889eb71e16ac9a42e988.zip
Qt-648498dd839d88ea6ce9889eb71e16ac9a42e988.tar.gz
Qt-648498dd839d88ea6ce9889eb71e16ac9a42e988.tar.bz2
Fix QScriptContext::argumentObjects for function called with QScriptValue::call
They have the hostCallFrameFlag, but are function context, not <eval> context
Diffstat (limited to 'tests/auto/qscriptcontext')
-rw-r--r--tests/auto/qscriptcontext/tst_qscriptcontext.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/auto/qscriptcontext/tst_qscriptcontext.cpp b/tests/auto/qscriptcontext/tst_qscriptcontext.cpp
index a0c56ed..ef609e0 100644
--- a/tests/auto/qscriptcontext/tst_qscriptcontext.cpp
+++ b/tests/auto/qscriptcontext/tst_qscriptcontext.cpp
@@ -559,6 +559,11 @@ static QScriptValue custom_eval(QScriptContext *ctx, QScriptEngine *eng)
return eng->evaluate(ctx->argumentsObject().property(0).toString(), ctx->argumentsObject().property(1).toString());
}
+static QScriptValue custom_call(QScriptContext *ctx, QScriptEngine *)
+{
+ return ctx->argumentsObject().property(0).call(QScriptValue(), QScriptValueList() << ctx->argumentsObject().property(1));
+}
+
void tst_QScriptContext::backtrace_data()
{
QTest::addColumn<QString>("code");
@@ -681,7 +686,36 @@ void tst_QScriptContext::backtrace_data()
QTest::newRow("two function") << source << expected;
}
+ {
+ QString func("function foo(a, b) {\n"
+ " return bt(a);\n"
+ "}");
+
+ QString source = func + QString::fromLatin1("\n"
+ "custom_call(foo, 'hello');\n"
+ "var a = 1\n");
+
+ QStringList expected;
+ expected << "<native>('hello') at -1"
+ << "foo(a = 'hello') at testfile:2"
+ << QString("<native>(%1, 'hello') at -1").arg(func)
+ << "<global>() at testfile:4";
+ QTest::newRow("call") << source << expected;
+ }
+
+ {
+ QString source = QString::fromLatin1("\n"
+ "custom_call(bt, 'hello_world');\n"
+ "var a = 1\n");
+
+ QStringList expected;
+ expected << "<native>('hello_world') at -1"
+ << "<native>(function () {\n [native code]\n}, 'hello_world') at -1"
+ << "<global>() at testfile:2";
+
+ QTest::newRow("call native") << source << expected;
+ }
}
@@ -693,6 +727,7 @@ void tst_QScriptContext::backtrace()
QScriptEngine eng;
eng.globalObject().setProperty("bt", eng.newFunction(getBacktrace));
eng.globalObject().setProperty("custom_eval", eng.newFunction(custom_eval));
+ eng.globalObject().setProperty("custom_call", eng.newFunction(custom_call));
QString fileName = "testfile";
QScriptValue ret = eng.evaluate(code, fileName);