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

0001 /*
0002     This file is part of the Kasten Framework, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2007 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 "testdocumenttest.hpp"
0010 
0011 // test object
0012 #include <testdocument.hpp>
0013 // Qt
0014 #include <QTest>
0015 #include <QSignalSpy>
0016 
0017 static constexpr char TestData[] = "TestData";
0018 
0019 void TestDocumentTest::checkTitleChanged(QSignalSpy* titleChangedSpy, const QString& title)
0020 {
0021     QVERIFY(titleChangedSpy->isValid());
0022     QCOMPARE(titleChangedSpy->size(), 1);
0023     QList<QVariant> arguments = titleChangedSpy->takeFirst();
0024     QCOMPARE(arguments.at(0).toString(), title);
0025 }
0026 
0027 Q_DECLARE_METATYPE(Kasten::ContentFlags)
0028 
0029 void TestDocumentTest::checkContentFlagsChanged(QSignalSpy* changedSpy, Kasten::ContentFlags contentFlags)
0030 {
0031     QVERIFY(changedSpy->isValid());
0032     QCOMPARE(changedSpy->size(), 1);
0033     QList<QVariant> arguments = changedSpy->takeFirst();
0034     QCOMPARE(arguments.at(0).value<Kasten::ContentFlags>(), contentFlags);
0035 }
0036 
0037 //------------------------------------------------------------------ tests ----
0038 
0039 void TestDocumentTest::testPlainConstructor()
0040 {
0041     auto* document = new Kasten::TestDocument();
0042 
0043     QVERIFY(document != nullptr);
0044     QCOMPARE(*document->data(), QByteArray());
0045     QCOMPARE(document->title(), QString());
0046     QCOMPARE(document->contentFlags(), Kasten::ContentStateNormal);
0047 
0048     delete document;
0049 }
0050 
0051 void TestDocumentTest::testDataConstructor()
0052 {
0053     const QByteArray testData(TestData);
0054     auto* document = new Kasten::TestDocument(testData);
0055 
0056     QVERIFY(document != nullptr);
0057     QCOMPARE(*document->data(), testData);
0058     QCOMPARE(document->title(), QString());
0059     QCOMPARE(document->contentFlags(), Kasten::ContentStateNormal);
0060 
0061     delete document;
0062 }
0063 
0064 void TestDocumentTest::testChangeData()
0065 {
0066     qRegisterMetaType<Kasten::ContentFlags>("Kasten::ContentFlags");
0067     const QByteArray testData(TestData);
0068 
0069     auto* document = new Kasten::TestDocument();
0070 
0071     auto* changedSpy = new QSignalSpy(document, SIGNAL(contentFlagsChanged(Kasten::ContentFlags)));
0072 
0073     QCOMPARE(*document->data(), QByteArray());
0074     QCOMPARE(document->contentFlags(), Kasten::ContentStateNormal);
0075 
0076     document->setData(testData);
0077 
0078     const Kasten::ContentFlags contentFlags = Kasten::ContentHasUnstoredChanges;
0079     QCOMPARE(*document->data(), testData);
0080     QCOMPARE(document->contentFlags(), contentFlags);
0081     checkContentFlagsChanged(changedSpy, contentFlags);
0082 
0083     delete document;
0084     delete changedSpy;
0085 }
0086 
0087 void TestDocumentTest::testSetTitle()
0088 {
0089     auto* document = new Kasten::TestDocument();
0090 
0091     auto* titleChangedSpy = new QSignalSpy(document, SIGNAL(titleChanged(QString)));
0092 
0093     const QLatin1String title("title");   // TODO QStringLiteral
0094     document->setTitle(title);
0095 
0096     QCOMPARE(document->title(), title);
0097     QCOMPARE(document->contentFlags(), Kasten::ContentStateNormal);
0098     checkTitleChanged(titleChangedSpy, title);
0099 
0100     delete document;
0101     delete titleChangedSpy;
0102 }
0103 
0104 void TestDocumentTest::testSetContentFlags()
0105 {
0106     qRegisterMetaType<Kasten::ContentFlags>("Kasten::ContentFlags");
0107 
0108     auto* document = new Kasten::TestDocument();
0109 
0110     auto* changedSpy = new QSignalSpy(document, SIGNAL(contentFlagsChanged(Kasten::ContentFlags)));
0111 
0112     const Kasten::ContentFlags contentFlags = Kasten::ContentHasUnstoredChanges;
0113     document->setContentFlags(contentFlags);
0114 
0115     QCOMPARE(document->title(), QString());
0116     QCOMPARE(document->contentFlags(), contentFlags);
0117     checkContentFlagsChanged(changedSpy, contentFlags);
0118 
0119     delete document;
0120     delete changedSpy;
0121 }
0122 
0123 QTEST_GUILESS_MAIN(TestDocumentTest)
0124 
0125 #include "moc_testdocumenttest.cpp"