File indexing completed on 2024-04-21 09:42:40

0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 // SPDX-FileCopyrightText: 2007 Dominik Seichter <domseichter@web.de>
0003 
0004 #include "krenamefiletest.h"
0005 
0006 #include "krenamefile.h"
0007 
0008 #include <QtTest>
0009 
0010 QTEST_GUILESS_MAIN(KRenameFileTest)
0011 Q_DECLARE_METATYPE(ESplitMode)
0012 
0013 void KRenameFileTest::initTestCase()
0014 {
0015     qRegisterMetaType<ESplitMode>();
0016 }
0017 
0018 void KRenameFileTest::testKRenameFile_data()
0019 {
0020     QTest::addColumn<QUrl>("url");
0021     QTest::addColumn<QString>("directory");
0022     QTest::addColumn<QString>("filename");
0023     QTest::addColumn<QString>("extension");
0024     QTest::addColumn<ESplitMode>("eSplitMode");
0025     QTest::addColumn<int>("dot");
0026     QTest::addColumn<bool>("isDir");
0027 
0028     // Test a simple filename
0029     QTest::newRow("simple/FirstDot")
0030       << QUrl("file:///home/test/simple.txt") << "/home/test"
0031       << "simple" << "txt" << eSplitMode_FirstDot << 0 << false;
0032     QTest::newRow("simple/LastDot")
0033       << QUrl("file:///home/test/simple.txt") << "/home/test"
0034       << "simple" << "txt" << eSplitMode_LastDot << 0 << false;
0035     QTest::newRow("simple/NoExtension")
0036       << QUrl("file:///home/test/simple.txt") << "/home/test"
0037       << "simple.txt" << "" << eSplitMode_NoExtension << 0 << false;
0038     QTest::newRow("simple/NoExtension/1")
0039       << QUrl("file:///home/test/simple.txt") << "/home/test"
0040       << "simple.txt" << "" << eSplitMode_NoExtension << 1 << false;
0041     QTest::newRow("simple/CustomDot/0")
0042       << QUrl("file:///home/test/simple.txt") << "/home/test"
0043       << "simple.txt" << "" << eSplitMode_CustomDot << 0 << false;
0044     QTest::newRow("simple/CustomDot/1")
0045       << QUrl("file:///home/test/simple.txt") << "/home/test"
0046       << "simple" << "txt" << eSplitMode_CustomDot << 1 << false;
0047 
0048     // Test a simple filename and a directory with spaces
0049     QTest::newRow("spaces/FirstDot")
0050       << QUrl("file:///home/dir with space/simple.txt")
0051       << "/home/dir with space" << "simple" << "txt"
0052       << eSplitMode_FirstDot << 0 << false;
0053     QTest::newRow("spaces/LastDot")
0054       << QUrl("file:///home/dir with space/simple.txt")
0055       << "/home/dir with space" << "simple" << "txt"
0056       << eSplitMode_LastDot << 0 << false;
0057     QTest::newRow("spaces/CustomDot/0")
0058       << QUrl("file:///home/dir with space/simple.txt")
0059       << "/home/dir with space" << "simple.txt" << ""
0060       << eSplitMode_CustomDot << 0 << false;
0061     QTest::newRow("spaces/CustomDot/1")
0062       << QUrl("file:///home/dir with space/simple.txt")
0063       << "/home/dir with space" << "simple" << "txt"
0064       << eSplitMode_CustomDot << 1 << false;
0065 
0066     // test a more complicated file extension
0067     QTest::newRow("complicated/FirstDot")
0068       << QUrl("file:///home/test/complicated.tar.gz")
0069       << "/home/test" << "complicated" << "tar.gz"
0070       << eSplitMode_FirstDot << 0 << false;
0071     QTest::newRow("complicated/LastDot")
0072       << QUrl("file:///home/test/complicated.tar.gz")
0073       << "/home/test" << "complicated.tar" << "gz"
0074       << eSplitMode_LastDot << 0 << false;
0075     QTest::newRow("complicated/CustomDot/0")
0076       << QUrl("file:///home/test/complicated.tar.gz")
0077       << "/home/test" << "complicated.tar.gz" << ""
0078       << eSplitMode_CustomDot << 0 << false;
0079     QTest::newRow("complicated/CustomDot/1")
0080       << QUrl("file:///home/test/complicated.tar.gz")
0081       << "/home/test" << "complicated" << "tar.gz"
0082       << eSplitMode_CustomDot << 1 << false;
0083     QTest::newRow("complicated/CustomDot/2")
0084       << QUrl("file:///home/test/complicated.tar.gz")
0085       << "/home/test" << "complicated.tar" << "gz"
0086       << eSplitMode_CustomDot << 2 << false;
0087     QTest::newRow("complicated/CustomDot/3")
0088       << QUrl("file:///home/test/complicated.tar.gz")
0089       << "/home/test" << "complicated.tar.gz" << ""
0090       << eSplitMode_CustomDot << 3 << false;
0091 
0092     // test a directory with dot
0093     QTest::newRow("dot-dir/FirstDot")
0094       << QUrl("file:///home/dir.with.dot/simple.txt")
0095       << "/home/dir.with.dot" << "simple" << "txt"
0096       << eSplitMode_FirstDot << 0 << false;
0097     QTest::newRow("dot-dir/LastDot")
0098       << QUrl("file:///home/dir.with.dot/simple.txt")
0099       << "/home/dir.with.dot" << "simple" << "txt"
0100       << eSplitMode_LastDot << 0 << false;
0101     QTest::newRow("dot-dir/CustomDot/0")
0102       << QUrl("file:///home/dir.with.dot/simple.txt")
0103       << "/home/dir.with.dot" << "simple.txt" << ""
0104       << eSplitMode_CustomDot << 0 << false;
0105     QTest::newRow("dot-dir/CustomDot/1")
0106       << QUrl("file:///home/dir.with.dot/simple.txt")
0107       << "/home/dir.with.dot" << "simple" << "txt"
0108       << eSplitMode_CustomDot << 1 << false;
0109 
0110     // test a directory which ends with a slash
0111     QTest::newRow("dir-ends-slash/FirstDot")
0112       << QUrl("file:///home/test/") << "/home"
0113       << "test" << "" << eSplitMode_FirstDot << 0 << true;
0114     QTest::newRow("dir-ends-slash/LastDot")
0115       << QUrl("file:///home/test/") << "/home"
0116       << "test" << "" << eSplitMode_LastDot << 0 << true;
0117     QTest::newRow("dir-ends-slash/CustomDot/0")
0118       << QUrl("file:///home/test/") << "/home"
0119       << "test" << "" << eSplitMode_CustomDot << 0 << true;
0120     QTest::newRow("dir-ends-slash/CustomDot/1")
0121       << QUrl("file:///home/test/") << "/home"
0122       << "test" << "" << eSplitMode_CustomDot << 1 << true;
0123 
0124     // test a directory which doesn't end with a slash
0125     QTest::newRow("dir-not-ends-slash/FirstDot")
0126       << QUrl("file:///home/test") << "/home"
0127       << "test" << "" << eSplitMode_FirstDot << 0 << true;
0128     QTest::newRow("dir-not-ends-slash/LastDot")
0129       << QUrl("file:///home/test") << "/home"
0130       << "test" << "" << eSplitMode_LastDot << 0 << true;
0131     QTest::newRow("dir-not-ends-slash/CustomDot/0")
0132       << QUrl("file:///home/test") << "/home"
0133       << "test" << "" << eSplitMode_CustomDot << 0 << true;
0134     QTest::newRow("dir-not-ends-slash/CustomDot/1")
0135       << QUrl("file:///home/test") << "/home"
0136       << "test" << "" << eSplitMode_CustomDot << 1 << true;
0137 
0138     // test no file extension
0139     QTest::newRow("no-extension/FirstDot")
0140       << QUrl("file:///home/test/simple") << "/home/test"
0141       << "simple" << "" << eSplitMode_FirstDot << 0 << false;
0142     QTest::newRow("no-extension/LastDot")
0143       << QUrl("file:///home/test/simple") << "/home/test"
0144       << "simple" << "" << eSplitMode_LastDot << 0 << false;
0145     QTest::newRow("no-extension/CustomDot/0")
0146       << QUrl("file:///home/test/simple") << "/home/test"
0147       << "simple" << "" << eSplitMode_CustomDot << 0 << false;
0148     QTest::newRow("no-extension/CustomDot/1")
0149       << QUrl("file:///home/test/simple") << "/home/test"
0150       << "simple" << "" << eSplitMode_CustomDot << 1 << false;
0151 
0152     // test very long complex file extension
0153     QTest::newRow("complex-extension/FirstDot")
0154       << QUrl("file:///home/test/simple.txt.long.ext.zip")
0155       << "/home/test" << "simple" << "txt.long.ext.zip"
0156       << eSplitMode_FirstDot << 0 << false;
0157     QTest::newRow("complex-extension/LastDot")
0158       << QUrl("file:///home/test/simple.txt.long.ext.zip")
0159       << "/home/test" << "simple.txt.long.ext" << "zip"
0160       << eSplitMode_LastDot << 0 << false;
0161     QTest::newRow("complex-extension/CustomDot/0")
0162       << QUrl("file:///home/test/simple.txt.long.ext.zip")
0163       << "/home/test" << "simple.txt.long.ext.zip" << ""
0164       << eSplitMode_CustomDot << 0 << false;
0165     QTest::newRow("complex-extension/CustomDot/1")
0166       << QUrl("file:///home/test/simple.txt.long.ext.zip")
0167       << "/home/test" << "simple" << "txt.long.ext.zip"
0168       << eSplitMode_CustomDot << 1 << false;
0169     QTest::newRow("complex-extension/CustomDot/2")
0170       << QUrl("file:///home/test/simple.txt.long.ext.zip")
0171       << "/home/test" << "simple.txt" << "long.ext.zip"
0172       << eSplitMode_CustomDot << 2 << false;
0173     QTest::newRow("complex-extension/CustomDot/3")
0174       << QUrl("file:///home/test/simple.txt.long.ext.zip")
0175       << "/home/test" << "simple.txt.long" << "ext.zip"
0176       << eSplitMode_CustomDot << 3 << false;
0177     QTest::newRow("complex-extension/CustomDot/4")
0178       << QUrl("file:///home/test/simple.txt.long.ext.zip")
0179       << "/home/test" << "simple.txt.long.ext" << "zip"
0180       << eSplitMode_CustomDot << 4 << false;
0181     QTest::newRow("complex-extension/CustomDot/5")
0182       << QUrl("file:///home/test/simple.txt.long.ext.zip")
0183       << "/home/test" << "simple.txt.long.ext.zip" << ""
0184       << eSplitMode_CustomDot << 5 << false;
0185 }
0186 
0187 void KRenameFileTest::testKRenameFile()
0188 {
0189     QFETCH(QUrl, url);
0190     QFETCH(QString, directory);
0191     QFETCH(QString, filename);
0192     QFETCH(QString, extension);
0193     QFETCH(ESplitMode, eSplitMode);
0194     QFETCH(int, dot);
0195     QFETCH(bool, isDir);
0196 
0197     // if the expected filename and extension is empty expect a directory
0198     //bool        isDirectory = filename.isEmpty() && extension.isEmpty();
0199     KRenameFile file(url, isDir, eSplitMode, dot);
0200 
0201     QCOMPARE(file.srcDirectory(), directory);
0202     QCOMPARE(file.srcFilename(), filename);
0203     QCOMPARE(file.srcExtension(), extension);
0204 }
0205 
0206 #include "moc_krenamefiletest.cpp"