dotherside/test/test_dotherside.cpp

754 lines
22 KiB
C++
Raw Normal View History

// std
#include <tuple>
#include <iostream>
2016-01-13 19:07:13 +01:00
#include <memory>
// Qt
#include <QDebug>
#include <QTest>
#include <QSignalSpy>
#include <QTimer>
#include <QApplication>
#include <QQuickWindow>
#include <QQmlApplicationEngine>
#include <QQuickItem>
2016-01-16 11:29:35 +01:00
#include <QQmlContext>
2016-06-18 20:16:26 +02:00
#include <QtQuickTest/QtQuickTest>
// DOtherSide
2016-06-19 11:46:47 +02:00
#include <DOtherSide/DOtherSide.h>
#include <DOtherSide/DosQObject.h>
#include <DOtherSide/DosQMetaObject.h>
#include <DOtherSide/DosQObject.h>
#include <DOtherSide/DosQAbstractItemModel.h>
2016-06-19 11:46:47 +02:00
#include "MockQObject.h"
#include "MockQAbstractItemModel.h"
using namespace std;
2016-01-23 19:32:55 +01:00
using namespace DOS;
template<typename Test>
2016-01-23 19:08:58 +01:00
bool ExecuteTest(int argc, char *argv[])
{
Test test;
return QTest::qExec(&test, argc, argv) == 0;
}
template<typename Test>
2016-01-23 19:08:58 +01:00
bool ExecuteGuiTest(int argc, char *argv[])
{
QApplication app(argc, argv);
Test test;
return QTest::qExec(&test, argc, argv) == 0;
}
/*
* Test QGuiApplication
*/
class TestQGuiApplication : public QObject
{
Q_OBJECT
private slots:
2016-01-23 19:08:58 +01:00
void testExecution()
{
bool quit = false;
dos_qguiapplication_create();
2018-11-28 23:20:39 +01:00
QTimer::singleShot(100, [&quit]() {
2016-06-18 20:16:26 +02:00
quit = true;
dos_qguiapplication_quit();
});
dos_qguiapplication_exec();
QVERIFY(quit);
dos_qguiapplication_delete();
}
};
/*
* Test QApplication
*/
class TestQApplication : public QObject
{
Q_OBJECT
private slots:
2016-01-23 19:08:58 +01:00
void testExecution()
{
bool quit = false;
dos_qapplication_create();
2018-11-28 23:20:39 +01:00
QTimer::singleShot(100, [&quit]() {
2016-06-18 20:16:26 +02:00
quit = true;
dos_qapplication_quit();
});
dos_qapplication_exec();
QVERIFY(quit);
dos_qapplication_delete();
}
};
2016-06-26 14:13:41 +02:00
/*
* Test QVariant
*/
class TestQVariant : public QObject
{
2017-04-09 14:34:47 +02:00
Q_OBJECT
2016-06-26 14:13:41 +02:00
private slots:
void testCreate()
{
VoidPointer data(dos_qvariant_create(), &dos_qvariant_delete);
Q_ASSERT(data.get());
QCOMPARE(dos_qvariant_isnull(data.get()), true);
}
void testInt()
{
VoidPointer data(dos_qvariant_create_int(10), &dos_qvariant_delete);
Q_ASSERT(data.get());
QCOMPARE(dos_qvariant_isnull(data.get()), false);
int value = dos_qvariant_toInt(data.get());
QCOMPARE(value, 10);
dos_qvariant_setInt(data.get(), 20);
value = dos_qvariant_toInt(data.get());
QCOMPARE(value, 20);
}
void testBool()
{
VoidPointer data(dos_qvariant_create_bool(false), &dos_qvariant_delete);
Q_ASSERT(data.get());
QCOMPARE(dos_qvariant_isnull(data.get()), false);
bool value = dos_qvariant_toBool(data.get());
QCOMPARE(value, false);
dos_qvariant_setBool(data.get(), true);
value = dos_qvariant_toBool(data.get());
QCOMPARE(value, true);
}
void testFloat()
{
VoidPointer data(dos_qvariant_create_float(float(5.5)), &dos_qvariant_delete);
Q_ASSERT(data.get());
QCOMPARE(dos_qvariant_isnull(data.get()), false);
float value = dos_qvariant_toFloat(data.get());
QCOMPARE(value, float(5.5));
dos_qvariant_setFloat(data.get(), float(10.3));
value = dos_qvariant_toFloat(data.get());
QCOMPARE(value, float(10.3));
}
void testDouble()
{
VoidPointer data(dos_qvariant_create_double(double(5.5)), &dos_qvariant_delete);
Q_ASSERT(data.get());
QCOMPARE(dos_qvariant_isnull(data.get()), false);
double value = dos_qvariant_toDouble(data.get());
QCOMPARE(value, double(5.5));
dos_qvariant_setDouble(data.get(), double(10.3));
value = dos_qvariant_toDouble(data.get());
QCOMPARE(value, double(10.3));
}
void testString()
{
VoidPointer data(dos_qvariant_create_string("Foo"), &dos_qvariant_delete);
Q_ASSERT(data.get());
QCOMPARE(dos_qvariant_isnull(data.get()), false);
2017-04-09 14:34:47 +02:00
char *value = dos_qvariant_toString(data.get());
2016-06-26 14:13:41 +02:00
std::string copy (value);
dos_chararray_delete(value);
QCOMPARE(copy, std::string("Foo"));
dos_qvariant_setString(data.get(), "Bar");
value = dos_qvariant_toString(data.get());
copy = std::string(value);
dos_chararray_delete(value);
QCOMPARE(copy, std::string("Bar"));
}
void testQObject()
{
unique_ptr<MockQObject> testObject(new MockQObject());
testObject->setObjectName("testObject");
testObject->setName("foo");
VoidPointer data(dos_qvariant_create_qobject(testObject->data()), &dos_qvariant_delete);
auto value = dos_qvariant_toQObject(data.get());
QVERIFY(value == testObject->data());
dos_qvariant_setQObject(data.get(), nullptr);
value = dos_qvariant_toQObject(data.get());
QVERIFY(value == nullptr);
}
2018-11-28 23:16:17 +01:00
void testQVariant()
{
QVariant original("foo");
QVERIFY(original.type() == QVariant::String);
2018-11-28 23:16:17 +01:00
VoidPointer copyPointer(dos_qvariant_create_qvariant(&original), &dos_qvariant_delete);
QVariant* copy = static_cast<QVariant*>(copyPointer.get());
QCOMPARE(copy->type(), original.type());
QCOMPARE(copy->toString().toStdString(), original.toString().toStdString());
}
2017-04-09 14:34:47 +02:00
void testArray()
{
std::vector<DosQVariant *> data ({
dos_qvariant_create_int(10),
dos_qvariant_create_double(4.3),
dos_qvariant_create_bool(false),
dos_qvariant_create_string("FooBar")
});
VoidPointer variant (dos_qvariant_create_array(data.size(), &data[0]), &dos_qvariant_delete);
2017-04-09 14:34:47 +02:00
DosQVariantArray *array = dos_qvariant_toArray(variant.get());
QVERIFY(array);
QCOMPARE(int(data.size()), array->size);
QCOMPARE(dos_qvariant_toInt(array->data[0]), int(10));
QCOMPARE(dos_qvariant_toDouble(array->data[1]), double(4.3));
QCOMPARE(dos_qvariant_toBool(array->data[2]), false);
dos_qvariantarray_delete(array);
std::for_each(data.begin(), data.end(), &dos_qvariant_delete);
}
2016-06-26 14:13:41 +02:00
};
2016-06-26 15:05:38 +02:00
/*
* Test QUrl
*/
class TestQUrl : public QObject
{
Q_OBJECT
private slots:
2017-04-09 14:34:47 +02:00
void testCreate()
{
2016-06-26 15:05:38 +02:00
const string testUrl("http://www.qt.io");
VoidPointer url(dos_qurl_create(testUrl.c_str(), QUrl::StrictMode), &dos_qurl_delete);
QVERIFY(url.get());
QVERIFY(dos_qurl_isValid(url.get()));
CharPointer str (dos_qurl_to_string(url.get()), &dos_chararray_delete);
QCOMPARE(std::string(str.get()), testUrl);
}
};
/*
* Test QQmlApplicationEngine
*/
class TestQQmlApplicationEngine : public QObject
{
Q_OBJECT
private slots:
2016-01-23 19:08:58 +01:00
void initTestCase()
{
m_engine = nullptr;
}
2016-01-23 19:08:58 +01:00
void cleanupTestCase()
{
QVERIFY(m_engine == nullptr);
}
2016-01-23 19:08:58 +01:00
void init()
{
QVERIFY(m_engine == nullptr);
2016-02-27 16:05:23 +01:00
m_engine = dos_qqmlapplicationengine_create();
QVERIFY(m_engine != nullptr);
}
2016-01-23 19:08:58 +01:00
void cleanup()
{
dos_qqmlapplicationengine_delete(m_engine);
m_engine = nullptr;
}
2016-01-23 19:08:58 +01:00
void testCreateAndDelete()
{
// Implicit by invoking init and cleanup
}
2016-01-23 19:08:58 +01:00
void testLoadUrl()
{
2016-02-27 16:05:23 +01:00
void *url = dos_qurl_create("qrc:///main.qml", QUrl::TolerantMode);
QVERIFY(url != nullptr);
dos_qqmlapplicationengine_load_url(m_engine, url);
QCOMPARE(engine()->rootObjects().size(), 1);
QCOMPARE(engine()->rootObjects().front()->objectName(), QString::fromLocal8Bit("testWindow"));
QVERIFY(engine()->rootObjects().front()->isWindowType());
dos_qurl_delete(url);
}
2016-01-23 19:08:58 +01:00
void testLoadData()
{
2016-01-30 15:03:59 +01:00
dos_qqmlapplicationengine_load_data(m_engine, "import QtQuick 2.3; import QtQuick.Controls 1.2; ApplicationWindow { objectName: \"testWindow\"}");
QCOMPARE(engine()->rootObjects().size(), 1);
QCOMPARE(engine()->rootObjects().front()->objectName(), QString::fromLocal8Bit("testWindow"));
QVERIFY(engine()->rootObjects().front()->isWindowType());
}
private:
2016-01-23 19:08:58 +01:00
QQmlApplicationEngine *engine()
{
return static_cast<QQmlApplicationEngine *>(m_engine);
}
2016-01-23 19:08:58 +01:00
void *m_engine;
};
/*
* Test QQmlContext
*/
class TestQQmlContext : public QObject
{
Q_OBJECT
private slots:
2016-01-23 19:08:58 +01:00
void initTestCase()
{
m_engine = nullptr;
m_context = nullptr;
}
2016-01-23 19:08:58 +01:00
void cleanupTestCase()
{
QVERIFY(m_engine == nullptr);
QVERIFY(m_context == nullptr);
}
2016-01-23 19:08:58 +01:00
void init()
{
2016-02-27 16:05:23 +01:00
m_engine = dos_qqmlapplicationengine_create();
m_context = dos_qqmlapplicationengine_context(m_engine);
QVERIFY(m_engine != nullptr);
QVERIFY(m_context != nullptr);
}
2016-01-23 19:08:58 +01:00
void cleanup()
{
m_context = nullptr;
dos_qqmlapplicationengine_delete(m_engine);
m_engine = nullptr;
}
2016-01-23 19:08:58 +01:00
void testCreateAndDelete()
{
// Implicit by invoking init and cleanup
}
2016-01-23 19:08:58 +01:00
void testSetContextProperty()
{
QVariant testData("Test Message");
dos_qqmlcontext_setcontextproperty(m_context, "testData", &testData);
2016-01-30 15:03:59 +01:00
engine()->loadData("import QtQuick 2.3; Text { objectName: \"label\"; text: testData } ");
2016-01-23 19:08:58 +01:00
QObject *label = engine()->rootObjects().first();
QVERIFY(label != nullptr);
QCOMPARE(label->objectName(), QString::fromLocal8Bit("label"));
QCOMPARE(label->property("text").toString(), testData.toString());
}
private:
2016-01-23 19:08:58 +01:00
QQmlApplicationEngine *engine()
{
return static_cast<QQmlApplicationEngine *>(m_engine);
}
QQmlContext *context()
{
return static_cast<QQmlContext *>(m_context);
}
2016-01-23 19:08:58 +01:00
void *m_engine;
void *m_context;
};
/*
2016-06-26 14:43:53 +02:00
* Test QObject
*/
class TestQObject : public QObject
{
Q_OBJECT
private slots:
void init()
2016-06-26 14:13:41 +02:00
{
testObject.reset(new MockQObject());
testObject->setObjectName("testObject");
testObject->setName("foo");
engine.reset(new QQmlApplicationEngine());
2017-04-09 14:34:47 +02:00
engine->rootContext()->setContextProperty("testObject", QVariant::fromValue<QObject *>(static_cast<QObject *>(testObject->data())));
engine->load(QUrl("qrc:///testQObject.qml"));
2016-06-07 22:52:29 +02:00
}
void cleanup()
2016-06-07 22:52:29 +02:00
{
engine.reset();
testObject.reset();
}
2017-04-09 14:34:47 +02:00
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());
2016-06-07 22:52:29 +02:00
}
void testPropertyReadAndWrite()
2016-06-18 20:16:26 +02:00
{
2017-04-09 14:34:47 +02:00
QObject *testCase = engine->rootObjects().first();
2016-06-18 20:16:26 +02:00
QVERIFY(testCase);
QVariant result;
QVERIFY(QMetaObject::invokeMethod(testCase, "testPropertyReadAndWrite", Q_RETURN_ARG(QVariant, result)));
QVERIFY(result.type() == QVariant::Bool);
QVERIFY(result.toBool());
}
2018-11-28 23:16:17 +01:00
void testPropertyGetSet() {
MockQObject testobject;
QObject *data = static_cast<QObject *>(testobject.data());
data->setProperty("name", "foo");
2018-11-28 23:16:17 +01:00
{
VoidPointer valuePtr(dos_qobject_property(data, "name"), &dos_qvariant_delete);
auto value = *static_cast<QVariant *>(valuePtr.get());
QVERIFY(value.type() == QVariant::String);
QVERIFY(value.toString() == "foo");
}
QVariant bar("bar");
2018-06-21 19:13:05 +02:00
dos_qobject_setProperty(data, "name", &bar);
2018-11-28 23:16:17 +01:00
{
VoidPointer valuePtr(dos_qobject_property(data, "name"), &dos_qvariant_delete);
auto value = *static_cast<QVariant *>(valuePtr.get());
QVERIFY(value.type() == QVariant::String);
QVERIFY(value.toString() == "bar");
}
}
void testSignalEmittion()
2016-06-18 20:16:26 +02:00
{
2017-04-09 14:34:47 +02:00
QObject *testCase = engine->rootObjects().first();
2016-06-18 20:16:26 +02:00
QVERIFY(testCase);
QVariant result;
QVERIFY(QMetaObject::invokeMethod(testCase, "testSignalEmittion", Q_RETURN_ARG(QVariant, result)));
QVERIFY(result.type() == QVariant::Bool);
QVERIFY(result.toBool());
}
2017-04-09 14:34:47 +02:00
void testArrayProperty()
{
QObject *testCase = engine->rootObjects().first();
QVERIFY(testCase);
QVariant result;
QVERIFY(QMetaObject::invokeMethod(testCase, "testArrayProperty", Q_RETURN_ARG(QVariant, result)));
QVERIFY(result.type() == QVariant::Bool);
QVERIFY(result.toBool());
}
2016-06-07 22:52:29 +02:00
private:
QString value;
unique_ptr<MockQObject> testObject;
unique_ptr<QQmlApplicationEngine> engine;
2016-01-23 19:32:55 +01:00
};
2016-01-13 22:01:11 +01:00
2016-01-23 19:32:55 +01:00
/*
2017-03-05 19:30:57 +01:00
* Test QAbstractItemModel
2016-01-23 19:32:55 +01:00
*/
2017-03-05 19:30:57 +01:00
class TestQAbstractItemModel : public QObject
2016-01-23 19:32:55 +01:00
{
Q_OBJECT
2016-01-13 19:07:13 +01:00
2016-01-23 19:32:55 +01:00
private slots:
2016-06-10 22:13:51 +02:00
void init()
2016-01-23 19:32:55 +01:00
{
testObject.reset(new MockQAbstractItemModel());
2016-06-19 17:53:31 +02:00
testObject->setObjectName("testObject");
testObject->setName("foo");
2016-06-19 17:13:06 +02:00
engine.reset(new QQmlApplicationEngine());
2017-04-09 14:34:47 +02:00
engine->rootContext()->setContextProperty("testObject", QVariant::fromValue<QObject *>(static_cast<QObject *>(testObject->data())));
2016-06-19 17:13:06 +02:00
engine->load(QUrl("qrc:///testQAbstractItemModel.qml"));
2016-06-10 22:13:51 +02:00
}
void cleanup()
{
2016-06-19 17:13:06 +02:00
engine.reset();
2016-06-10 22:13:51 +02:00
testObject.reset();
}
2016-01-23 19:32:55 +01:00
2017-04-09 14:34:47 +02:00
void testObjectName()
{
QObject *testCase = engine->rootObjects().first();
2016-06-19 17:53:31 +02:00
QVERIFY(testCase);
QVariant result;
QVERIFY(QMetaObject::invokeMethod(testCase, "testObjectName", Q_RETURN_ARG(QVariant, result)));
QVERIFY(result.type() == QVariant::Bool);
QVERIFY(result.toBool());
}
void testPropertyReadAndWrite()
{
2017-04-09 14:34:47 +02:00
QObject *testCase = engine->rootObjects().first();
2016-06-19 17:53:31 +02:00
QVERIFY(testCase);
QVariant result;
QVERIFY(QMetaObject::invokeMethod(testCase, "testPropertyReadAndWrite", Q_RETURN_ARG(QVariant, result)));
QVERIFY(result.type() == QVariant::Bool);
QVERIFY(result.toBool());
}
void testSignalEmittion()
{
2017-04-09 14:34:47 +02:00
QObject *testCase = engine->rootObjects().first();
2016-06-19 17:53:31 +02:00
QVERIFY(testCase);
QVariant result;
QVERIFY(QMetaObject::invokeMethod(testCase, "testSignalEmittion", Q_RETURN_ARG(QVariant, result)));
QVERIFY(result.type() == QVariant::Bool);
QVERIFY(result.toBool());
}
2017-04-09 14:34:47 +02:00
void testRowCount()
{
QObject *testCase = engine->rootObjects().first();
2016-06-19 17:13:06 +02:00
QVERIFY(testCase);
QVariant result;
QVERIFY(QMetaObject::invokeMethod(testCase, "testRowCount", Q_RETURN_ARG(QVariant, result)));
QVERIFY(result.type() == QVariant::Bool);
QVERIFY(result.toBool());
2016-06-10 22:13:51 +02:00
}
2016-01-23 19:32:55 +01:00
2017-04-09 14:34:47 +02:00
void testColumnCount()
{
QObject *testCase = engine->rootObjects().first();
2016-06-19 17:13:06 +02:00
QVERIFY(testCase);
QVariant result;
QVERIFY(QMetaObject::invokeMethod(testCase, "testColumnCount", Q_RETURN_ARG(QVariant, result)));
QVERIFY(result.type() == QVariant::Bool);
QVERIFY(result.toBool());
2016-06-10 22:13:51 +02:00
}
2017-04-09 14:34:47 +02:00
void testData()
{
QObject *testCase = engine->rootObjects().first();
2016-06-19 17:13:06 +02:00
QVERIFY(testCase);
QVariant result;
QVERIFY(QMetaObject::invokeMethod(testCase, "testData", Q_RETURN_ARG(QVariant, result)));
QVERIFY(result.type() == QVariant::Bool);
QVERIFY(result.toBool());
2016-01-23 19:32:55 +01:00
}
2016-06-10 22:13:51 +02:00
2017-04-09 14:34:47 +02:00
void testSetData()
{
QObject *testCase = engine->rootObjects().first();
2016-06-19 18:17:48 +02:00
QVERIFY(testCase);
QVariant result;
QVERIFY(QMetaObject::invokeMethod(testCase, "testSetData", Q_RETURN_ARG(QVariant, result)));
QVERIFY(result.type() == QVariant::Bool);
QVERIFY(result.toBool());
}
2016-06-10 22:13:51 +02:00
private:
QString value;
unique_ptr<MockQAbstractItemModel> testObject;
2016-06-19 17:13:06 +02:00
unique_ptr<QQmlApplicationEngine> engine;
2016-01-23 19:32:55 +01:00
};
2016-01-16 11:29:35 +01:00
2016-06-21 23:15:58 +02:00
/*
2016-06-26 14:43:53 +02:00
* Test QDeclarative
2016-06-21 23:15:58 +02:00
*/
class TestQDeclarativeIntegration : public QObject
{
Q_OBJECT
private slots:
2017-04-09 14:34:47 +02:00
void testQmlRegisterType()
{
2016-06-21 23:15:58 +02:00
::QmlRegisterType registerType;
registerType.major = 1;
registerType.minor = 0;
registerType.uri = "MockModule";
registerType.qml = "MockQObject";
registerType.staticMetaObject = MockQObject::staticMetaObject();
registerType.createDObject = &mockQObjectCreator;
registerType.deleteDObject = &mockQObjectDeleter;
dos_qdeclarative_qmlregistertype(&registerType);
2016-06-26 14:13:41 +02:00
auto engine = make_unique<QQmlApplicationEngine>();
2016-06-21 23:15:58 +02:00
engine->load(QUrl("qrc:///testQDeclarative.qml"));
2017-04-09 14:34:47 +02:00
QObject *testCase = engine->rootObjects().first();
2016-06-21 23:15:58 +02:00
QVERIFY(testCase);
QVariant result;
QVERIFY(QMetaObject::invokeMethod(testCase, "testQmlRegisterType", Q_RETURN_ARG(QVariant, result)));
QVERIFY(result.type() == QVariant::Bool);
QVERIFY(result.toBool());
}
2017-04-09 14:34:47 +02:00
void testQmlRegisterSingletonType()
{
2016-06-21 23:48:57 +02:00
::QmlRegisterType registerType;
registerType.major = 1;
registerType.minor = 0;
registerType.uri = "MockModule";
registerType.qml = "MockQObjectSingleton";
registerType.staticMetaObject = MockQObject::staticMetaObject();
registerType.createDObject = &mockQObjectCreator;
registerType.deleteDObject = &mockQObjectDeleter;
dos_qdeclarative_qmlregistersingletontype(&registerType);
2016-06-26 14:13:41 +02:00
auto engine = make_unique<QQmlApplicationEngine>();
2016-06-21 23:48:57 +02:00
engine->load(QUrl("qrc:///testQDeclarative.qml"));
2017-04-09 14:34:47 +02:00
QObject *testCase = engine->rootObjects().first();
2016-06-21 23:48:57 +02:00
QVERIFY(testCase);
QVariant result;
QVERIFY(QMetaObject::invokeMethod(testCase, "testQmlRegisterSingletonType", Q_RETURN_ARG(QVariant, result)));
QVERIFY(result.type() == QVariant::Bool);
QVERIFY(result.toBool());
}
2016-06-21 23:15:58 +02:00
private:
static void mockQObjectCreator(int typeId, void *wrapper, void **mockQObjectPtr, void **dosQObject)
{
VoidPointer data(wrapper, &emptyVoidDeleter);
auto mockQObject = new MockQObject();
mockQObject->swapData(data);
*dosQObject = data.release();
*mockQObjectPtr = mockQObject;
}
static void mockQObjectDeleter(int typeId, void *mockQObject)
{
2017-04-09 14:34:47 +02:00
auto temp = static_cast<MockQObject *>(mockQObject);
2016-06-21 23:15:58 +02:00
delete temp;
}
2017-04-09 14:34:47 +02:00
static void emptyVoidDeleter(void *) {}
2016-06-21 23:15:58 +02:00
};
2016-06-26 14:43:53 +02:00
/*
* Test QModelIndex
*/
class TestQModelIndex : public QObject
{
Q_OBJECT
private slots:
2017-04-09 14:34:47 +02:00
void testCreate()
{
2016-06-26 14:43:53 +02:00
VoidPointer index (dos_qmodelindex_create(), &dos_qmodelindex_delete);
QVERIFY(index.get());
QVERIFY(!dos_qmodelindex_isValid(index.get()));
}
2017-04-09 14:34:47 +02:00
void testRow()
{
2016-06-26 14:43:53 +02:00
VoidPointer index (dos_qmodelindex_create(), &dos_qmodelindex_delete);
QVERIFY(index.get());
QVERIFY(!dos_qmodelindex_isValid(index.get()));
QCOMPARE(dos_qmodelindex_row(index.get()), -1);
}
2017-04-09 14:34:47 +02:00
void testColumn()
{
2016-06-26 14:43:53 +02:00
VoidPointer index (dos_qmodelindex_create(), &dos_qmodelindex_delete);
QVERIFY(index.get());
QVERIFY(!dos_qmodelindex_isValid(index.get()));
QCOMPARE(dos_qmodelindex_column(index.get()), -1);
}
2017-04-09 14:34:47 +02:00
void testParent()
{
2016-06-26 14:43:53 +02:00
VoidPointer index (dos_qmodelindex_create(), &dos_qmodelindex_delete);
QVERIFY(index.get());
QVERIFY(!dos_qmodelindex_isValid(index.get()));
VoidPointer parentIndex (dos_qmodelindex_parent(index.get()), &dos_qmodelindex_delete);
QVERIFY(parentIndex.get());
QVERIFY(!dos_qmodelindex_isValid(parentIndex.get()));
}
2017-04-09 14:34:47 +02:00
void testChild()
{
2016-06-26 14:43:53 +02:00
VoidPointer index (dos_qmodelindex_create(), &dos_qmodelindex_delete);
QVERIFY(index.get());
QVERIFY(!dos_qmodelindex_isValid(index.get()));
VoidPointer childIndex (dos_qmodelindex_child(index.get(), 0, 0), &dos_qmodelindex_delete);
QVERIFY(childIndex.get());
QVERIFY(!dos_qmodelindex_isValid(childIndex.get()));
}
2017-04-09 14:34:47 +02:00
void testSibling()
{
2016-06-26 14:43:53 +02:00
VoidPointer index (dos_qmodelindex_create(), &dos_qmodelindex_delete);
QVERIFY(index.get());
QVERIFY(!dos_qmodelindex_isValid(index.get()));
VoidPointer siblingIndex (dos_qmodelindex_sibling(index.get(), 0, 0), &dos_qmodelindex_delete);
QVERIFY(siblingIndex.get());
QVERIFY(!dos_qmodelindex_isValid(siblingIndex.get()));
}
2017-04-09 14:34:47 +02:00
void testData()
{
2016-06-26 14:43:53 +02:00
VoidPointer index (dos_qmodelindex_create(), &dos_qmodelindex_delete);
QVERIFY(index.get());
QVERIFY(!dos_qmodelindex_isValid(index.get()));
VoidPointer data(dos_qmodelindex_data(index.get(), Qt::DisplayRole), &dos_qvariant_delete);
QVERIFY(data.get());
QVERIFY(dos_qvariant_isnull(data.get()));
}
};
2016-06-26 18:46:03 +02:00
/*
* Test QQuickView
*/
class TestQQuickView : public QObject
{
Q_OBJECT
private slots:
2017-04-09 14:34:47 +02:00
void testCreate()
{
2016-06-26 18:46:03 +02:00
VoidPointer view(dos_qquickview_create(), &dos_qquickview_delete);
QVERIFY(view.get());
}
2017-04-09 14:34:47 +02:00
void testSourceAndSetSource()
{
2016-06-26 18:46:03 +02:00
std::string testUrl = "qrc:/testQQuickView.qml";
VoidPointer view(dos_qquickview_create(), &dos_qquickview_delete);
VoidPointer url(dos_qurl_create(testUrl.c_str(), QUrl::StrictMode), &dos_qurl_delete);
dos_qquickview_set_source_url(view.get(), url.get());
CharPointer tempUrl(dos_qquickview_source(view.get()), &dos_chararray_delete);
QCOMPARE(std::string(tempUrl.get()), testUrl);
dos_qquickview_show(view.get());
}
};
2016-01-23 19:32:55 +01:00
int main(int argc, char *argv[])
{
using namespace DOS;
2016-01-16 11:29:35 +01:00
2016-01-23 19:32:55 +01:00
bool success = true;
success &= ExecuteTest<TestQGuiApplication>(argc, argv);
success &= ExecuteTest<TestQApplication>(argc, argv);
2016-06-26 15:05:38 +02:00
success &= ExecuteTest<TestQVariant>(argc, argv);
success &= ExecuteTest<TestQUrl>(argc, argv);
success &= ExecuteTest<TestQModelIndex>(argc, argv);
2016-01-23 19:32:55 +01:00
success &= ExecuteGuiTest<TestQQmlApplicationEngine>(argc, argv);
success &= ExecuteGuiTest<TestQQmlContext>(argc, argv);
success &= ExecuteGuiTest<TestQObject>(argc, argv);
2017-03-05 19:30:57 +01:00
success &= ExecuteGuiTest<TestQAbstractItemModel>(argc, argv);
2016-06-21 23:15:58 +02:00
success &= ExecuteGuiTest<TestQDeclarativeIntegration>(argc, argv);
2016-06-26 18:46:03 +02:00
success &= ExecuteGuiTest<TestQQuickView>(argc, argv);
2016-01-23 19:32:55 +01:00
return success ? 0 : 1;
}
#include "test_dotherside.moc"