aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qjsengine
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-10-14 15:48:12 +0200
committerLiang Qi <liang.qi@theqtcompany.com>2015-10-14 15:48:12 +0200
commit7063fefe4b5e866b27001bb9b911fc2f68034e40 (patch)
tree1ce35139475d83399572a3265414c2da3443a321 /tests/auto/qml/qjsengine
parentf3446071da8357620d0c8593a04e3b4fbba88f21 (diff)
parent4f3379352a265bab00a7265f85ffc38a9ca4ffe4 (diff)
Merge remote-tracking branch 'origin/5.6' into dev
Diffstat (limited to 'tests/auto/qml/qjsengine')
-rw-r--r--tests/auto/qml/qjsengine/tst_qjsengine.cpp119
1 files changed, 116 insertions, 3 deletions
diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
index 4c7dba9f90..39bc8b2e5f 100644
--- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp
+++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
@@ -155,7 +155,7 @@ private slots:
void callConstants();
- void installTranslatorFunctions();
+ void installTranslationFunctions();
void translateScript_data();
void translateScript();
void translateScript_crossScript();
@@ -172,6 +172,16 @@ private slots:
void translateScriptUnicodeIdBased();
void translateFromBuiltinCallback();
+ void installConsoleFunctions();
+ void logging();
+ void tracing();
+ void asserts();
+ void exceptions();
+
+ void installGarbageCollectionFunctions();
+
+ void installAllExtensions();
+
void privateMethods();
void engineForObject();
@@ -1480,6 +1490,8 @@ void tst_QJSEngine::gcWithNestedDataStructure()
// The GC must be able to traverse deeply nested objects, otherwise this
// test would crash.
QJSEngine eng;
+ eng.installExtensions(QJSEngine::GarbageCollectionExtension);
+
QJSValue ret = eng.evaluate(
"function makeList(size)"
"{"
@@ -3171,7 +3183,7 @@ void tst_QJSEngine::callConstants()
QCOMPARE(exceptionResult.toString(), QString("TypeError: true is not a function"));
}
-void tst_QJSEngine::installTranslatorFunctions()
+void tst_QJSEngine::installTranslationFunctions()
{
QJSEngine eng;
QJSValue global = eng.globalObject();
@@ -3182,7 +3194,7 @@ void tst_QJSEngine::installTranslatorFunctions()
QVERIFY(global.property("qsTrId").isUndefined());
QVERIFY(global.property("QT_TRID_NOOP").isUndefined());
- eng.installTranslatorFunctions();
+ eng.installExtensions(QJSEngine::TranslationExtension);
QVERIFY(global.property("qsTranslate").isCallable());
QVERIFY(global.property("QT_TRANSLATE_NOOP").isCallable());
QVERIFY(global.property("qsTr").isCallable());
@@ -3597,6 +3609,107 @@ void tst_QJSEngine::translateFromBuiltinCallback()
eng.evaluate("[10,20].forEach(foo)", "script.js");
}
+void tst_QJSEngine::installConsoleFunctions()
+{
+ QJSEngine engine;
+ QJSValue global = engine.globalObject();
+ QVERIFY(global.property("console").isUndefined());
+ QVERIFY(global.property("print").isUndefined());
+
+ engine.installExtensions(QJSEngine::ConsoleExtension);
+ QVERIFY(global.property("console").isObject());
+ QVERIFY(global.property("print").isCallable());
+}
+
+void tst_QJSEngine::logging()
+{
+ QLoggingCategory loggingCategory("js");
+ QVERIFY(loggingCategory.isDebugEnabled());
+ QVERIFY(loggingCategory.isWarningEnabled());
+ QVERIFY(loggingCategory.isCriticalEnabled());
+
+ QJSEngine engine;
+ engine.installExtensions(QJSEngine::ConsoleExtension);
+
+ QTest::ignoreMessage(QtDebugMsg, "console.debug");
+ engine.evaluate("console.debug('console.debug')");
+ QTest::ignoreMessage(QtDebugMsg, "console.log");
+ engine.evaluate("console.log('console.log')");
+ QTest::ignoreMessage(QtInfoMsg, "console.info");
+ engine.evaluate("console.info('console.info')");
+ QTest::ignoreMessage(QtWarningMsg, "console.warn");
+ engine.evaluate("console.warn('console.warn')");
+ QTest::ignoreMessage(QtCriticalMsg, "console.error");
+ engine.evaluate("console.error('console.error')");
+
+ QTest::ignoreMessage(QtDebugMsg, ": 1");
+ engine.evaluate("console.count()");
+
+ QTest::ignoreMessage(QtDebugMsg, ": 2");
+ engine.evaluate("console.count()");
+}
+
+void tst_QJSEngine::tracing()
+{
+ QJSEngine engine;
+ engine.installExtensions(QJSEngine::ConsoleExtension);
+
+ QTest::ignoreMessage(QtDebugMsg, "%entry (:1)");
+ engine.evaluate("console.trace()");
+
+ QTest::ignoreMessage(QtDebugMsg, "a (:1)\nb (:1)\nc (:1)\n%entry (:1)");
+ engine.evaluate("function a() { console.trace(); } function b() { a(); } function c() { b(); }");
+ engine.evaluate("c()");
+}
+
+void tst_QJSEngine::asserts()
+{
+ QJSEngine engine;
+ engine.installExtensions(QJSEngine::ConsoleExtension);
+
+ QTest::ignoreMessage(QtCriticalMsg, "This will fail\n%entry (:1)");
+ engine.evaluate("console.assert(0, 'This will fail')");
+
+ QTest::ignoreMessage(QtCriticalMsg, "This will fail too\n%entry (:1)");
+ engine.evaluate("console.assert(1 > 2, 'This will fail too')");
+}
+
+void tst_QJSEngine::exceptions()
+{
+ QJSEngine engine;
+ engine.installExtensions(QJSEngine::ConsoleExtension);
+
+ QTest::ignoreMessage(QtCriticalMsg, "Exception 1\n%entry (:1)");
+ engine.evaluate("console.exception('Exception 1')");
+}
+
+void tst_QJSEngine::installGarbageCollectionFunctions()
+{
+ QJSEngine engine;
+ QJSValue global = engine.globalObject();
+ QVERIFY(global.property("gc").isUndefined());
+
+ engine.installExtensions(QJSEngine::GarbageCollectionExtension);
+ QVERIFY(global.property("gc").isCallable());
+}
+
+void tst_QJSEngine::installAllExtensions()
+{
+ QJSEngine engine;
+ QJSValue global = engine.globalObject();
+ // Pick out a few properties from each extension and check that they're there.
+ QVERIFY(global.property("qsTranslate").isUndefined());
+ QVERIFY(global.property("console").isUndefined());
+ QVERIFY(global.property("print").isUndefined());
+ QVERIFY(global.property("gc").isUndefined());
+
+ engine.installExtensions(QJSEngine::AllExtensions);
+ QVERIFY(global.property("qsTranslate").isCallable());
+ QVERIFY(global.property("console").isObject());
+ QVERIFY(global.property("print").isCallable());
+ QVERIFY(global.property("gc").isCallable());
+}
+
class ObjectWithPrivateMethods : public QObject
{
Q_OBJECT