File indexing completed on 2024-04-21 16:32:33

0001 /***************************************************************************
0002                           krenametest.h  -  description
0003                              -------------------
0004     begin                : Sat Apr 20 2007
0005     copyright            : (C) 2007 by Dominik Seichter
0006     email                : domseichter@web.de
0007  ***************************************************************************/
0008 
0009 /***************************************************************************
0010  *                                                                         *
0011  *   This program is free software; you can redistribute it and/or modify  *
0012  *   it under the terms of the GNU General Public License as published by  *
0013  *   the Free Software Foundation; either version 2 of the License, or     *
0014  *   (at your option) any later version.                                   *
0015  *                                                                         *
0016  ***************************************************************************/
0017 
0018 #ifndef KRENAME_TEST_H
0019 #define KRENAME_TEST_H
0020 
0021 #include <stdarg.h>
0022 
0023 #include <QWidget>
0024 
0025 #include "krenamefile.h"
0026 
0027 class QUrl;
0028 class QTextEdit;
0029 
0030 /** This class contains KRename's selftest.
0031  *  The selftest consists of several unit tests for
0032  *  important classes.
0033  *
0034  *  Currently covered classes:
0035  *
0036  *  - KRenameFile
0037  */
0038 class KRenameTest : public QWidget
0039 {
0040 public:
0041     /** Construct a new KRenameTest dialog
0042      */
0043     KRenameTest();
0044     ~KRenameTest();
0045 
0046     /** Starts the selftest
0047      */
0048     void startTest();
0049 
0050 private:
0051     /** Test the KRenameFile class
0052      */
0053     void testKRenameFile();
0054 
0055     /** Test a KRenameFile class object for
0056      *  an url if the pass is split correctly.
0057      *
0058      *  \param url the url to split
0059      *  \param directory the expected directory
0060      *  \param filename the expected filename
0061      *  \param extension the expected extension
0062      *  \param eSplitMode the splitmode to use
0063      *  \param dot the dot to use as splitter
0064      *  \param isDir test a file or a directory
0065      */
0066     bool testKRenameFileInternal(const QUrl &url, const QString &directory,
0067                                  const QString &filename, const QString &extension,
0068                                  ESplitMode eSplitMode, int dot, bool isDir);
0069 
0070     /** Test the BatchRenamer class
0071      */
0072     void testBatchRenamer();
0073     bool tokenTest(const char *token, const QString &filename, const QString &expected) ;
0074     bool numberingTest(int length, int start, int step, QList<int> skip, int num = 100);
0075     bool replaceTest(const QString &token, const QString &filename, const QString &expected,
0076                      const QString &replace, const QString &with, bool regExp);
0077 
0078     /** Write a test caption to the output window
0079      *  \param text the text which will be output
0080      */
0081     void writeTestHeader(const QString &text);
0082 
0083     /** Write a message about to the output window
0084      *  \param text the text which will be output
0085      */
0086     void writeTestMessage(const char *format, ...);
0087 
0088     /**
0089      * Test a list of multiple files.
0090      * @param files a list of filenames to be tested
0091      * @param a list of expected filenames
0092      * @param a list of expected paths
0093      * @param a token to use
0094      */
0095     bool testMultipleFiles(KRenameFile::List &files, const QStringList &expected,
0096                            const QStringList &exptectedPaths, const QString &token);
0097 
0098 private:
0099     QTextEdit *m_text;       ///< output window
0100 
0101     int        m_counter;    ///< test counter (increased for each individual test)
0102     bool       m_result;     ///< return value of tests is stored here
0103     bool       m_verbose;    ///< if true print more information for each test
0104     int        m_success;    ///< counter of successful tests
0105     int        m_failed;     ///< counter of failed tests
0106 
0107     static const int BUFFER_LENGTH = 512;
0108     char       m_buffer[BUFFER_LENGTH]; ///< buffer in which messages are constructed
0109 };
0110 
0111 #endif // KRENAME_TEST_H