1 /* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2009-06-09
7 * Description : a test for the AdvancedRename utility
8 *
9 * Copyright (C) 2009-2011 by Andi Clemens <andi dot clemens at gmail dot com>
10 *
11 * This program is free software; you can redistribute it
12 * and/or modify it under the terms of the GNU General
13 * Public License as published by the Free Software Foundation;
14 * either version 2, or (at your option)
15 * any later version.
16 *
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
21 *
22 * ============================================================ */
23
24 #include "renamecustomizer_utest.h"
25
26 // Qt includes
27
28 #include <QFileInfo>
29 #include <QTest>
30 #include <QUrl>
31
32 // Local includes
33
34 #include "advancedrenamemanager.h"
35 #include "defaultrenameparser.h"
36 #include "parsesettings.h"
37 #include "renamecustomizer.h"
38 #include "digikam_debug.h"
39
40 using namespace Digikam;
41
42 const QString imagesDir = QLatin1String("data/");
43
createFilePath(const QString & file)44 QString createFilePath(const QString& file)
45 {
46 return QString(QFINDTESTDATA(imagesDir) + file);
47 }
48
49 const QString fileName = QLatin1String("advancedrename_testimage.jpg");
50 const QString fileName2 = QLatin1String("advancedrename_testimage2.jpg");
51 const QString fileName3 = QLatin1String("001a.jpg");
52 const QString fileName4 = QLatin1String("test.png");
53 const QString fileName5 = QLatin1String("myfile.jpg");
54 const QString fileName6 = QLatin1String("my_file.jpg");
55 const QString fileName7 = QLatin1String("holiday_spain_2011_img001.jpg");
56 const QString fileName8 = QLatin1String("my images.jpg");
57 const QString fileName9 = QLatin1String("holiday_spain_2011_001img.jpg");
58
59 const QString filePath = createFilePath(fileName);
60 const QString filePath2 = createFilePath(fileName2);
61 const QString filePath3 = createFilePath(fileName3);
62 const QString filePath4 = createFilePath(fileName4);
63 const QString filePath5 = createFilePath(fileName5);
64 const QString filePath6 = createFilePath(fileName6);
65 const QString filePath7 = createFilePath(fileName7);
66 const QString filePath8 = createFilePath(fileName8);
67 const QString filePath9 = createFilePath(fileName9);
68
QTEST_MAIN(RenameCustomizerTest)69 QTEST_MAIN(RenameCustomizerTest)
70
71 void RenameCustomizerTest::newName_should_return_empty_string_with_empty_filename_data()
72 {
73 QTest::addColumn<QString>("filename");
74 QTest::addColumn<QString>("result");
75
76 QTest::newRow("empty") << QString::fromUtf8("") << QString::fromUtf8("");
77 QTest::newRow("whitespaces") << QString::fromUtf8(" ") << QString::fromUtf8("");
78 }
79
newName_should_return_empty_string_with_empty_filename()80 void RenameCustomizerTest::newName_should_return_empty_string_with_empty_filename()
81 {
82 QFETCH(QString, filename);
83 QFETCH(QString, result);
84
85 RenameCustomizer customizer(nullptr, QLatin1String("Unit Tests"));
86 QCOMPARE(customizer.newName(filename), result);
87 }
88
setCaseType_set_to_none()89 void RenameCustomizerTest::setCaseType_set_to_none()
90 {
91 RenameCustomizer customizer(nullptr, QLatin1String("Unit Tests"));
92 customizer.setChangeCase(RenameCustomizer::NONE);
93 QCOMPARE(customizer.changeCase(), RenameCustomizer::NONE);
94 }
95
setCaseType_set_to_upper()96 void RenameCustomizerTest::setCaseType_set_to_upper()
97 {
98 RenameCustomizer customizer(nullptr, QLatin1String("Unit Tests"));
99 customizer.setChangeCase(RenameCustomizer::UPPER);
100 QCOMPARE(customizer.changeCase(), RenameCustomizer::UPPER);
101 }
102
setCaseType_set_to_lower()103 void RenameCustomizerTest::setCaseType_set_to_lower()
104 {
105 RenameCustomizer customizer(nullptr, QLatin1String("Unit Tests"));
106 customizer.setChangeCase(RenameCustomizer::LOWER);
107 QCOMPARE(customizer.changeCase(), RenameCustomizer::LOWER);
108 }
109
setUseDefault_true()110 void RenameCustomizerTest::setUseDefault_true()
111 {
112 RenameCustomizer customizer(nullptr, QLatin1String("Unit Tests"));
113 customizer.setUseDefault(true);
114 QVERIFY(customizer.useDefault());
115 }
116
setUseDefault_false()117 void RenameCustomizerTest::setUseDefault_false()
118 {
119 RenameCustomizer customizer(nullptr, QLatin1String("Unit Tests"));
120 customizer.setUseDefault(false);
121 QVERIFY(customizer.useDefault() == false);
122 }
123
setUseDefault_case_none_should_deliver_original_filename()124 void RenameCustomizerTest::setUseDefault_case_none_should_deliver_original_filename()
125 {
126 RenameCustomizer customizer(nullptr, QLatin1String("Unit Tests"));
127 customizer.setUseDefault(true);
128 customizer.setChangeCase(RenameCustomizer::NONE);
129 QCOMPARE(customizer.newName(QLatin1String("TeSt.png")), QLatin1String("TeSt.png"));
130 }
131
setUseDefault_case_upper_should_deliver_uppercase_filename()132 void RenameCustomizerTest::setUseDefault_case_upper_should_deliver_uppercase_filename()
133 {
134 RenameCustomizer customizer(nullptr, QLatin1String("Unit Tests"));
135 customizer.setUseDefault(true);
136 customizer.setChangeCase(RenameCustomizer::UPPER);
137 QCOMPARE(customizer.newName(QLatin1String("TeSt.png")), QLatin1String("TEST.PNG"));
138 }
139
setUseDefault_case_lower_should_deliver_lowercase_filename()140 void RenameCustomizerTest::setUseDefault_case_lower_should_deliver_lowercase_filename()
141 {
142 RenameCustomizer customizer(nullptr, QLatin1String("Unit Tests"));
143 customizer.setUseDefault(true);
144 customizer.setChangeCase(RenameCustomizer::LOWER);
145 QCOMPARE(customizer.newName(QLatin1String("TeSt.pnG")), QLatin1String("test.png"));
146 }
147