source: branches/release-0.3.0-rc1/src/MediaDBLib/tests/minvalidatortests.cpp @ 232

Last change on this file since 232 was 232, checked in by Joachim Langenbach, 11 years ago
  • MINValidatorTests
    • Fixed a failing test, if MINValidator does not find any plugins
File size: 13.8 KB
Line 
1/*
2    MediaDB - A media management software
3    Copyright (C) 2010  Joachim Langenbach
4
5    This program is free software: you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation, either version 3 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
18*/
19
20#include "minvalidatortests.h"
21
22#include "minvalidator.h"
23
24#include <QtTest/QtTest>
25
26MINValidatorTests::MINValidatorTests(QObject* parent): QObject(parent)
27{
28        validator = new MINValidator();
29}
30
31MINValidatorTests::~MINValidatorTests()
32{
33        delete validator;
34}
35
36void MINValidatorTests::type_data()
37{
38        QTest::addColumn<QString>("min");
39        QTest::addColumn<QString>("inputType");
40        QTest::addColumn<QString>("result");
41       
42        QTest::newRow("855937325x") << "855937325x" << "ISBN-10" << "ISBN-10";
43        QTest::newRow("855937325X") << "855937325X" << "ISBN-10" << "ISBN-10";
44        QTest::newRow("3-77k3-7325-9") << "3-77k3-7325-9" << "ISBN-10" << "";
45        QTest::newRow("3-7723-7325-8") << "3-7723-7325-8" << "ISBN-10" << "";
46        QTest::newRow("3-7723-7325-9") << "3-7723-7325-9" << "ISBN-10" << "ISBN-10";
47        QTest::newRow("3-77kk23-7325-9") << "3-77kk23-7325-9" << "ISBN-10" << "";
48        QTest::newRow("3-7723-73-9") << "3-7723-73-9" << "ISBN-10" << "";
49       
50        QTest::newRow("5 449000 09624-1") << "5 449000 09624-1" << "EAN" << "EAN";
51        QTest::newRow("5 449000 09623-1") << "5 449000 09623-1" << "EAN" << "";
52        QTest::newRow("5 449000 k9624-1") << "5 449000 k9624-1" << "EAN" << "";
53       
54        // instore EAN-13
55        QTest::newRow("2404105 001722") << "2404105 001722" << "EAN" << "EAN";
56        // in store EAN-8 (Aldi Schovit ;-) )
57        QTest::newRow("29033805") << "29033805" << "EAN" << "EAN";
58        QTest::newRow("29023805") << "29023805" << "EAN" << "";
59        QTest::newRow("2?./0dÄa") << "2?./0dÄa" << "EAN" << "";
60       
61        QTest::newRow("5 449000 09624-123") << "5 449000 09624-123" << "EAN" << "";
62        QTest::newRow("123456") << "123456" << "EAN" << "";
63}
64
65void MINValidatorTests::type()
66{
67        QFETCH(QString, min);
68        QFETCH(QString, inputType);
69        QFETCH(QString, result);
70       
71        // if type is not supported, "" should be the result
72        if((!inputType.isEmpty()) && (!validator->isSupported(inputType))){
73                QCOMPARE(validator->type(min), QString());
74        }
75        else{
76                QCOMPARE(validator->type(min), result);
77        }
78}
79
80void MINValidatorTests::possibleTypes_data()
81{
82        QTest::addColumn<QString>("min");
83        QTest::addColumn<QStringList>("result");
84       
85        QStringList isbnEan;
86        isbnEan << "ISBN-10" << "EAN";
87       
88        QTest::newRow("855937325x") << "855937325x" << isbnEan;
89        QTest::newRow("855937325X") << "855937325X" << isbnEan;
90        QTest::newRow("3-77k3-7325-9") << "3-77k3-7325-9" << isbnEan;
91        QTest::newRow("3-7723-7325-81") << "3-7723-7325-8" << isbnEan;
92        QTest::newRow("3-7723-7325-9") << "3-7723-7325-9" << isbnEan;
93        QTest::newRow("3-77kk23-7325-9") << "3-77kk23-7325-9" << isbnEan;
94        QTest::newRow("3-772223-7325-9") << "3-77kk23-7325-9" << QStringList("EAN");
95        QTest::newRow("3-7723-73-9") << "3-7723-73-9" << isbnEan;
96       
97        QTest::newRow("5 449000 09624-1") << "5 449000 09624-1" << QStringList("EAN");
98        QTest::newRow("5 449000 09623-1") << "5 449000 09623-1" << QStringList("EAN");
99        QTest::newRow("5 449000 k9624-1") << "5 449000 k9624-1" << QStringList("EAN");
100        QTest::newRow("5 449000 k9624-1123") << "5 449000 k9624-1123" << QStringList();
101}
102
103void MINValidatorTests::possibleTypes()
104{
105        QFETCH(QString, min);
106        QFETCH(QStringList, result);
107       
108        // if type is not supported, "" should be the result
109        QStringList results = validator->possibleTypes(min);
110        foreach(QString res, result){
111                if(validator->isSupported(res)){
112                        QVERIFY(results.contains(res));
113                }
114                else{
115                        QVERIFY(!results.contains(res));
116                }
117        }
118}
119
120void MINValidatorTests::isValid_data()
121{
122        QTest::addColumn<QString>("min");
123        QTest::addColumn<QString>("inputType");
124        QTest::addColumn<bool>("result");
125       
126        QTest::newRow("ölksAadasd-9") << "ölksAadasd-9" << "sdfsdf" << false;
127       
128        QTest::newRow("3-7723-7325-9") << "3-7723-7325-9" << "ISBN-10" << true;
129        QTest::newRow("3-7723-7325-8") << "3-7723-7325-8" << "ISBN-10" << false;
130        QTest::newRow("3-77k3-7325-9") << "3-77k3-7325-9" << "ISBN-10" << false;
131        QTest::newRow("855937325X") << "855937325X" << "ISBN-10" << true;
132        QTest::newRow("855937325x") << "855937325x" << "ISBN-10" << true;
133       
134        QTest::newRow("5 449000 09624-1") << "5 449000 09624-1" << "EAN" << true;
135        QTest::newRow("5 449000 09623-1") << "5 449000 09623-1"<< "EAN" << false;
136        QTest::newRow("5 449000 k9624-1") << "5 449000 k9624-1"<< "EAN" << false;
137        QTest::newRow("9788559373257") << "9788559373257" << "EAN" << true;
138       
139        // instore EAN-13
140        QTest::newRow("2404105 001722") << "2404105 001722" << "EAN" << true;
141        // in store EAN-8 (Aldi Schovit ;-) )
142        QTest::newRow("29033805") << "29033805" << "EAN" << true;
143        QTest::newRow("29023805") << "29023805" << "EAN" << false;
144        QTest::newRow("2?./0dÄa") << "2?./0dÄa" << "EAN" << false;
145       
146        QTest::newRow("5 449000 09624-123") << "5 449000 09624-123" << "EAN" << false;
147        QTest::newRow("123456") << "123456" << "EAN" << false;
148}
149
150void MINValidatorTests::isValid()
151{
152        QFETCH(QString, min);
153        QFETCH(QString, inputType);
154        QFETCH(bool, result);
155       
156        // if type is not supported, false should be the result
157        if((!inputType.isEmpty()) && (!validator->isSupported(inputType))){
158                QCOMPARE(validator->isValid(min), false);
159                QCOMPARE(validator->isValid(min, inputType), false);
160        }
161        else{
162                QCOMPARE(validator->isValid(min), result);
163                QCOMPARE(validator->isValid(min, inputType), result);
164        }
165}
166
167void MINValidatorTests::validate_data()
168{
169        QTest::addColumn<QString>("min");
170        QTest::addColumn<QString>("inputType");
171        QTest::addColumn<QString>("result");
172       
173        QTest::newRow("3-7723-7325-9 ISBN-10") << "3-7723-7325-9" << "ISBN-10" << "3772373259";
174        QTest::newRow("3-7723-7325-9 EAN") << "3-7723-7325-9" << "EAN" << QString();
175        QTest::newRow("3-7723-7325-9 na") << "3-7723-7325-9" << "" << QString();
176        QTest::newRow("3-7723-7325-9 ISBN-10") << "3-7723-7325-9" << "ISBN-10" << "3772373259";
177        QTest::newRow("3-7723-7325 ISBN-10") << "3-7723-7325" << "ISBN-10" << "3772373259";
178        QTest::newRow("377237325 ISBN-10") << "377237325" << "ISBN-10" << "3772373259";
179        QTest::newRow("3-7723-7325-8 ISBN-10") << "3-7723-7325-8" << "ISBN-10" << "3772373259";
180        QTest::newRow("3-77k3-7325-9 ISBN-10") << "3-77k3-7325-9" << "ISBN-10" << "3773732597";
181        QTest::newRow("3-77kk-7325-9 ISBN-10") << "3-77kk-7325-9" << "ISBN-10" << QString();
182        // this test should better not give a good result (because a malformed ISBN-10 is changed into a correct EAN-8)
183        QTest::newRow("3-77kk-7325-9 EAN") << "3-77kk-7325-9" << "EAN" << "37773254";
184        QTest::newRow("3-77kk-7325-9 na") << "3-77kk-7325-9" << "" << QString();
185        QTest::newRow("3-77k3-7325 ISBN-10") << "3-77k3-7325" << "ISBN-10" << QString();
186        QTest::newRow("3-5723-7325-9 ISBN-10") << "3-5773-7325-9" << "ISBN-10" << "3577373253";
187        QTest::newRow("3-5723-adbc-9 ISBN-10") << "3-5773-adbc-9" << "ISBN-10" << QString();
188        QTest::newRow("12313123123213123213 ISBN-10") << "12313123123213123213" << "ISBN-10" << QString();
189       
190        QTest::newRow("5 449000 09624 EAN") << "5 449000 09624" << "EAN" << "5449000096241";
191        QTest::newRow("5 449000 09624 ISBN-10") << "5 449000 09624" << "ISBN-10" << QString();
192        QTest::newRow("5 449000 09624 na") << "5 449000 09624" << "" << QString();
193        QTest::newRow("5 449000 09624-1 EAN") << "5 449000 09624-1" << "EAN" << "5449000096241";
194        QTest::newRow("5 449000 09624-1 ISBN-10") << "5 449000 09624-1" << "ISBN-10" << QString();
195        QTest::newRow("5 449000 09624-1 na") << "5 449000 09624-1" << "" << "";
196        QTest::newRow("5449000096241 EAN") << "5449000096241" << "EAN" << "5449000096241";
197        QTest::newRow("5 449000 09623-1 EAN") << "5 449000 09623-1" << "EAN" << "5449000096234";
198        QTest::newRow("5 449000 k9624-1 EAN") << "5 449000 k9624-1" << "EAN" << "5449000962416";
199        QTest::newRow("5 449000 kk624-1 EAN") << "5 449000 kk624-1" << "EAN" << QString();
200        QTest::newRow("5 4900 k624 EAN") << "5 44900 k624" << "EAN" << QString();
201        // this test should better not give a good result (because a malformed EAN-13 is changed into a correct ISBN-10)
202        QTest::newRow("5 4900 k624 ISBN-10") << "5 44900 k624" << "ISBN-10" << "5449006241";
203        QTest::newRow("5 4900 k624 na") << "5 44900 k624" << "" << QString();
204        QTest::newRow("5 449 EAN") << "5 449" << "EAN" << QString();
205        QTest::newRow("5 449123123123123123 EAN") << "5 449123123123123123" << "EAN" << QString();
206       
207        QTest::newRow("29033805 EAN") << "29033805" << "EAN" << "29033805";
208        QTest::newRow("29033805 ISBN-10") << "29033805" << "ISBN-10" << "";
209        QTest::newRow("29033805 na") << "29033805" << "" << "";
210        QTest::newRow("2903380 EAN") << "2903380" << "EAN" << "29033805";
211        QTest::newRow("2903X805 EAN") << "2903X805" << "EAN" << "29038059";
212        QTest::newRow("2903XX05 EAN") << "2903XX05" << "EAN" << QString();
213        QTest::newRow("29033805 IBSN-10") << "2903XX05" << "ISBN-10" << QString();
214        QTest::newRow("29033805 na") << "2903XX05" << "" << QString();
215}
216
217void MINValidatorTests::validate()
218{
219        QFETCH(QString, min);
220        QFETCH(QString, inputType);
221        QFETCH(QString, result);
222       
223        // if output is not supported, "" should be the result
224        if((!inputType.isEmpty()) && (!validator->isSupported(inputType))){
225                QCOMPARE(validator->validate(min, inputType), QString());
226        }
227        else{
228                QCOMPARE(validator->validate(min, inputType), result);
229        }
230}
231
232void MINValidatorTests::convert_data()
233{
234        QTest::addColumn<QString>("min");
235        QTest::addColumn<QString>("inputType");
236        QTest::addColumn<QString>("outputType");
237        QTest::addColumn<QString>("result");
238       
239        QTest::newRow("lkskjw12 na EAN") << "lkskjw12" << "" << "EAN" << QString();
240        QTest::newRow("lkskjw12 ISBN-10 EAN") << "lkskjw12" << "ISBN-10" << "EAN" << QString();
241        QTest::newRow("lkskjw12 EAN EAN") << "lkskjw12" << "EAN" << "EAN" << QString();
242        QTest::newRow("lkskjw12 na ISBN-10") << "lkskjw12" << "" << "ISBN-10" << QString();
243        QTest::newRow("lkskjw12 EAN ISBN-10") << "lkskjw12" << "EAN" << "ISBN-10" << QString();
244        QTest::newRow("lkskjw12 ISBN-10 ISBN-10") << "lkskjw12" << "ISBN-10" << "ISBN-10" << QString();
245       
246        QTest::newRow("3-7723-7325-9 na na") << "3-7723-7325-9" << "" << "" << QString();
247        QTest::newRow("3-7723-7325-9 ean ean") << "3-7723-7325-9" << "EAN" << "EAN" << QString();
248        QTest::newRow("3-7723-7325-9 ISBN-10 na") << "3-7723-7325-9" << "ISBN-10" << "" << QString();
249        QTest::newRow("3-7723-7325-9 na EAN") << "3-7723-7325-9" << "" << "EAN" << "9783772373251";
250        QTest::newRow("5 449000 09624-1 ISBN-10 EAN") << "5 449000 09624-1" << "ISBN-10" << "EAN" << QString();
251        QTest::newRow("5 449000 09624-1 na na") << "5 449000 09624-1" << "" << "" << QString();
252       
253        QTest::newRow("3-7723-7325-9 ISBN-10 EAN") << "3-7723-7325-9" << "ISBN-10" << "EAN" << "9783772373251";
254        QTest::newRow("3-7723-73-9 ISBN-10 EAN") << "3-7723-73-9" << "ISBN-10" << "EAN" << QString();
255        QTest::newRow("3-7723-73123-9 ISBN-10 EAN") << "3-7723-73123-9" << "ISBN-10" << "EAN" << QString();
256        QTest::newRow("3-7723-7325-8 ISBN-10 EAN") << "3-7723-7325-8" << "ISBN-10" << "EAN" << QString();
257        QTest::newRow("3548609821 ISBN-10 EAN") << "3548609821" << "ISBN-10" << "EAN" << "9783548609829";
258        QTest::newRow("3442374928 ISBN-10 EAN") << "3442374928" << "ISBN-10" << "EAN" << "9783442374922";
259        QTest::newRow("855937325x ISBN-10 EAN") << "855937325x" << "ISBN-10" << "EAN" << "9788559373257";
260        QTest::newRow("855937325X ISBN-10 EAN") << "855937325X" << "ISBN-10" << "EAN" << "9788559373257";
261}
262
263void MINValidatorTests::convert()
264{
265        QFETCH(QString, min);
266        QFETCH(QString, inputType);
267        QFETCH(QString, outputType);
268        QFETCH(QString, result);
269       
270        // if output is not supported, "" should be the result
271        if(((!inputType.isEmpty()) && (!validator->isSupported(inputType))) || ((!outputType.isEmpty()) && (!validator->isSupported(outputType)))){
272                QCOMPARE(validator->convert(min, outputType, inputType), QString());
273        }
274        else{
275                QCOMPARE(validator->convert(min, outputType, inputType), result);
276        }
277}
278
279void MINValidatorTests::strip_data()
280{
281        QTest::addColumn<QString>("min");
282        QTest::addColumn<QString>("inputType");
283        QTest::addColumn<QString>("result");
284       
285        QTest::newRow("5 449000 09624-1 EAN") << "5 449000 09624-1" << "EAN" << "5449000096241";
286        QTest::newRow("5 449000 09623-1 EAN") << "5449000096231" << "EAN" << "5449000096231";
287        QTest::newRow("5 449000 k9624-1 EAN") << "544  900adb _?& 41" << "EAN" << "54490041";
288        QTest::newRow("9788559373257 EAN") << "9788559373257" << "EAN" << "9788559373257";
289        QTest::newRow("855937325X EAN") << "855937325X" << "EAN" << "855937325";
290        QTest::newRow("855937325x EAN") << "855937325x" << "EAN" << "855937325";
291        QTest::newRow("85  ak 593 7325x EAN") << "85  ak 593 7325x" << "EAN" << "855937325";
292       
293        QTest::newRow("5 449000 09624-1 ISBN-10") << "5 449000 09624-1" << "ISBN-10" << "5449000096241";
294        QTest::newRow("5 449000 09623-1 ISBN-10") << "5449000096231" << "ISBN-10" << "5449000096231";
295        QTest::newRow("5 449000 k9624-1 ISBN-10") << "544  900adb _?& 41" << "ISBN-10" << "54490041";
296        QTest::newRow("5 449000 k9624-1 na") << "544  900adb _?& 41" << "" << "";
297        QTest::newRow("9788559373257 ISBN-10") << "9788559373257" << "ISBN-10" << "9788559373257";
298        QTest::newRow("855937325X ISBN-10") << "855937325X" << "ISBN-10" << "855937325X";
299        QTest::newRow("855937325x ISBN-10") << "855937325x" << "ISBN-10" << "855937325x";
300        QTest::newRow("85  ak 593 7325x ISBN-10") << "85  ak 593 7325x" << "ISBN-10" << "855937325x";
301}
302
303void MINValidatorTests::strip()
304{
305        QFETCH(QString, min);
306        QFETCH(QString, inputType);
307        QFETCH(QString, result);
308       
309        // if output is not supported, "" should be the result
310        if((!inputType.isEmpty()) && (!validator->isSupported(inputType))){
311                QCOMPARE(validator->strip(min), QString());
312        }
313        else{
314                QCOMPARE(validator->strip(min, inputType), result);
315        }
316}
317
318QTEST_MAIN(MINValidatorTests)
319
320#include "minvalidatortests.moc"
Note: See TracBrowser for help on using the repository browser.