MCPcopy Create free account
hub / github.com/TeXworks/texworks / execute

Method execute

unit-tests/Scripting_test.cpp:365–421  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

363}
364
365void TestScripting::execute()
366{
367#if WITH_QTSCRIPT
368 JSScriptInterface jsi(this);
369
370 ScriptObject js1{std::unique_ptr<Script>(jsi.newScript(QStringLiteral("does-not-exist")))};
371 ScriptObject js2{std::unique_ptr<Script>(jsi.newScript(QStringLiteral("script1.js")))};
372 ScriptObject js3{std::unique_ptr<Script>(jsi.newScript(QStringLiteral("script2.js")))};
373
374 {
375 MockTarget target;
376 MockAPI api(&js1, &target);
377 QVERIFY(js1.run(api) == false);
378 }
379 {
380 MockTarget target;
381 MockAPI api(&js2, &target);
382 QVERIFY(js2.run(api));
383 QCOMPARE(qobject_cast<MockTarget*>(api.GetTarget())->text, QStringLiteral("It works!"));
384 QCOMPARE(api.GetResult(), QVariant(QVariantList({1, 2, 3})));
385 }
386 {
387 MockTarget target;
388 MockAPI api(&js3, &target);
389 QVERIFY(js3.run(api) == false);
390 QCOMPARE(api.GetResult(), QVariant(QStringLiteral("an exception")));
391 }
392#endif
393
394 ECMAScriptInterface esi(this);
395
396 ScriptObject es1{std::unique_ptr<Script>(esi.newScript(QStringLiteral("does-not-exist")))};
397 ScriptObject es2{std::unique_ptr<Script>(esi.newScript(QStringLiteral("script1.js")))};
398 ScriptObject es3{std::unique_ptr<Script>(esi.newScript(QStringLiteral("script2.js")))};
399
400 {
401 MockTarget target;
402 MockAPI api(&es1, &target);
403 QVERIFY(es1.run(api) == false);
404 }
405 {
406 MockTarget target;
407 MockAPI api(&es2, &target);
408 QVERIFY(es2.run(api));
409 QCOMPARE(qobject_cast<MockTarget*>(api.GetTarget())->text, QStringLiteral("It works!"));
410 QCOMPARE(api.GetResult(), QVariant(QVariantList({1, 2, 3})));
411 }
412 {
413 MockTarget target;
414 MockAPI api(&es3, &target);
415#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
416 QEXPECT_FAIL("", "Script exceptions are not handled correctly until Qt6", Continue);
417#endif
418 QVERIFY(es3.run(api) == false);
419 QCOMPARE(api.GetResult(), QVariant(QStringLiteral("an exception")));
420 }
421}
422

Callers

nothing calls this directly

Calls 3

newScriptMethod · 0.45
runMethod · 0.45
GetTargetMethod · 0.45

Tested by

no test coverage detected