File indexing completed on 2024-06-23 05:49:22

0001 /*
0002     This file is part of the Kasten Framework, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2007, 2011 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #include "documentmanagertest.hpp"
0010 
0011 // sut
0012 #include <documentmanager.hpp>
0013 // test
0014 #include <testdocument.hpp>
0015 // Qt
0016 #include <QTest>
0017 #include <QSignalSpy>
0018 
0019 void DocumentManagerTest::checkAdded(QSignalSpy* changedSpy, Kasten::AbstractDocument* document)
0020 {
0021     QVERIFY(changedSpy->isValid());
0022     QCOMPARE(changedSpy->size(), 1);
0023     const QList<QVariant> arguments = changedSpy->takeFirst();
0024     QCOMPARE(arguments.size(), 1);
0025     const QVector<Kasten::AbstractDocument*> documents =
0026         arguments.at(0).value<QVector<Kasten::AbstractDocument*>>();
0027     QCOMPARE(documents.size(), 1);
0028     QCOMPARE(documents.at(0), document);
0029 }
0030 
0031 void DocumentManagerTest::checkRemoving(QSignalSpy* changedSpy, Kasten::AbstractDocument* document)
0032 {
0033     QVERIFY(changedSpy->isValid());
0034     QCOMPARE(changedSpy->size(), 1);
0035     const QList<QVariant> arguments = changedSpy->takeFirst();
0036     QCOMPARE(arguments.size(), 1);
0037     const QVector<Kasten::AbstractDocument*> documents =
0038         arguments.at(0).value<QVector<Kasten::AbstractDocument*>>();
0039     QCOMPARE(documents.size(), 1);
0040     QCOMPARE(documents.at(0), document);
0041 }
0042 
0043 void DocumentManagerTest::initTestCase()
0044 {
0045     qRegisterMetaType<QVector<Kasten::AbstractDocument*>>("QVector<Kasten::AbstractDocument*>");
0046 }
0047 
0048 void DocumentManagerTest::testConstructor()
0049 {
0050     auto* documentManager = new Kasten::DocumentManager();
0051     delete documentManager;
0052 }
0053 
0054 void DocumentManagerTest::testAddRemove()
0055 {
0056     auto* doc1 = new Kasten::TestDocument();
0057     auto* doc2 = new Kasten::TestDocument();
0058     auto* doc3 = new Kasten::TestDocument();
0059 
0060     auto* documentManager = new Kasten::DocumentManager();
0061     auto* addedSpy = new QSignalSpy(documentManager, SIGNAL(added(QVector<Kasten::AbstractDocument*>)));
0062     auto* closingSpy = new QSignalSpy(documentManager, SIGNAL(closing(QVector<Kasten::AbstractDocument*>)));
0063 
0064     documentManager->addDocument(doc1);
0065     checkAdded(addedSpy, doc1);
0066 
0067     documentManager->closeDocument(doc1);
0068     checkAdded(closingSpy, doc1);
0069 
0070     documentManager->addDocument(doc2);
0071     checkAdded(addedSpy, doc2);
0072     documentManager->addDocument(doc3);
0073     checkAdded(addedSpy, doc3);
0074 
0075     documentManager->closeDocument(doc3);
0076     checkAdded(closingSpy, doc3);
0077     documentManager->closeDocument(doc2);
0078     checkAdded(closingSpy, doc2);
0079 
0080     delete documentManager;
0081     delete addedSpy;
0082     delete closingSpy;
0083 }
0084 
0085 void DocumentManagerTest::testCanClose()
0086 {
0087     auto* doc = new Kasten::TestDocument();
0088 
0089     auto* documentManager = new Kasten::DocumentManager();
0090     documentManager->addDocument(doc);
0091     QVERIFY(documentManager->canClose(doc));
0092 
0093 //     doc->setSyncStates( Kasten::LocalHasChanges );
0094 //     QVERIFY( !documentManager->canClose(doc) );
0095 
0096     delete documentManager;
0097 }
0098 
0099 QTEST_GUILESS_MAIN(DocumentManagerTest)
0100 
0101 #include "moc_documentmanagertest.cpp"