File indexing completed on 2024-05-19 04:39:59

0001 /*
0002     SPDX-FileCopyrightText: 2014 Kevin Funk <kfunk@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #include "test_objectlist.h"
0008 
0009 #include "objectlist.h"
0010 
0011 #include <QTest>
0012 #include <QStandardPaths>
0013 
0014 QTEST_MAIN(TestObjectList)
0015 
0016 using namespace KDevelop;
0017 
0018 void TestObjectList::initTestCase()
0019 {
0020     QStandardPaths::setTestModeEnabled(true);
0021 }
0022 
0023 void TestObjectList::testBasicInterface()
0024 {
0025     ObjectList<QObject> list;
0026 
0027     QObject o;
0028     list.append(&o);
0029     QCOMPARE(list.data().size(), 1);
0030     QCOMPARE(list.data().at(0), &o);
0031     QCOMPARE(list.data().value(0), &o);
0032 
0033     QCOMPARE(list.data().size(), 1);
0034     QCOMPARE(list.data().at(0), &o);
0035 
0036     QVERIFY(list.remove(&o));
0037     QCOMPARE(list.data().size(), 0);
0038     //QCOMPARE(list.at(0)), &o); // would crash
0039     QVERIFY(!list.data().value(0));
0040 
0041     QVERIFY(list.data().isEmpty());
0042 
0043     // try removing it again
0044     QVERIFY(!list.remove(&o));
0045 }
0046 
0047 void TestObjectList::testDeleteAll()
0048 {
0049     ObjectList<QObject> list;
0050 
0051     QPointer<QObject> p(new QObject);
0052     list.append(p.data());
0053     list.deleteAll();
0054     QVERIFY(!p);
0055 }
0056 
0057 void TestObjectList::testBehaviorOnDestruction()
0058 {
0059     QPointer<QObject> p(new QObject);
0060 
0061     {
0062         ObjectList<QObject> list;
0063         list.append(p.data());
0064         // nothing is supposed to happen on destruction
0065     }
0066     QVERIFY(p);
0067 
0068     {
0069         ObjectList<QObject> list(ObjectListTracker::CleanupWhenDone);
0070         list.append(p.data());
0071     }
0072     QVERIFY(!p);
0073 }
0074 
0075 #include "moc_test_objectlist.cpp"