| 363 | } |
| 364 | |
| 365 | void 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 | |