From 5649a76a0e939fec75a2c63373740de96c9aa094 Mon Sep 17 00:00:00 2001 From: Filippo Cucchetto Date: Fri, 10 Jun 2016 22:13:51 +0200 Subject: [PATCH] Improved test coverage --- test/test_dotherside.cpp | 66 +++++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 17 deletions(-) diff --git a/test/test_dotherside.cpp b/test/test_dotherside.cpp index ae3463f..0acd088 100644 --- a/test/test_dotherside.cpp +++ b/test/test_dotherside.cpp @@ -297,9 +297,9 @@ class TestQAbstractListModel : public QObject Q_OBJECT private slots: - void testPropertyInheritance() + void init() { - DOS::SignalDefinitions signalDefinitions {DOS::SignalDefinition {"nameChanged", {}}}; + DOS::SignalDefinitions signalDefinitions {DOS::SignalDefinition {"nameChanged", {QMetaType::QString}}}; 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"}}; @@ -312,17 +312,16 @@ private slots: std::unique_ptr moh(new DosIQMetaObjectHolder(mo)); - QString value = ""; - auto ose = [&value](const QString & name, const std::vector &args) -> QVariant { + auto ose = [this, value = QString()](const QString & name, const std::vector &args) mutable -> QVariant { if (name == "name") return value; - else if (name == "setName") + else if (name == "setName") { value = args.front().toString(); + testObject->emitSignal(testObject.get(), "nameChanged", {value}); + } return QVariant(); }; - void *dPointer = nullptr; - RowCountCallback rcc = nullptr; ColumnCountCallback ccc = nullptr; DataCallback dc = nullptr; @@ -331,18 +330,51 @@ private slots: FlagsCallback fc = nullptr; HeaderDataCallback hdc = nullptr; - DOS::DosQAbstractListModel testObject(dPointer, moh->data(), ose, rcc, ccc, dc, sdc, rnc, fc, hdc); - testObject.setObjectName("testObject"); - testObject.setProperty("name", "foo"); + void *dPointer = nullptr; - /// 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")); + testObject = std::make_unique(dPointer, moh->data(), ose, rcc, ccc, dc, sdc, rnc, fc, hdc); + testObject->setObjectName("testObject"); + testObject->setProperty("name", "foo"); } + + void cleanup() + { + testObject.reset(); + } + + void testPropertyInheritance() + { + /// Test property read + QCOMPARE(testObject->property("objectName").toString(), QString("testObject")); + QCOMPARE(testObject->property("name").toString(), QString("foo")); + } + + void testPropertyReadAndWrite() + { + QCOMPARE(testObject->property("name").toString(), QString("foo")); + testObject->setProperty("name", QString("bar")); + QCOMPARE(testObject->property("name").toString(), QString("bar")); + } + + void testSlotInvokation() + { + QMetaObject::invokeMethod(testObject.get(), "setName", Q_ARG(QString, "bar")); + QCOMPARE(testObject->property("name").toString(), QString("bar")); + } + + void testSignalEmittion() + { + QSignalSpy signalSpy(testObject.get(), SIGNAL(nameChanged(QString))); + QCOMPARE(signalSpy.size(), 0); + QCOMPARE(testObject->property("name").toString(), QString("foo")); + testObject->setProperty("name", QString("bar")); + QCOMPARE(testObject->property("name").toString(), QString("bar")); + QCOMPARE(signalSpy.size(), 1); + } + +private: + QString value; + std::unique_ptr testObject; };