File indexing completed on 2024-04-21 03:48:17
0001 /* 0002 * SPDX-FileCopyrightText: 2016 Hartmut Riesenbeck <hartmut.riesenbeck@gmx.de> 0003 * SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "keduvocdocument.h" 0007 #include <QTemporaryFile> 0008 #include <QTest> 0009 0010 namespace KEduVocDocumentTests 0011 { 0012 /** @file 0013 * \brief Various KEduVocDocument tests 0014 * This test class contends various tests for public KEduVocDocument methods. 0015 * They are used to proof expected behavior before and after apply changes to the tested methods. 0016 * @author Hartmut Riesenbeck <hartmut.riesenbeck@gmx.de> 0017 */ 0018 0019 class KEduVocDocumentTest : public QObject 0020 { 0021 Q_OBJECT 0022 0023 private slots: 0024 void initTestCase(); 0025 void testDetectFileType(); 0026 void testOpen(); 0027 0028 private: 0029 void createTmpTestFileOfType(KEduVocDocument::FileType fileType); 0030 QString tmpTestFileName() const; 0031 QUrl tmpTestFileUrl() const; 0032 0033 private: 0034 QTemporaryFile m_tempTestFile; 0035 KEduVocDocument m_documentTemplate; 0036 }; 0037 0038 void KEduVocDocumentTest::initTestCase() 0039 { 0040 if (!m_tempTestFile.open()) { 0041 QFAIL("Temporary test file could not be created."); 0042 return; 0043 } 0044 m_tempTestFile.close(); 0045 0046 KEduVocIdentifier lang; 0047 lang.setName(QStringLiteral("KEduVocDocument Language Name")); 0048 lang.setLocale(QStringLiteral("en")); 0049 0050 m_documentTemplate.setAuthor(QStringLiteral("KEduVocDocument Tests")); 0051 m_documentTemplate.appendIdentifier(lang); 0052 m_documentTemplate.setGenerator(QStringLiteral("KEduVocDocument Unit Tests")); 0053 } 0054 0055 void KEduVocDocumentTest::testDetectFileType() 0056 { 0057 KEduVocDocument::FileType resultFileType(KEduVocDocument::KvdNone); 0058 0059 createTmpTestFileOfType(KEduVocDocument::Kvtml); 0060 resultFileType = KEduVocDocument::detectFileType(tmpTestFileName()); 0061 QCOMPARE(resultFileType, KEduVocDocument::Kvtml); 0062 0063 createTmpTestFileOfType(KEduVocDocument::Csv); 0064 resultFileType = KEduVocDocument::detectFileType(tmpTestFileName()); 0065 QCOMPARE(resultFileType, KEduVocDocument::Csv); 0066 } 0067 0068 void KEduVocDocumentTest::testOpen() 0069 { 0070 KEduVocDocument::ErrorCode openResult(KEduVocDocument::NoError); 0071 0072 createTmpTestFileOfType(KEduVocDocument::Kvtml); 0073 KEduVocDocument docKvtml; 0074 openResult = docKvtml.open(tmpTestFileUrl(), KEduVocDocument::FileOpenReadOnly); 0075 QCOMPARE(openResult, KEduVocDocument::NoError); 0076 0077 createTmpTestFileOfType(KEduVocDocument::Csv); 0078 KEduVocDocument docCsv; 0079 openResult = docCsv.open(tmpTestFileUrl(), KEduVocDocument::FileOpenReadOnly); 0080 QCOMPARE(openResult, KEduVocDocument::NoError); 0081 } 0082 0083 void KEduVocDocumentTest::createTmpTestFileOfType(KEduVocDocument::FileType fileType) 0084 { 0085 KEduVocDocument::ErrorCode result = m_documentTemplate.saveAs(tmpTestFileUrl(), fileType); 0086 if (result != KEduVocDocument::NoError) { 0087 QStringList errorStrings = QStringList() << QStringLiteral("NoError") << QStringLiteral("Unknown") << QStringLiteral("InvalidXml") 0088 << QStringLiteral("FileTypeUnknown") << QStringLiteral("FileCannotWrite") << QStringLiteral("FileWriterFailed") 0089 << QStringLiteral("FileCannotRead") << QStringLiteral("FileReaderFailed") << QStringLiteral("FileDoesNotExist") 0090 << QStringLiteral("FileLocked") << QStringLiteral("FileCannotLock") << QStringLiteral("FileIsReadOnly"); 0091 QString failText = QStringLiteral("Temporary test file could not be saved. (Error code = %1)"); 0092 failText = failText.arg(errorStrings.value(result)); 0093 QFAIL(failText.toLocal8Bit().constData()); 0094 } 0095 } 0096 0097 QString KEduVocDocumentTest::tmpTestFileName() const 0098 { 0099 return m_tempTestFile.fileName(); 0100 } 0101 0102 QUrl KEduVocDocumentTest::tmpTestFileUrl() const 0103 { 0104 return QUrl::fromLocalFile(m_tempTestFile.fileName()); 0105 } 0106 0107 } 0108 0109 QTEST_MAIN(KEduVocDocumentTests::KEduVocDocumentTest) 0110 0111 #include "keduvocdocumenttest.moc"