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"