mirror of
https://github.com/qmlnet/qmlnet.git
synced 2026-05-15 14:15:54 -06:00
Adding unit tests for registered methods.
This commit is contained in:
parent
9c065764d7
commit
1ff689e7a8
9 changed files with 65 additions and 28 deletions
|
|
@ -73,14 +73,22 @@ namespace Qml.Net.Aot
|
|||
writer.WriteLine($"class {CppName}: public QObject");
|
||||
}
|
||||
writer.WriteLine("{");
|
||||
using (writer.BeginIndent())
|
||||
{
|
||||
writer.WriteLine("Q_OBJECT");
|
||||
}
|
||||
writer.WriteLine("public:");
|
||||
using (writer.BeginIndent())
|
||||
{
|
||||
writer.WriteLine($"{CppName}();");
|
||||
writer.WriteLine($"{CppName}(bool);");
|
||||
writer.WriteLine("static int registerQml(const char* uri, int versionMajor, int versionMinor, const char* qmlName);");
|
||||
writer.WriteLine("static int registerQmlSingleton(const char* uri, int versionMajor, int versionMinor, const char* typeName);");
|
||||
writer.WriteLine("static QObject *build(QQmlEngine *engine, QJSEngine *scriptEngine);");
|
||||
writer.WriteLine("static int _registerQml(const char* uri, int versionMajor, int versionMinor, const char* qmlName);");
|
||||
writer.WriteLine("static int _registerQmlSingleton(const char* uri, int versionMajor, int versionMinor, const char* typeName);");
|
||||
writer.WriteLine("static QObject* _build(QQmlEngine* engine, QJSEngine* scriptEngine);");
|
||||
foreach (var method in _methods)
|
||||
{
|
||||
writer.WriteLine($"Q_INVOKABLE void {method.MethodName}();");
|
||||
}
|
||||
}
|
||||
|
||||
if (aotBaseClass == null)
|
||||
|
|
@ -125,21 +133,21 @@ namespace Qml.Net.Aot
|
|||
}
|
||||
writer.WriteLine("{");
|
||||
writer.WriteLine("}");
|
||||
writer.WriteLine($"int {CppName}::registerQml(const char* uri, int versionMajor, int versionMinor, const char* qmlName)");
|
||||
writer.WriteLine($"int {CppName}::_registerQml(const char* uri, int versionMajor, int versionMinor, const char* qmlName)");
|
||||
writer.WriteLine("{");
|
||||
using (writer.BeginIndent())
|
||||
{
|
||||
writer.WriteLine($"return qmlRegisterType<{CppName}>(uri, versionMajor, versionMinor, qmlName);");
|
||||
}
|
||||
writer.WriteLine("}");
|
||||
writer.WriteLine($"int {CppName}::registerQmlSingleton(const char* uri, int versionMajor, int versionMinor, const char* typeName)");
|
||||
writer.WriteLine($"int {CppName}::_registerQmlSingleton(const char* uri, int versionMajor, int versionMinor, const char* typeName)");
|
||||
writer.WriteLine("{");
|
||||
using (writer.BeginIndent())
|
||||
{
|
||||
writer.WriteLine($"return qmlRegisterSingletonType<{CppName}>(uri, versionMajor, versionMinor, typeName, {CppName}::build);");
|
||||
writer.WriteLine($"return qmlRegisterSingletonType<{CppName}>(uri, versionMajor, versionMinor, typeName, {CppName}::_build);");
|
||||
}
|
||||
writer.WriteLine("}");
|
||||
writer.WriteLine($"QObject* {CppName}::build(QQmlEngine *engine, QJSEngine *scriptEngine)");
|
||||
writer.WriteLine($"QObject* {CppName}::_build(QQmlEngine *engine, QJSEngine *scriptEngine)");
|
||||
writer.WriteLine("{");
|
||||
using (writer.BeginIndent())
|
||||
{
|
||||
|
|
@ -148,6 +156,12 @@ namespace Qml.Net.Aot
|
|||
writer.WriteLine($"return new {CppName}();");
|
||||
}
|
||||
writer.WriteLine("}");
|
||||
foreach (var method in _methods)
|
||||
{
|
||||
writer.WriteLine($"void {CppName}::{method.MethodName}()");
|
||||
writer.WriteLine("{");
|
||||
writer.WriteLine("}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,21 @@ namespace Qml.Net.Aot
|
|||
DeclaringType = decaringType;
|
||||
MethodInfo = methodInfo;
|
||||
}
|
||||
|
||||
public string MethodName
|
||||
{
|
||||
get
|
||||
{
|
||||
var methodName = MethodInfo.Name;
|
||||
|
||||
if (!char.IsLower(methodName[0]))
|
||||
{
|
||||
methodName = char.ToLower(methodName[0]) + methodName.Substring(1);
|
||||
}
|
||||
|
||||
return methodName;
|
||||
}
|
||||
}
|
||||
|
||||
public MethodInfo MethodInfo { get; }
|
||||
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ namespace Qml.Net.Aot
|
|||
writer.WriteLine("}");
|
||||
foreach (var cls in _classes)
|
||||
{
|
||||
writer.WriteLine($"NetTypeManager::registerAotObject({cls.TypeId}, &{cls.CppName}::staticMetaObject, {cls.CppName}::registerQml, {cls.CppName}::registerQmlSingleton);");
|
||||
writer.WriteLine($"NetTypeManager::registerAotObject({cls.TypeId}, &{cls.CppName}::staticMetaObject, {cls.CppName}::_registerQml, {cls.CppName}::_registerQmlSingleton);");
|
||||
}
|
||||
writer.WriteLine("initAotTypesDone = true;");
|
||||
writer.WriteLine("initAotTypesMutex->unlock();");
|
||||
|
|
|
|||
|
|
@ -46,11 +46,9 @@ namespace Qml.Net.Tests.Aot
|
|||
{
|
||||
RunQmlTest("test",
|
||||
@"
|
||||
console.log(test);
|
||||
return;
|
||||
assert.isTrue(typeof test.method1 === 'function');
|
||||
assert.isTrue(typeof test.method2 !== 'function');
|
||||
assert.isTrue(typeof test.method3 === 'function');
|
||||
assert.isTrue(typeof test.method2 === 'function');
|
||||
assert.isTrue(typeof test.method3 === 'undefined');
|
||||
");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,17 +8,23 @@ NetAotMethodInvocation::NetAotMethodInvocation() : NetObject(false)
|
|||
NetAotMethodInvocation::NetAotMethodInvocation(bool) : NetObject(false)
|
||||
{
|
||||
}
|
||||
int NetAotMethodInvocation::registerQml(const char* uri, int versionMajor, int versionMinor, const char* qmlName)
|
||||
int NetAotMethodInvocation::_registerQml(const char* uri, int versionMajor, int versionMinor, const char* qmlName)
|
||||
{
|
||||
return qmlRegisterType<NetAotMethodInvocation>(uri, versionMajor, versionMinor, qmlName);
|
||||
}
|
||||
int NetAotMethodInvocation::registerQmlSingleton(const char* uri, int versionMajor, int versionMinor, const char* typeName)
|
||||
int NetAotMethodInvocation::_registerQmlSingleton(const char* uri, int versionMajor, int versionMinor, const char* typeName)
|
||||
{
|
||||
return qmlRegisterSingletonType<NetAotMethodInvocation>(uri, versionMajor, versionMinor, typeName, NetAotMethodInvocation::build);
|
||||
return qmlRegisterSingletonType<NetAotMethodInvocation>(uri, versionMajor, versionMinor, typeName, NetAotMethodInvocation::_build);
|
||||
}
|
||||
QObject* NetAotMethodInvocation::build(QQmlEngine *engine, QJSEngine *scriptEngine)
|
||||
QObject* NetAotMethodInvocation::_build(QQmlEngine *engine, QJSEngine *scriptEngine)
|
||||
{
|
||||
Q_UNUSED(engine)
|
||||
Q_UNUSED(scriptEngine)
|
||||
return new NetAotMethodInvocation();
|
||||
}
|
||||
void NetAotMethodInvocation::method1()
|
||||
{
|
||||
}
|
||||
void NetAotMethodInvocation::method2()
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,11 +5,14 @@ class QQmlEngine;
|
|||
class QJSEngine;
|
||||
class NetAotMethodInvocation : public NetObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
NetAotMethodInvocation();
|
||||
NetAotMethodInvocation(bool);
|
||||
static int registerQml(const char* uri, int versionMajor, int versionMinor, const char* qmlName);
|
||||
static int registerQmlSingleton(const char* uri, int versionMajor, int versionMinor, const char* typeName);
|
||||
static QObject *build(QQmlEngine *engine, QJSEngine *scriptEngine);
|
||||
static int _registerQml(const char* uri, int versionMajor, int versionMinor, const char* qmlName);
|
||||
static int _registerQmlSingleton(const char* uri, int versionMajor, int versionMinor, const char* typeName);
|
||||
static QObject* _build(QQmlEngine* engine, QJSEngine* scriptEngine);
|
||||
Q_INVOKABLE void method1();
|
||||
Q_INVOKABLE void method2();
|
||||
};
|
||||
#endif // NETAOTMETHODINVOCATION_H
|
||||
|
|
|
|||
|
|
@ -8,15 +8,15 @@ NetObject::NetObject() : QObject()
|
|||
NetObject::NetObject(bool) : QObject()
|
||||
{
|
||||
}
|
||||
int NetObject::registerQml(const char* uri, int versionMajor, int versionMinor, const char* qmlName)
|
||||
int NetObject::_registerQml(const char* uri, int versionMajor, int versionMinor, const char* qmlName)
|
||||
{
|
||||
return qmlRegisterType<NetObject>(uri, versionMajor, versionMinor, qmlName);
|
||||
}
|
||||
int NetObject::registerQmlSingleton(const char* uri, int versionMajor, int versionMinor, const char* typeName)
|
||||
int NetObject::_registerQmlSingleton(const char* uri, int versionMajor, int versionMinor, const char* typeName)
|
||||
{
|
||||
return qmlRegisterSingletonType<NetObject>(uri, versionMajor, versionMinor, typeName, NetObject::build);
|
||||
return qmlRegisterSingletonType<NetObject>(uri, versionMajor, versionMinor, typeName, NetObject::_build);
|
||||
}
|
||||
QObject* NetObject::build(QQmlEngine *engine, QJSEngine *scriptEngine)
|
||||
QObject* NetObject::_build(QQmlEngine *engine, QJSEngine *scriptEngine)
|
||||
{
|
||||
Q_UNUSED(engine)
|
||||
Q_UNUSED(scriptEngine)
|
||||
|
|
|
|||
|
|
@ -6,12 +6,13 @@ class QQmlEngine;
|
|||
class QJSEngine;
|
||||
class NetObject: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
NetObject();
|
||||
NetObject(bool);
|
||||
static int registerQml(const char* uri, int versionMajor, int versionMinor, const char* qmlName);
|
||||
static int registerQmlSingleton(const char* uri, int versionMajor, int versionMinor, const char* typeName);
|
||||
static QObject *build(QQmlEngine *engine, QJSEngine *scriptEngine);
|
||||
static int _registerQml(const char* uri, int versionMajor, int versionMinor, const char* qmlName);
|
||||
static int _registerQmlSingleton(const char* uri, int versionMajor, int versionMinor, const char* typeName);
|
||||
static QObject* _build(QQmlEngine* engine, QJSEngine* scriptEngine);
|
||||
protected:
|
||||
QSharedPointer<NetReference> _netReference;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ Q_DECL_EXPORT void initAotTypes()
|
|||
initAotTypesMutex->unlock();
|
||||
return;
|
||||
}
|
||||
NetTypeManager::registerAotObject(1, &NetAotMethodInvocation::staticMetaObject, NetAotMethodInvocation::registerQml, NetAotMethodInvocation::registerQmlSingleton);
|
||||
NetTypeManager::registerAotObject(2, &NetObject::staticMetaObject, NetObject::registerQml, NetObject::registerQmlSingleton);
|
||||
NetTypeManager::registerAotObject(1, &NetAotMethodInvocation::staticMetaObject, NetAotMethodInvocation::_registerQml, NetAotMethodInvocation::_registerQmlSingleton);
|
||||
NetTypeManager::registerAotObject(2, &NetObject::staticMetaObject, NetObject::_registerQml, NetObject::_registerQmlSingleton);
|
||||
initAotTypesDone = true;
|
||||
initAotTypesMutex->unlock();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue