File indexing completed on 2024-04-28 03:48:24

0001 /*
0002  * SPDX-FileCopyrightText: 2014-2014 Andreas Xavier <andxav at zoho dot com>
0003  * SPDX-License-Identifier: GPL-2.0-or-later
0004  */
0005 
0006 #include "dummyreader.h"
0007 #include "keduvocdocument.h"
0008 
0009 #include <KTemporaryFile>
0010 
0011 #include <qtest_kde.h>
0012 
0013 /** Unit tests to exercise each exit path of the KEdeVocDocment open() API.*/
0014 class OpenAPITest : public QObject
0015 {
0016     Q_OBJECT
0017 
0018 private slots:
0019     /**  File Does not exist*/
0020     void fileDoesntExistTest();
0021     /**  File is Unreadable failure*/
0022     void unreadableFileTest();
0023     /**  File is locked failure*/
0024     void lockedFileFailureTest();
0025     /**  File is unknown format*/
0026     void unknownFormatTest();
0027     /**  FileReader error File*/
0028     void fileReaderFailedTest();
0029     /**  Good Read*/
0030     void goodTest();
0031 
0032 private:
0033     /** Class to manage creation/destruction of a temp doc*/
0034     class TestDoc : public KTemporaryFile
0035     {
0036     public:
0037         /** Create the file, fix the suffix and instantiate it.*/
0038         explicit TestDoc(KEduVocDocument::ErrorCode err = KEduVocDocument::NoError)
0039         {
0040             this->open(QFile::WriteOnly);
0041             QTextStream out(this);
0042             out << DummyReader::makeDummyString(err);
0043             this->close();
0044         }
0045         /** Destructor*/
0046         ~TestDoc()
0047         {
0048         }
0049     };
0050 };
0051 
0052 void OpenAPITest::fileDoesntExistTest()
0053 {
0054     KTemporaryFile tempfile;
0055     KEduVocDocument doc;
0056 
0057     KEduVocDocument::ErrorCode errcode(doc.open(tempfile.fileName(), KEduVocDocument::FileDefaultHandling));
0058     QCOMPARE(int(errcode), int(KEduVocDocument::FileDoesNotExist));
0059 }
0060 
0061 void OpenAPITest::unreadableFileTest()
0062 {
0063     TestDoc tempfile;
0064     QFile::setPermissions(tempfile.fileName(), ~QFile::Permissions(QFile::ReadOwner | QFile::ReadUser | QFile::ReadGroup | QFile::ReadOther));
0065 
0066     KEduVocDocument doc;
0067     KEduVocDocument::ErrorCode errcode(doc.open(tempfile.fileName(), KEduVocDocument::FileDefaultHandling));
0068 
0069     QCOMPARE(int(errcode), int(KEduVocDocument::FileDoesNotExist));
0070 }
0071 
0072 void OpenAPITest::lockedFileFailureTest()
0073 {
0074     TestDoc tempfile;
0075 
0076     KEduVocDocument doc;
0077     QCOMPARE(doc.open(tempfile.fileName(), KEduVocDocument::FileDefaultHandling), KEduVocDocument::NoError);
0078     QCOMPARE(doc.open(tempfile.fileName(), KEduVocDocument::FileDefaultHandling), KEduVocDocument::NoError);
0079     KEduVocDocument doc2;
0080     QCOMPARE(doc2.open(tempfile.fileName(), KEduVocDocument::FileDefaultHandling), KEduVocDocument::FileLocked);
0081 
0082     KEduVocDocument doc3;
0083     QCOMPARE(doc3.open(tempfile.fileName(), KEduVocDocument::FileIgnoreLock), KEduVocDocument::NoError);
0084 
0085     doc.close();
0086     QCOMPARE(doc2.open(tempfile.fileName(), KEduVocDocument::FileDefaultHandling), KEduVocDocument::NoError);
0087 }
0088 
0089 void OpenAPITest::unknownFormatTest()
0090 {
0091     TestDoc tempfile(KEduVocDocument::FileTypeUnknown);
0092     KEduVocDocument doc;
0093     QCOMPARE(doc.open(tempfile.fileName()), int(KEduVocDocument::FileTypeUnknown));
0094 }
0095 
0096 void OpenAPITest::fileReaderFailedTest()
0097 {
0098     TestDoc tempfile(KEduVocDocument::FileReaderFailed);
0099     KEduVocDocument doc;
0100     QCOMPARE(doc.open(tempfile.fileName()), int(KEduVocDocument::FileReaderFailed));
0101 }
0102 
0103 void OpenAPITest::goodTest()
0104 {
0105     TestDoc tempfile(KEduVocDocument::NoError);
0106     KEduVocDocument doc;
0107     QCOMPARE(doc.open(tempfile.fileName()), int(KEduVocDocument::NoError));
0108 }
0109 
0110 QTEST_MAIN(OpenAPITest, GUI)
0111 
0112 #include "openapitest.moc"