mirror of
https://github.com/status-im/dotherside.git
synced 2025-02-11 20:16:47 +00:00
Work on MockQAbstractListModel
This commit is contained in:
parent
87b10be514
commit
f2ef4be82d
@ -1,4 +1,5 @@
|
||||
#include "MockQAbstractListModel.h"
|
||||
#include <QMetaType>
|
||||
|
||||
using namespace std;
|
||||
|
||||
@ -14,19 +15,48 @@ namespace
|
||||
void* superClassMetaObject = dos_qabstractlistmodel_qmetaobject();
|
||||
|
||||
// Signals
|
||||
::SignalDefinition signalDefinitionArray[1];
|
||||
|
||||
signalDefinitionArray[0].name = "nameChanged";
|
||||
signalDefinitionArray[0].parametersCount = 1;
|
||||
int nameChanged[1];
|
||||
nameChanged[0] = QMetaType::QString;
|
||||
signalDefinitionArray[0].parametersMetaTypes = nameChanged;
|
||||
|
||||
::SignalDefinitions signalDefinitions;
|
||||
signalDefinitions.count = 0;
|
||||
signalDefinitions.definitions = nullptr;
|
||||
signalDefinitions.count = 1;
|
||||
signalDefinitions.definitions = signalDefinitionArray;
|
||||
|
||||
// Slots
|
||||
::SlotDefinition slotDefinitionArray[2];
|
||||
|
||||
slotDefinitionArray[0].name = "name";
|
||||
slotDefinitionArray[0].returnMetaType = QMetaType::QString;
|
||||
slotDefinitionArray[0].parametersCount = 0;
|
||||
slotDefinitionArray[0].parametersMetaTypes = nullptr;
|
||||
|
||||
slotDefinitionArray[1].name = "setName";
|
||||
slotDefinitionArray[1].returnMetaType = QMetaType::Void;
|
||||
int setNameParameters[1];
|
||||
setNameParameters[0] = QMetaType::QString;
|
||||
slotDefinitionArray[1].parametersCount = 1;
|
||||
slotDefinitionArray[1].parametersMetaTypes = setNameParameters;
|
||||
|
||||
::SlotDefinitions slotDefinitions;
|
||||
slotDefinitions.count = 0;
|
||||
slotDefinitions.definitions = nullptr;
|
||||
slotDefinitions.count = 2;
|
||||
slotDefinitions.definitions = slotDefinitionArray;
|
||||
|
||||
// Properties
|
||||
::PropertyDefinition propertyDefinitionArray[1];
|
||||
propertyDefinitionArray[0].name = "name";
|
||||
propertyDefinitionArray[0].notifySignal = "nameChanged";
|
||||
propertyDefinitionArray[0].propertyMetaType = QMetaType::QString;
|
||||
propertyDefinitionArray[0].readSlot = "name";
|
||||
propertyDefinitionArray[0].writeSlot = "setName";
|
||||
|
||||
::PropertyDefinitions propertyDefinitions;
|
||||
propertyDefinitions.count = 0;
|
||||
propertyDefinitions.definitions = nullptr;
|
||||
propertyDefinitions.count = 1;
|
||||
propertyDefinitions.definitions = propertyDefinitionArray;
|
||||
|
||||
return VoidPointer(dos_qmetaobject_create(superClassMetaObject, "MockQAbstractListModel", &signalDefinitions, &slotDefinitions, &propertyDefinitions),
|
||||
&dos_qmetaobject_delete);
|
||||
@ -53,10 +83,54 @@ DosQObject *MockQAbstractListModel::data()
|
||||
return m_vptr.get();
|
||||
}
|
||||
|
||||
string MockQAbstractListModel::objectName() const
|
||||
{
|
||||
CharPointer result (dos_qobject_objectName(m_vptr.get()), &dos_chararray_delete);
|
||||
return string(result.get());
|
||||
}
|
||||
|
||||
void MockQAbstractListModel::setObjectName(const string &objectName)
|
||||
{
|
||||
dos_qobject_setObjectName(m_vptr.get(), objectName.c_str());
|
||||
}
|
||||
|
||||
string MockQAbstractListModel::name() const
|
||||
{
|
||||
return m_name;
|
||||
}
|
||||
|
||||
void MockQAbstractListModel::setName(const string &name)
|
||||
{
|
||||
if (m_name == name)
|
||||
return;
|
||||
m_name = name;
|
||||
nameChanged(name);
|
||||
}
|
||||
|
||||
void MockQAbstractListModel::nameChanged(const string &name)
|
||||
{
|
||||
int argc = 1;
|
||||
DosQVariant* argv[1];
|
||||
argv[0] = dos_qvariant_create_string(name.c_str());
|
||||
dos_qobject_signal_emit(m_vptr.get(), "nameChanged", argc, argv);
|
||||
dos_qvariant_delete(argv[0]);
|
||||
}
|
||||
|
||||
void MockQAbstractListModel::onSlotCalled(void *selfVPtr, DosQVariant *dosSlotNameVariant, int dosSlotArgc, DosQVariant **dosSlotArgv)
|
||||
{
|
||||
auto self = static_cast<MockQAbstractListModel*>(selfVPtr);
|
||||
string slotName = toStringFromQVariant(dosSlotNameVariant);
|
||||
|
||||
if (slotName == "name") {
|
||||
VoidPointer name(dos_qvariant_create_string(self->name().c_str()), &dos_qvariant_delete);
|
||||
dos_qvariant_assign(dosSlotArgv[0], name.get());
|
||||
return;
|
||||
}
|
||||
|
||||
if (slotName == "setName") {
|
||||
self->setName(toStringFromQVariant(dosSlotArgv[1]));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void MockQAbstractListModel::onRowCountCalled(void *selfVPtr, const DosQModelIndex *index, int *result)
|
||||
|
@ -12,6 +12,13 @@ public:
|
||||
DosQMetaObject *metaObject();
|
||||
DosQObject *data();
|
||||
|
||||
std::string objectName() const;
|
||||
void setObjectName(const std::string& objectName);
|
||||
|
||||
std::string name() const;
|
||||
void setName(const std::string& name);
|
||||
void nameChanged(const std::string& name);
|
||||
|
||||
private:
|
||||
static void onSlotCalled(void *selfVPtr, DosQVariant *dosSlotNameVariant, int dosSlotArgc, DosQVariant **dosSlotArgv);
|
||||
static void onRowCountCalled(void *selfVPtr, const DosQModelIndex *index, int *result);
|
||||
@ -23,5 +30,6 @@ private:
|
||||
static void onHeaderDataCalled(void *selfVPtr, int section, int orientation, int role, DosQVariant *result);
|
||||
|
||||
VoidPointer m_vptr;
|
||||
std::string m_name;
|
||||
std::vector<std::string> m_names;
|
||||
};
|
||||
|
@ -4,6 +4,32 @@ QtObject {
|
||||
id: testCase
|
||||
objectName: "testCase"
|
||||
|
||||
function testObjectName() {
|
||||
return testObject && testObject.objectName === "testObject"
|
||||
}
|
||||
|
||||
function testPropertyReadAndWrite() {
|
||||
if (!testObject)
|
||||
return false
|
||||
if (testObject.name !== "foo")
|
||||
return false
|
||||
testObject.name = "bar"
|
||||
if (testObject.name !== "bar")
|
||||
return false
|
||||
return true
|
||||
}
|
||||
|
||||
function testSignalEmittion() {
|
||||
if (!testObject)
|
||||
return false
|
||||
if (testObject.name !== "foo")
|
||||
return false
|
||||
var result = false
|
||||
testObject.nameChanged.connect(function(name){ result = name === "bar" })
|
||||
testObject.name = "bar"
|
||||
return result
|
||||
}
|
||||
|
||||
function testRowCount() {
|
||||
return testObject && testObject.rowCount() === 4
|
||||
}
|
||||
|
@ -5,9 +5,7 @@ QtObject {
|
||||
objectName: "testCase"
|
||||
|
||||
function testObjectName() {
|
||||
if (!testObject)
|
||||
return false;
|
||||
return testObject.objectName === "testObject"
|
||||
return testObject && testObject.objectName === "testObject"
|
||||
}
|
||||
|
||||
function testPropertyReadAndWrite() {
|
||||
|
@ -291,6 +291,9 @@ private slots:
|
||||
void init()
|
||||
{
|
||||
testObject.reset(new MockQAbstractListModel());
|
||||
testObject->setObjectName("testObject");
|
||||
testObject->setName("foo");
|
||||
|
||||
engine.reset(new QQmlApplicationEngine());
|
||||
engine->rootContext()->setContextProperty("testObject", QVariant::fromValue<QObject*>(static_cast<QObject*>(testObject->data())));
|
||||
engine->load(QUrl("qrc:///testQAbstractItemModel.qml"));
|
||||
@ -302,6 +305,36 @@ private slots:
|
||||
testObject.reset();
|
||||
}
|
||||
|
||||
void testObjectName() {
|
||||
QObject* testCase = engine->rootObjects().first();
|
||||
QVERIFY(testCase);
|
||||
QVariant result;
|
||||
QVERIFY(QMetaObject::invokeMethod(testCase, "testObjectName", Q_RETURN_ARG(QVariant, result)));
|
||||
QVERIFY(result.type() == QVariant::Bool);
|
||||
QVERIFY(result.toBool());
|
||||
}
|
||||
|
||||
void testPropertyReadAndWrite()
|
||||
{
|
||||
QObject* testCase = engine->rootObjects().first();
|
||||
QVERIFY(testCase);
|
||||
QVariant result;
|
||||
QVERIFY(QMetaObject::invokeMethod(testCase, "testPropertyReadAndWrite", Q_RETURN_ARG(QVariant, result)));
|
||||
QVERIFY(result.type() == QVariant::Bool);
|
||||
QVERIFY(result.toBool());
|
||||
}
|
||||
|
||||
void testSignalEmittion()
|
||||
{
|
||||
QObject* testCase = engine->rootObjects().first();
|
||||
QVERIFY(testCase);
|
||||
QVariant result;
|
||||
QVERIFY(QMetaObject::invokeMethod(testCase, "testSignalEmittion", Q_RETURN_ARG(QVariant, result)));
|
||||
QVERIFY(result.type() == QVariant::Bool);
|
||||
QVERIFY(result.toBool());
|
||||
}
|
||||
|
||||
|
||||
void testRowCount() {
|
||||
QObject* testCase = engine->rootObjects().first();
|
||||
QVERIFY(testCase);
|
||||
|
Loading…
x
Reference in New Issue
Block a user