From 2712fb154b9c317b632b8615755f53504061dd8f Mon Sep 17 00:00:00 2001 From: Filippo Cucchetto Date: Wed, 28 Nov 2018 23:16:17 +0100 Subject: [PATCH] Removed memory leaks from tests --- lib/src/DOtherSide.cpp | 1 - test/MockQAbstractItemModel.cpp | 9 +++++++-- test/MockQObject.cpp | 4 ++-- test/test_dotherside.cpp | 36 ++++++++++++++++++++------------- 4 files changed, 31 insertions(+), 19 deletions(-) diff --git a/lib/src/DOtherSide.cpp b/lib/src/DOtherSide.cpp index 32a118c..29e4848 100644 --- a/lib/src/DOtherSide.cpp +++ b/lib/src/DOtherSide.cpp @@ -543,7 +543,6 @@ void dos_qobject_setObjectName(::DosQObject *vptr, const char *name) auto object = static_cast(vptr); auto result = new QVariant(object->property(propertyName)); return static_cast(result); - } bool dos_qobject_setProperty(::DosQObject *vptr, const char *propertyName, ::DosQVariant *dosValue){ diff --git a/test/MockQAbstractItemModel.cpp b/test/MockQAbstractItemModel.cpp index a76ecfd..c51f995 100644 --- a/test/MockQAbstractItemModel.cpp +++ b/test/MockQAbstractItemModel.cpp @@ -12,7 +12,8 @@ std::string toStringFromQVariant(const DosQVariant *variant) VoidPointer initializeMetaObject() { - void *superClassMetaObject = dos_qabstractitemmodel_qmetaobject(); + VoidPointer superClassMetaObject(dos_qabstractitemmodel_qmetaobject(), + &dos_qmetaobject_delete); // Signals ::SignalDefinition signalDefinitionArray[1]; @@ -60,7 +61,11 @@ VoidPointer initializeMetaObject() propertyDefinitions.count = 1; propertyDefinitions.definitions = propertyDefinitionArray; - return VoidPointer(dos_qmetaobject_create(superClassMetaObject, "MockQAbstractListModel", &signalDefinitions, &slotDefinitions, &propertyDefinitions), + return VoidPointer(dos_qmetaobject_create(superClassMetaObject.get(), + "MockQAbstractListModel", + &signalDefinitions, + &slotDefinitions, + &propertyDefinitions), &dos_qmetaobject_delete); } } diff --git a/test/MockQObject.cpp b/test/MockQObject.cpp index 0c4ff1c..1415a64 100644 --- a/test/MockQObject.cpp +++ b/test/MockQObject.cpp @@ -13,7 +13,7 @@ std::string toStringFromQVariant(DosQVariant *variant) VoidPointer initializeMetaObject() { - void *superClassMetaObject = dos_qobject_qmetaobject(); + VoidPointer superClassMetaObject(dos_qobject_qmetaobject(), &dos_qmetaobject_delete); // Signals ::SignalDefinition signalDefinitionArray[2]; @@ -88,7 +88,7 @@ VoidPointer initializeMetaObject() propertyDefinitions.count = 2; propertyDefinitions.definitions = propertyDefinitionArray; - return VoidPointer(dos_qmetaobject_create(superClassMetaObject, "MockQObject", &signalDefinitions, &slotDefinitions, &propertyDefinitions), + return VoidPointer(dos_qmetaobject_create(superClassMetaObject.get(), "MockQObject", &signalDefinitions, &slotDefinitions, &propertyDefinitions), &dos_qmetaobject_delete); } } diff --git a/test/test_dotherside.cpp b/test/test_dotherside.cpp index 131e9b3..44ffb8d 100644 --- a/test/test_dotherside.cpp +++ b/test/test_dotherside.cpp @@ -184,13 +184,14 @@ private slots: QVERIFY(value == nullptr); } - void testQVariant(){ + void testQVariant() + { QVariant original("foo"); QVERIFY(original.type() == QVariant::String); - auto copypointer = dos_qvariant_create_qvariant(&original); - QVariant copy = *static_cast(copypointer); - QVERIFY(copy.type() == QVariant::String); - QCOMPARE(copy.toString().toStdString(),original.toString().toStdString()); + VoidPointer copyPointer(dos_qvariant_create_qvariant(&original), &dos_qvariant_delete); + QVariant* copy = static_cast(copyPointer.get()); + QCOMPARE(copy->type(), original.type()); + QCOMPARE(copy->toString().toStdString(), original.toString().toStdString()); } void testArray() @@ -410,18 +411,25 @@ private slots: QVERIFY(result.toBool()); } - void testPropertyGetSet(){ - auto testobject = new MockQObject; - QObject *data = static_cast(testobject->data()); + void testPropertyGetSet() { + MockQObject testobject; + QObject *data = static_cast(testobject.data()); data->setProperty("name", "foo"); - auto value = *static_cast(dos_qobject_property(data, "name")); - QVERIFY(value.type() == QVariant::String); - QVERIFY(value.toString() == "foo"); + { + VoidPointer valuePtr(dos_qobject_property(data, "name"), &dos_qvariant_delete); + auto value = *static_cast(valuePtr.get()); + QVERIFY(value.type() == QVariant::String); + QVERIFY(value.toString() == "foo"); + } QVariant bar("bar"); dos_qobject_setProperty(data, "name", &bar); - value = *static_cast(dos_qobject_property(data, "name")); - QVERIFY(value.type() == QVariant::String); - QVERIFY(value.toString() == "bar"); + + { + VoidPointer valuePtr(dos_qobject_property(data, "name"), &dos_qvariant_delete); + auto value = *static_cast(valuePtr.get()); + QVERIFY(value.type() == QVariant::String); + QVERIFY(value.toString() == "bar"); + } } void testSignalEmittion()