mirror of
https://github.com/status-im/dotherside.git
synced 2025-02-12 04:26:43 +00:00
Fixed broken tests
This commit is contained in:
parent
7881cc59ed
commit
14a81b356d
@ -19,6 +19,8 @@
|
|||||||
#include "DOtherSide/DosQObject.h"
|
#include "DOtherSide/DosQObject.h"
|
||||||
#include "DOtherSide/DosQAbstractListModel.h"
|
#include "DOtherSide/DosQAbstractListModel.h"
|
||||||
|
|
||||||
|
using namespace DOS;
|
||||||
|
|
||||||
template<typename Test>
|
template<typename Test>
|
||||||
bool ExecuteTest(int argc, char *argv[])
|
bool ExecuteTest(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@ -223,71 +225,120 @@ private:
|
|||||||
void *m_context;
|
void *m_context;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Test QQmlContext
|
||||||
|
*/
|
||||||
|
class TestQObject : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void testPropertyInheritance()
|
||||||
|
{
|
||||||
|
DOS::SignalDefinitions signalDefinitions {DOS::SignalDefinition {"nameChanged", {}}};
|
||||||
|
DOS::SlotDefinitions slotDefinitions {DOS::SlotDefinition {"name", QMetaType::QString, {}},
|
||||||
|
DOS::SlotDefinition {"setName", QMetaType::Void, {QMetaType::QString}}};
|
||||||
|
DOS::PropertyDefinitions propertyDefinitions {DOS::PropertyDefinition{"name", QMetaType::QString, "name", "setName", "nameChanged"}};
|
||||||
|
|
||||||
|
auto mo = std::make_shared<DosQMetaObject>(std::make_shared<DosQObjectMetaObject>(),
|
||||||
|
"TestClass",
|
||||||
|
signalDefinitions,
|
||||||
|
slotDefinitions,
|
||||||
|
propertyDefinitions);
|
||||||
|
|
||||||
|
QString value = "";
|
||||||
|
auto ose = [&value](const QString & name, const std::vector<QVariant> &args) -> QVariant {
|
||||||
|
if (name == "name")
|
||||||
|
return value;
|
||||||
|
else if (name == "setName")
|
||||||
|
value = args.front().toString();
|
||||||
|
return QVariant();
|
||||||
|
};
|
||||||
|
|
||||||
|
DosQObject testObject(mo, ose);
|
||||||
|
testObject.setObjectName("testObject");
|
||||||
|
testObject.setProperty("name", "foo");
|
||||||
|
|
||||||
|
/// Test property read
|
||||||
|
QCOMPARE(testObject.property("objectName").toString(), QString("testObject"));
|
||||||
|
QCOMPARE(testObject.property("name").toString(), QString("foo"));
|
||||||
|
|
||||||
|
/// Test slot invokation
|
||||||
|
QMetaObject::invokeMethod(&testObject, "setName", Q_ARG(QString, "bar"));
|
||||||
|
QCOMPARE(testObject.property("name").toString(), QString("bar"));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Test QQmlContext
|
||||||
|
*/
|
||||||
|
class TestQAbstractListModel : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void testPropertyInheritance()
|
||||||
|
{
|
||||||
|
DOS::SignalDefinitions signalDefinitions {DOS::SignalDefinition {"nameChanged", {}}};
|
||||||
|
DOS::SlotDefinitions slotDefinitions {DOS::SlotDefinition {"name", QMetaType::QString, {}},
|
||||||
|
DOS::SlotDefinition {"setName", QMetaType::Void, {QMetaType::QString}}};
|
||||||
|
DOS::PropertyDefinitions propertyDefinitions {DOS::PropertyDefinition{"name", QMetaType::QString, "name", "setName", "nameChanged"}};
|
||||||
|
|
||||||
|
auto mo = std::make_shared<DosQMetaObject>(std::make_shared<DosQAbstractListModelMetaObject>(),
|
||||||
|
"TestClass",
|
||||||
|
signalDefinitions,
|
||||||
|
slotDefinitions,
|
||||||
|
propertyDefinitions);
|
||||||
|
|
||||||
|
auto moh = std::make_unique<DosIQMetaObjectHolder>(mo);
|
||||||
|
|
||||||
|
QString value = "";
|
||||||
|
auto ose = [&value](const QString & name, const std::vector<QVariant> &args) -> QVariant {
|
||||||
|
if (name == "name")
|
||||||
|
return value;
|
||||||
|
else if (name == "setName")
|
||||||
|
value = args.front().toString();
|
||||||
|
return QVariant();
|
||||||
|
};
|
||||||
|
|
||||||
|
void *dPointer = nullptr;
|
||||||
|
|
||||||
|
RowCountCallback rcc;
|
||||||
|
ColumnCountCallback ccc;
|
||||||
|
DataCallback dc;
|
||||||
|
SetDataCallback sdc;
|
||||||
|
RoleNamesCallback rnc;
|
||||||
|
FlagsCallback fc;
|
||||||
|
HeaderDataCallback hdc;
|
||||||
|
|
||||||
|
DosQAbstractListModel testObject(dPointer, moh->data(), ose, rcc, ccc, dc, sdc, rnc, fc, hdc);
|
||||||
|
testObject.setObjectName("testObject");
|
||||||
|
testObject.setProperty("name", "foo");
|
||||||
|
|
||||||
|
/// Test property read
|
||||||
|
QCOMPARE(testObject.property("objectName").toString(), QString("testObject"));
|
||||||
|
QCOMPARE(testObject.property("name").toString(), QString("foo"));
|
||||||
|
|
||||||
|
/// Test slot invokation
|
||||||
|
QMetaObject::invokeMethod(&testObject, "setName", Q_ARG(QString, "bar"));
|
||||||
|
QCOMPARE(testObject.property("name").toString(), QString("bar"));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
using namespace DOS;
|
using namespace DOS;
|
||||||
|
|
||||||
bool success = true;
|
bool success = true;
|
||||||
//success &= ExecuteTest<TestQGuiApplication>(argc, argv);
|
success &= ExecuteTest<TestQGuiApplication>(argc, argv);
|
||||||
//success &= ExecuteTest<TestQApplication>(argc, argv);
|
success &= ExecuteTest<TestQApplication>(argc, argv);
|
||||||
//success &= ExecuteGuiTest<TestQQmlApplicationEngine>(argc, argv);
|
success &= ExecuteGuiTest<TestQQmlApplicationEngine>(argc, argv);
|
||||||
//success &= ExecuteGuiTest<TestQQmlContext>(argc, argv);
|
success &= ExecuteGuiTest<TestQQmlContext>(argc, argv);
|
||||||
|
success &= ExecuteGuiTest<TestQObject>(argc, argv);
|
||||||
|
success &= ExecuteGuiTest<TestQAbstractListModel>(argc, argv);
|
||||||
|
|
||||||
QString value = "";
|
return success ? 0 : 1;
|
||||||
|
|
||||||
DOS::SignalDefinitions signalDefinitions {DOS::SignalDefinition {"nameChanged", {}}};
|
|
||||||
DOS::SlotDefinitions slotDefinitions {DOS::SlotDefinition {"name", QMetaType::QString, {}}, DOS::SlotDefinition {"setName", QMetaType::Void, {QMetaType::QString}}};
|
|
||||||
DOS::PropertyDefinitions propertyDefinitions {DOS::PropertyDefinition{"name", QMetaType::QString, "name", "setName", "nameChanged"}};
|
|
||||||
|
|
||||||
auto mo = std::make_shared<DosQMetaObject>(std::make_shared<DosQAbstractListModelMetaObject>(),
|
|
||||||
"TestClass",
|
|
||||||
signalDefinitions,
|
|
||||||
slotDefinitions,
|
|
||||||
propertyDefinitions);
|
|
||||||
|
|
||||||
auto moh = std::make_unique<DosIQMetaObjectHolder>(mo);
|
|
||||||
|
|
||||||
auto ose = [&value](const QString & name, const std::vector<QVariant> &args) -> QVariant {
|
|
||||||
if (name == "name")
|
|
||||||
return value;
|
|
||||||
else if (name == "setName")
|
|
||||||
value = args.front().toString();
|
|
||||||
return QVariant();
|
|
||||||
};
|
|
||||||
|
|
||||||
void *dPointer = nullptr;
|
|
||||||
|
|
||||||
RowCountCallback rcc;
|
|
||||||
ColumnCountCallback ccc;
|
|
||||||
DataCallback dc;
|
|
||||||
SetDataCallback sdc;
|
|
||||||
RoleNamesCallback rnc;
|
|
||||||
FlagsCallback fc;
|
|
||||||
HeaderDataCallback hdc;
|
|
||||||
|
|
||||||
DosQAbstractListModel testObject(dPointer, moh->data(), ose, rcc, ccc, dc, sdc, rnc, fc, hdc);
|
|
||||||
testObject.setObjectName("testObject");
|
|
||||||
testObject.setProperty("name", "pippo");
|
|
||||||
|
|
||||||
std::cout << testObject.property("objectName").toString().toStdString() << std::endl
|
|
||||||
<< testObject.property("name").toString().toStdString() << std::endl
|
|
||||||
<< value.toStdString() << std::endl;
|
|
||||||
|
|
||||||
QMetaObject::invokeMethod(&testObject, "setName", Q_ARG(QString, "pluto"));
|
|
||||||
|
|
||||||
|
|
||||||
std::cout << testObject.property("objectName").toString().toStdString() << std::endl
|
|
||||||
<< testObject.property("name").toString().toStdString() << std::endl
|
|
||||||
<< value.toStdString() << std::endl;
|
|
||||||
|
|
||||||
|
|
||||||
QApplication app(argc, argv);
|
|
||||||
|
|
||||||
QQmlApplicationEngine engine;
|
|
||||||
engine.rootContext()->setContextProperty("testObject", QVariant::fromValue<QObject *>(&testObject));
|
|
||||||
engine.load(QUrl("qrc:///main.qml"));
|
|
||||||
|
|
||||||
return app.exec();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "test_dotherside.moc"
|
#include "test_dotherside.moc"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user