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