History

Initial scripting engine testing code

Dale Glass committed 4 years ago

Commit 007db511 parent 00220381 file · +89 −0Browse files

Showing the changes to tests/script-engine/src/ScriptEngineTests.cpp (1 of 1 file). Show all

Unified · Split

tests/script-engine/src/ScriptEngineTests.cpp+89−0
@@ -0,0 +1,89 @@
1#include <QSignalSpy>
2#include <QDebug>
3
4#include "ScriptEngineTests.h"
5#include "DependencyManager.h"
6
7#include "ScriptEngines.h"
8#include "ScriptEngine.h"
9#include "ScriptCache.h"
10#include "ResourceManager.h"
11#include "ResourceRequestObserver.h"
12#include "StatTracker.h"
13
14#include "NodeList.h"
15
16QTEST_MAIN(ScriptEngineTests)
17
18
19// script factory generates scriptmanager -- singleton
20//
21// default scripts -- all in one thread, but chat spawns a separate thread
22// // https://apidocs.overte.org/Script.html#.executeOnScriptThread
23//
24// scriptmanager
25// every thread has a manager, and its own engine
26// provides non-qt interface?
27//
28// special threads for entity scripts -- 12 (fixed? dynamic?)
29
30
31
32
33void ScriptEngineTests::initTestCase() {
34 // AudioClient starts networking, but for the purposes of the tests here we don't care,
35 // so just got to use some port.
36 int listenPort = 10000;
37
38 DependencyManager::registerInheritance<LimitedNodeList, NodeList>();
39 DependencyManager::set<NodeList>(NodeType::Agent, listenPort);
40 DependencyManager::set<ScriptEngines>(ScriptManager::CLIENT_SCRIPT, QUrl(""));
41 DependencyManager::set<ScriptCache>();
42 DependencyManager::set<ResourceManager>();
43 DependencyManager::set<ResourceRequestObserver>();
44 DependencyManager::set<StatTracker>();
45 DependencyManager::set<ScriptInitializers>();
46
47
48 QSharedPointer<ScriptEngines> ac = DependencyManager::get<ScriptEngines>();
49 QVERIFY(!ac.isNull());
50
51 connect(ac.get(), &ScriptEngines::scriptLoadError, [](const QString& filename, const QString& error){
52 qWarning() << "Failed to load script" << filename << ":" << error;
53 });
54
55 connect(ac.get(), &ScriptEngines::printedMessage, [](const QString& message, const QString& engineName){
56 qDebug() << "Printed message from engine" << engineName << ": " << message;
57 });
58
59 connect(ac.get(), &ScriptEngines::infoMessage, [](const QString& message, const QString& engineName){
60 qInfo() << "Info message from engine" << engineName << ": " << message;
61 });
62
63 connect(ac.get(), &ScriptEngines::warningMessage, [](const QString& message, const QString& engineName){
64 qWarning() << "Warning from engine" << engineName << ": " << message;
65 });
66
67 connect(ac.get(), &ScriptEngines::errorMessage, [](const QString& message, const QString& engineName){
68 qCritical() << "Error from engine" << engineName << ": " << message;
69 });
70
71}
72
73void ScriptEngineTests::scriptTest() {
74 QSharedPointer<ScriptEngines> ac = DependencyManager::get<ScriptEngines>();
75 QVERIFY(!ac.isNull());
76
77
78 ac->loadOneScript("test-missing.js");
79 ac->loadOneScript("test-hello.js");
80 ac->loadOneScript("test-divide-by-zero.js");
81 qDebug() << ac->getRunning();
82
83
84 QSignalSpy spy(ac.get(), SIGNAL(scriptCountChanged));
85 spy.wait(5000);
86 ac->shutdownScripting();
87
88
89}