File indexing completed on 2024-04-21 05:51:41
0001 // SPDX-License-Identifier: GPL-2.0-or-later 0002 // SPDX-FileCopyrightText: 2007 Dominik Seichter <domseichter@web.de> 0003 0004 #include "tokentest.h" 0005 0006 #include "batchrenamer.h" 0007 #include "krenamefile.h" 0008 0009 #include <QtTest> 0010 0011 QTEST_MAIN(TokenTest) 0012 Q_DECLARE_METATYPE(QLatin1String) 0013 0014 void TokenTest::initTestCase() 0015 { 0016 qRegisterMetaType<QLatin1String>(); 0017 } 0018 0019 void TokenTest::testTokens_data() 0020 { 0021 QTest::addColumn<QLatin1String>("token"); 0022 QTest::addColumn<QString>("filename"); 0023 QTest::addColumn<QString>("expected"); 0024 0025 // Testing the basic KRename tokens 0026 QString filename(" Test File name "); 0027 QString directory1("krename"); 0028 QString directory2("home"); 0029 0030 QTest::newRow("$ Test") 0031 << QLatin1String("$") << filename << filename; 0032 QTest::newRow("& Test") 0033 << QLatin1String("&") << filename << filename.toUpper(); 0034 QTest::newRow("% Test") 0035 << QLatin1String("%") << filename << filename.toLower(); 0036 QTest::newRow("* Test") 0037 << QLatin1String("*") << filename << " Test File Name "; 0038 QTest::newRow("# Test") 0039 << QLatin1String("#") << filename << QString::number(0); 0040 QTest::newRow("## Test") 0041 << QLatin1String("##") << filename << QString::number(0).asprintf("%02i", 0); 0042 QTest::newRow("### Test") 0043 << QLatin1String("###") << filename << QString().asprintf("%03i", 0); 0044 QTest::newRow("#### Test") 0045 << QLatin1String("####") << filename << QString().asprintf("%04i", 0); 0046 QTest::newRow("##### Test") 0047 << QLatin1String("#####") << filename << QString().asprintf("%05i", 0); 0048 QTest::newRow("#{100;2} Test") 0049 << QLatin1String("#{100;2}") << filename << QString::number(100); 0050 QTest::newRow("####{100;2} Test") 0051 << QLatin1String("####{100;2}") << filename 0052 << QString().asprintf("%04i", 100); 0053 QTest::newRow("####{2;2}## Test") 0054 << QLatin1String("####{2;2}##") << filename 0055 << QString().asprintf("%04i", 2) + QString().asprintf("%02i", 0); 0056 0057 QTest::newRow("[1] Test") 0058 << QLatin1String("[1]") << filename << QString(filename[0]); 0059 QTest::newRow("[2] Test") 0060 << QLatin1String("[2]") << filename << QString(filename[1]); 0061 QTest::newRow("[3] Test") 0062 << QLatin1String("[3]") << filename << QString(filename[2]); 0063 QTest::newRow("[&4] Test") 0064 << QLatin1String("[&4]") << filename << QString(filename[3].toUpper()); 0065 QTest::newRow("[$4] Test") 0066 << QLatin1String("[$4]") << filename << QString(filename[3]); 0067 QTest::newRow("[%4] Test") 0068 << QLatin1String("[%4]") << filename << QString(filename[3].toLower()); 0069 QTest::newRow("[*4] Test") 0070 << QLatin1String("[*4]") << filename << QString(filename[3].toUpper()); 0071 QTest::newRow("[4-] Test") 0072 << QLatin1String("[4-]") << filename 0073 << filename.right(filename.length() - 3); 0074 QTest::newRow("[&4-] Test") 0075 << QLatin1String("[&4-]") << filename 0076 << filename.right(filename.length() - 3).toUpper(); 0077 QTest::newRow("[$4-] Test") 0078 << QLatin1String("[$4-]") << filename 0079 << filename.right(filename.length() - 3); 0080 QTest::newRow("[%4-] Test") 0081 << QLatin1String("[%4-]") << filename 0082 << filename.right(filename.length() - 3).toLower(); 0083 QTest::newRow("[*4-] Test") 0084 << QLatin1String("[*4-]") << filename 0085 << "St File Name "; 0086 QTest::newRow("[4-] Test") 0087 << QLatin1String("[4-]") << filename 0088 << filename.right(filename.length() - 3); 0089 QTest::newRow("[&4-[length]] Test") 0090 << QLatin1String("[&4-[length]]") << filename 0091 << filename.right(filename.length() - 3).toUpper(); 0092 QTest::newRow("[$4-[length]] Test") 0093 << QLatin1String("[$4-[length]]") << filename 0094 << filename.right(filename.length() - 3); 0095 QTest::newRow("[%4-[length]] Test") 0096 << QLatin1String("[%4-[length]]") << filename 0097 << filename.right(filename.length() - 3).toLower(); 0098 QTest::newRow("[*4-[length]] Test") 0099 << QLatin1String("[*4-[length]]") << filename << "St File Name "; 0100 QTest::newRow("[trimmed;[4-]] Test") 0101 << QLatin1String("[trimmed;[4-]]") << filename 0102 << filename.right(filename.length() - 3).trimmed(); 0103 QTest::newRow("[trimmed] Test") 0104 << QLatin1String("[trimmed]") << filename << filename.trimmed(); 0105 QTest::newRow("[length] Test") 0106 << QLatin1String("[length]") 0107 << filename << QString::number(filename.length()); 0108 QTest::newRow("[length-0] Test") 0109 << QLatin1String("[length-0]") 0110 << filename << QString::number(filename.length()); 0111 QTest::newRow("[length-1] Test") 0112 << QLatin1String("[length-1]") << filename 0113 << QString::number(filename.length() - 1); 0114 QTest::newRow("[length-2] Test") 0115 << QLatin1String("[length-2]") << filename 0116 << QString::number(filename.length() - 2); 0117 QTest::newRow("[#length] Test") 0118 << QLatin1String("[#length]") << filename 0119 << QString::number(filename.length()); 0120 QTest::newRow("[#length-0] Test") 0121 << QLatin1String("[#length-0]") << filename 0122 << QString::number(filename.length()); 0123 QTest::newRow("[#length-1] Test") 0124 << QLatin1String("[#length-1]") << filename 0125 << QString::number(filename.length() - 1); 0126 QTest::newRow("[#length-2] Test") 0127 << QLatin1String("[#length-2]") << filename 0128 << QString::number(filename.length() - 2); 0129 QTest::newRow("[####length] Test") 0130 << QLatin1String("[####length]") 0131 << filename << QString().asprintf("%04i", filename.length()); 0132 QTest::newRow("[####length-0] Test") 0133 << QLatin1String("[####length-0]") << filename 0134 << QString().asprintf("%04i", filename.length()); 0135 QTest::newRow("[####length-1] Test") 0136 << QLatin1String("[####length-1]") << filename 0137 << QString().asprintf("%04i", filename.length() - 1); 0138 QTest::newRow("[####length-2] Test") 0139 << QLatin1String("[####length-2]") << filename 0140 << QString().asprintf("%04i", filename.length() - 2); 0141 QTest::newRow("[6-9] Test") 0142 << QLatin1String("[6-9]") << filename << filename.mid(5, 4); 0143 QTest::newRow("[&6-9] Test") 0144 << QLatin1String("[&6-9]") << filename << filename.mid(5, 4).toUpper(); 0145 QTest::newRow("[$6-9] Test") 0146 << QLatin1String("[$6-9]") << filename << filename.mid(5, 4); 0147 QTest::newRow("[%6-9] Test") 0148 << QLatin1String("[%6-9]") << filename << filename.mid(5, 4).toLower(); 0149 QTest::newRow("[*6-9] Test") 0150 << QLatin1String("[*6-9]") << filename << filename.mid(5, 4); 0151 QTest::newRow("[trimmed;[6-9]] Test") 0152 << QLatin1String("[trimmed;[6-9]]") << filename 0153 << filename.mid(5, 4).trimmed(); 0154 QTest::newRow("[6;4] Test") 0155 << QLatin1String("[6;4]") << filename << filename.mid(5, 4); 0156 QTest::newRow("[&6;4] Test") 0157 << QLatin1String("[&6;4]") << filename << filename.mid(5, 4).toUpper(); 0158 QTest::newRow("[$6;4] Test") 0159 << QLatin1String("[$6;4]") << filename << filename.mid(5, 4); 0160 QTest::newRow("[%6;4] Test") 0161 << QLatin1String("[%6;4]") << filename << filename.mid(5, 4).toLower(); 0162 QTest::newRow("[*6;4] Test") 0163 << QLatin1String("[*6;4]") << filename << filename.mid(5, 4); 0164 QTest::newRow("[1;1{[length]}] Test") 0165 << QLatin1String("[1;1{[length]}]") << filename << "1"; 0166 QTest::newRow("[trimmed;[6;4]] Test") 0167 << QLatin1String("[trimmed;[6;4]]") << filename 0168 << filename.mid(5, 4).trimmed(); 0169 QTest::newRow("[trimmed; Hallo ] Test") 0170 << QLatin1String("[trimmed; Hallo ]") << filename << "Hallo"; 0171 QTest::newRow("[dirname] Test") 0172 << QLatin1String("[dirname]") << filename << directory1; 0173 QTest::newRow("[&dirname] Test") 0174 << QLatin1String("[&dirname]") << filename << directory1.toUpper(); 0175 QTest::newRow("[$dirname] Test") 0176 << QLatin1String("[$dirname]") << filename << directory1; 0177 QTest::newRow("[%dirname] Test") 0178 << QLatin1String("[%dirname]") << filename << directory1.toLower(); 0179 // Don't change the capitalisation below just to match the app name style, 0180 // it'll break the test 0181 QTest::newRow("[*dirname] Test") 0182 << QLatin1String("[*dirname]") << filename << "Krename"; 0183 QTest::newRow("[trimmed;[dirname]] Test") 0184 << QLatin1String("[trimmed;[dirname]]") << filename << directory1; 0185 QTest::newRow("[dirname.] Test") 0186 << QLatin1String("[dirname.]") << filename << directory2; 0187 QTest::newRow("[&dirname.] Test") 0188 << QLatin1String("[&dirname.]") << filename << directory2.toUpper(); 0189 QTest::newRow("[$dirname.] Test") 0190 << QLatin1String("[$dirname.]") << filename << directory2; 0191 QTest::newRow("[%dirname.] Test") 0192 << QLatin1String("[%dirname.]") << filename << directory2.toLower(); 0193 QTest::newRow("[*dirname.] Test") 0194 << QLatin1String("[*dirname.]") << filename << "Home"; 0195 QTest::newRow("[trimmed;[dirname.]] Test") 0196 << QLatin1String("[trimmed;[dirname.]]") << filename << directory2; 0197 QTest::newRow("[dirname..] Test") 0198 << QLatin1String("[dirname..]") << filename << ""; 0199 QTest::newRow("[&dirname..] Test") 0200 << QLatin1String("[&dirname..]") << filename << ""; 0201 QTest::newRow("[$dirname..] Test") 0202 << QLatin1String("[$dirname..]") << filename << ""; 0203 QTest::newRow("[%dirname..] Test") 0204 << QLatin1String("[%dirname..]") << filename << ""; 0205 QTest::newRow("[*dirname..] Test") 0206 << QLatin1String("[*dirname..]") << filename << ""; 0207 // TODO: This test has strange effects that only occur if [dirname..] is an empty QString 0208 //QTest::newRow("[trimmed;[dirname..]] Test") 0209 // << QLatin1String("[trimmed;[dirname..]]") << filename << filename.trimmed(); 0210 QTest::newRow("Complex Test1") 0211 << QLatin1String("&[2-5]") << filename << filename.toUpper() + "Test"; 0212 QTest::newRow("Complex Test2") 0213 << QLatin1String("%[2-5]") << filename << filename.toLower() + "Test"; 0214 QTest::newRow("Complex Test3") 0215 << QLatin1String("$[2-5]") << filename << filename + "Test"; 0216 QTest::newRow("Complex Test4") 0217 << QLatin1String("*[2-5]") << filename << " Test File Name Test"; 0218 QTest::newRow("Complex Test5") 0219 << QLatin1String("[trimmed][2-5]") << filename 0220 << filename.trimmed() + "Test"; 0221 QTest::newRow("Complex Test6") 0222 << QLatin1String("[&2-5]\\&[length-2]\\&[1;1{Hallo}]") << filename 0223 << "TEST&14&H"; 0224 0225 // Testing all special characters in KRename 0226 QTest::newRow("\\/ Test") << QLatin1String("\\/") << filename << "%2f"; // this is displayed as a slash, 0227 // unix filenames are not allowed 0228 // to contain a slash 0229 QTest::newRow("\\[ Test") << QLatin1String("\\[") << filename << "["; 0230 QTest::newRow("\\] Test") << QLatin1String("\\]") << filename << "]"; 0231 QTest::newRow("\\$ Test") << QLatin1String("\\$") << filename << "$"; 0232 QTest::newRow("\\* Test") << QLatin1String("\\*") << filename << "*"; 0233 QTest::newRow("\\\\ Test") << QLatin1String("\\\\") << filename << "\\"; 0234 QTest::newRow("\\& Test") << QLatin1String("\\&") << filename << "&"; 0235 QTest::newRow("\\% Test") << QLatin1String("\\%") << filename << "%"; 0236 QTest::newRow("\\# Test") << QLatin1String("\\#") << filename << "#"; 0237 0238 // Testing filenames with special characters 0239 QString specialname("Test %1 File"); 0240 QTest::newRow("File [ Test") << QLatin1String("$") << specialname.arg("[") << specialname.arg("["); 0241 QTest::newRow("File ] Test") << QLatin1String("$") << specialname.arg("]") << specialname.arg("]"); 0242 QTest::newRow("File $ Test") << QLatin1String("$") << specialname.arg("$") << specialname.arg("$"); 0243 QTest::newRow("File * Test") << QLatin1String("$") << specialname.arg("*") << specialname.arg("*"); 0244 QTest::newRow("File \\ Test") << QLatin1String("$") << specialname.arg("\\") << specialname.arg("\\"); 0245 QTest::newRow("File & Test") << QLatin1String("$") << specialname.arg("&") << specialname.arg("&"); 0246 QTest::newRow("File % Test") << QLatin1String("$") << specialname.arg("%") << specialname.arg("%"); 0247 // TODO: figure out why this fails, it works if I create the file manually and rename it via the GUI 0248 //QTest::newRow("File # Test") << QLatin1String("$") << specialname.arg("#") << specialname.arg("#"); 0249 0250 // Testing system functions 0251 QTest::newRow("Date Test") 0252 << QLatin1String("[date]") << filename 0253 << QDateTime::currentDateTime().toString("dd-MM-yyyy"); 0254 QTest::newRow("dd-MM-yyyy Date Test") 0255 << QLatin1String("[date;dd-MM-yyyy]") << filename 0256 << QDateTime::currentDateTime().toString("dd-MM-yyyy"); 0257 QTest::newRow("dd:MM:yyyy Date Test") 0258 << QLatin1String("[date;dd:MM:yyyy]") << filename 0259 << QDateTime::currentDateTime().toString("dd:MM:yyyy"); 0260 QTest::newRow("yy.mm.dd Date Test") 0261 << QLatin1String("[date;yy.mm.dd]") << filename 0262 << QDateTime::currentDateTime().toString("yy.mm.dd"); 0263 QTest::newRow("d Date Test") 0264 << QLatin1String("[date;d]") << filename 0265 << QDateTime::currentDateTime().toString("d"); 0266 QTest::newRow("dd Date Test") 0267 << QLatin1String("[date;dd]") << filename 0268 << QDateTime::currentDateTime().toString("dd"); 0269 QTest::newRow("ddd Date Test") 0270 << QLatin1String("[date;ddd]") << filename 0271 << QDateTime::currentDateTime().toString("ddd"); 0272 QTest::newRow("dddd Date Test") 0273 << QLatin1String("[date;dddd]") << filename 0274 << QDateTime::currentDateTime().toString("dddd"); 0275 QTest::newRow("M Date Test") 0276 << QLatin1String("[date;M]") << filename 0277 << QDateTime::currentDateTime().toString("M"); 0278 QTest::newRow("MM Date Test") 0279 << QLatin1String("[date;MM]") << filename 0280 << QDateTime::currentDateTime().toString("MM"); 0281 QTest::newRow("MMM Date Test") 0282 << QLatin1String("[date;MMM]") << filename 0283 << QDateTime::currentDateTime().toString("MMM"); 0284 QTest::newRow("MMMM Date Test") 0285 << QLatin1String("[date;MMMM]") << filename 0286 << QDateTime::currentDateTime().toString("MMMM"); 0287 QTest::newRow("yy Date Test") 0288 << QLatin1String("[date;yy]") << filename 0289 << QDateTime::currentDateTime().toString("yy"); 0290 QTest::newRow("yyyy Date Test") 0291 << QLatin1String("[date;yyyy]") << filename 0292 << QDateTime::currentDateTime().toString("yyyy"); 0293 0294 QTest::newRow("h Date Test") 0295 << QLatin1String("[date;h]") << filename 0296 << QDateTime::currentDateTime().toString("h"); 0297 QTest::newRow("hh Date Test") 0298 << QLatin1String("[date;hh]") << filename 0299 << QDateTime::currentDateTime().toString("hh"); 0300 QTest::newRow("m Date Test") 0301 << QLatin1String("[date;m]") << filename 0302 << QDateTime::currentDateTime().toString("m"); 0303 QTest::newRow("mm Date Test") 0304 << QLatin1String("[date;mm]") << filename 0305 << QDateTime::currentDateTime().toString("mm"); 0306 QTest::newRow("s Date Test") 0307 << QLatin1String("[date;s]") << filename 0308 << QDateTime::currentDateTime().toString("s"); 0309 QTest::newRow("ss Date Test") 0310 << QLatin1String("[date;ss]") << filename 0311 << QDateTime::currentDateTime().toString("ss"); 0312 // Current computers are to slow to compare two milliseconds as the instruction is longer than 0313 // a millisecond. 0314 //QTest::newRow("z Date Test") 0315 // << QLatin1String("[date;z]") << filename 0316 // << QDateTime::currentDateTime().toString( "z"); 0317 //QTest::newRow("zzz Date Test") 0318 // << QLatin1String("[date;zzz]") << filename 0319 // << QDateTime::currentDateTime().toString( "zzz"); 0320 QTest::newRow("ap Date Test") 0321 << QLatin1String("[date;ap]") << filename 0322 << QDateTime::currentDateTime().toString("ap"); 0323 QTest::newRow("AP Date Test") 0324 << QLatin1String("[date;AP]") << filename 0325 << QDateTime::currentDateTime().toString("AP"); 0326 QTest::newRow("Day Test") 0327 << QLatin1String("[day]") << filename 0328 << QDateTime::currentDateTime().toString("dd"); 0329 QTest::newRow("Month Test") 0330 << QLatin1String("[month]") << filename 0331 << QDateTime::currentDateTime().toString("MM"); 0332 QTest::newRow("Year Test") 0333 << QLatin1String("[year]") << filename 0334 << QDateTime::currentDateTime().toString("yyyy"); 0335 QTest::newRow("Hour Test") 0336 << QLatin1String("[hour]") << filename 0337 << QDateTime::currentDateTime().toString("hh"); 0338 QTest::newRow("Minute Test") 0339 << QLatin1String("[minute]") << filename 0340 << QDateTime::currentDateTime().toString("mm"); 0341 QTest::newRow("Second Test") 0342 << QLatin1String("[second]") << filename 0343 << QDateTime::currentDateTime().toString("ss"); 0344 QTest::newRow("Time Test") 0345 << QLatin1String("[time]") << filename 0346 << QDateTime::currentDateTime().toString("hh-mm-ss"); 0347 0348 // Regression tests 0349 // Caused an infinite loop 0350 QTest::newRow("[1-2 [4-] Test") 0351 << QLatin1String("[1-2 [4-]") << filename 0352 << ' ' + filename.right(filename.length() - 3); 0353 QTest::newRow("###{329;13") 0354 << QLatin1String("###{329;13") << filename << "329"; 0355 QTest::newRow("ABC {1") 0356 << QLatin1String("ABC {1") << filename << "ABC {1"; 0357 0358 // Brackets appeared as \[ in the final result 0359 QTest::newRow("1##-[$6-] Test") 0360 << QLatin1String("1##-[$6-]") << "1-07 Take Flight (Wings) [Pocketman]" 0361 << "100-Take Flight (Wings) [Pocketman]"; 0362 } 0363 0364 void TokenTest::testTokens() 0365 { 0366 QFETCH(QLatin1String, token); 0367 QFETCH(QString, filename); 0368 QFETCH(QString, expected); 0369 0370 QString directory("/home/krename/"); 0371 KRenameFile::List list; 0372 KRenameFile file(QUrl(directory + filename), filename.isEmpty(), eSplitMode_FirstDot, 1); 0373 0374 list.push_back(file); 0375 0376 BatchRenamer b; 0377 b.setFilenameTemplate(token); 0378 b.setFiles(&list); 0379 b.processFilenames(); 0380 0381 QCOMPARE(list[0].dstFilename(), expected); 0382 } 0383 0384 void TokenTest::testReplacing_data() 0385 { 0386 QTest::addColumn<QLatin1String>("token"); 0387 QTest::addColumn<QString>("filename"); 0388 QTest::addColumn<QString>("expected"); 0389 QTest::addColumn<QString>("replace"); 0390 QTest::addColumn<QString>("with"); 0391 QTest::addColumn<bool>("regularExpression"); 0392 0393 QTest::newRow("Replace: Spaces") 0394 << QLatin1String("$") << "Filename with spaces" 0395 << "Filename_with_spaces" << " " << "_" << false; 0396 QTest::newRow("Replace: Nothing") 0397 << QLatin1String("$") << "Filename" << "Filename" << " " << "_" 0398 << false; 0399 QTest::newRow("Replace: Word") 0400 << QLatin1String("$") << "Filename with spaces" 0401 << "Filename HAS spaces" << "with" << "HAS" << false; 0402 QTest::newRow("Replace: $") 0403 << QLatin1String("$") << "Filename with $ and spaces" 0404 << "Filename with ! and spaces" << "$" << "!" << false; 0405 QTest::newRow("Replace: &") 0406 << QLatin1String("$") << "Filename with & and spaces" 0407 << "Filename with ! and spaces" << "&" << "!" << false; 0408 QTest::newRow("Replace: %") 0409 << QLatin1String("$") << "Filename with % and spaces" 0410 << "Filename with ! and spaces" << "%" << "!" << false; 0411 QTest::newRow("Replace: *") 0412 << QLatin1String("$") << "Filename with * and spaces" 0413 << "Filename with ! and spaces" << "*" << "!" << false; 0414 QTest::newRow("Replace: [") 0415 << QLatin1String("$") << "Filename with [ and spaces" 0416 << "Filename with ! and spaces" << "[" << "!" << false; 0417 QTest::newRow("Replace: ]") 0418 << QLatin1String("$") << "Filename with ] and spaces" 0419 << "Filename with ! and spaces" << "]" << "!" << false; 0420 // TODO: figure out why this fails, it works if I create the file manually and rename it via the GUI 0421 //QTest::newRow("File # Test") << QLatin1String("$") << specialname.arg("#") << specialname.arg("#"); 0422 /*QTest::newRow("Replace: #") 0423 << QLatin1String("$") << QStringLiteral("Filename with # and spaces") 0424 << QStringLiteral("Filename with ! and spaces") << "#" << "!" << false;*/ 0425 QTest::newRow("Replace: to $") 0426 << QLatin1String("$") << "Filename with spaces" 0427 << "Filename $ spaces" << "with" << "$" << false; 0428 QTest::newRow("Replace: to &") 0429 << QLatin1String("$") << "Filename with spaces" 0430 << "Filename & spaces" << "with" << "&" << false; 0431 QTest::newRow("Replace: to %") 0432 << QLatin1String("$") << "Filename with spaces" 0433 << "Filename % spaces" << "with" << "%" << false; 0434 QTest::newRow("Replace: to *") 0435 << QLatin1String("$") << "Filename with spaces" 0436 << "Filename * spaces" << "with" << "*" << false; 0437 QTest::newRow("Replace: to [") 0438 << QLatin1String("$") << "Filename with spaces" 0439 << "Filename [ spaces" << "with" << "[" << false; 0440 QTest::newRow("Replace: to ]") 0441 << QLatin1String("$") << "Filename with spaces" 0442 << "Filename ] spaces" << "with" << "]" << false; 0443 QTest::newRow("Replace: to #") 0444 << QLatin1String("$") << "Filename with spaces" 0445 << "Filename # spaces" << "with" << "#" << false; 0446 0447 QTest::newRow("RegExp: ?") 0448 << QLatin1String("$") << "Filename" 0449 << "AAAAAAAAA" << "[a-zA-z]?" << "A" << true; 0450 QTest::newRow("RegExp: {1}") 0451 << QLatin1String("$") << "Filename" 0452 << "AAAAAAAA" << "[a-zA-z]{1}" << "A" << true; 0453 QTest::newRow("RegExp: +") 0454 << QLatin1String("$") << "Filename" 0455 << "A" << "[a-zA-z]+" << "A" << true; 0456 QTest::newRow("RegExp: \\d") 0457 << QLatin1String("$") << "Filename 123" 0458 << "Filename NumberNumberNumber" << "\\d" << "Number" << true; 0459 QTest::newRow("RegExp: \\d+") 0460 << QLatin1String("$") << "Filename 123" 0461 << "Filename Number" << "\\d+" << "Number" << true; 0462 QTest::newRow("RegExp: Match") 0463 << QLatin1String("$") << "Filename 123" 0464 << "MATCHING" << "[a-zA-z]* \\d{3}" << "MATCHING" << true; 0465 } 0466 0467 void TokenTest::testReplacing() 0468 { 0469 QFETCH(QLatin1String, token); 0470 QFETCH(QString, filename); 0471 QFETCH(QString, expected); 0472 QFETCH(QString, replace); 0473 QFETCH(QString, with); 0474 QFETCH(bool, regularExpression); 0475 0476 QString directory("/home/krename/"); 0477 KRenameFile::List list; 0478 KRenameFile file(QUrl(directory + filename), filename.isEmpty(), eSplitMode_FirstDot, 1); 0479 list.push_back(file); 0480 0481 QList<TReplaceItem> replaceList; 0482 0483 TReplaceItem strings; 0484 strings.find = replace; 0485 strings.replace = with; 0486 strings.reg = regularExpression; 0487 0488 replaceList.append(strings); 0489 0490 BatchRenamer b; 0491 b.setFilenameTemplate(token); 0492 b.setFiles(&list); 0493 b.setReplaceList(replaceList); 0494 b.processFilenames(); 0495 0496 QCOMPARE(list[0].dstFilename(), expected); 0497 } 0498 0499 #include "moc_tokentest.cpp"