1 /*******************************************************************************
3 This file is part of mDictionary.
5 mDictionary 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.
10 mDictionary 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.
15 You should have received a copy of the GNU General Public License
16 along with mDictionary. If not, see <http://www.gnu.org/licenses/>.
18 Copyright 2010 Comarch S.A.
20 *******************************************************************************/
21 /*! /file tst_backbone.cpp
24 \author Bartosz Szatkowski <bulislaw@linux.com>
28 #include <QtCore/QString>
29 #include <QtTest/QtTest>
30 #include <QStringList>
33 #include "../../src/base/backbone/backbone.h"
34 #include "CommonDictInterfaceMock.h"
36 class BackboneTest : public QObject
40 QList<CommonDictInterface*> dict;
51 void addDictionaryTest();
52 void removeDictionaryTest();
53 void selectedDictionaryTest();
54 void stopSearchingTest();
56 void translationTest();
61 BackboneTest::BackboneTest()
64 for(int i = 0; i < total; i++)
65 dict.push_back(new CommonDictInterfaceMock());
66 QApplication app(0, 0);
71 void BackboneTest::init()
73 for(int i = 0; i < total; i++) {
74 dict[i] = new CommonDictInterfaceMock();
75 CommonDictInterfaceMock * cd = (CommonDictInterfaceMock*) dict[i];
76 cd->tov = QString("to%1").arg(i);
77 cd->fromv = QString("from%1").arg(i);
78 cd->namev = QString("name%1").arg(i);
79 cd->typev = QString("type%1").arg(i);
81 back = new Backbone("empty","empty", 1);
82 qDebug() << back->getDictionaries().size();
86 void BackboneTest::addDicts() {
87 for(int i = 0; i < total; i++) {
88 back->addInternalDictionary(dict[i],true);
94 void BackboneTest::cleanup()
102 void BackboneTest::addDictionaryTest()
104 QCOMPARE(back->getDictionaries().size(), total);
105 for(int i = 0; i < total; i++)
106 QCOMPARE(back->getDictionaries().keys().contains(dict[i]), QBool(true));
109 void BackboneTest::removeDictionaryTest() {
110 for(int i = 0; i < total-1; i++)
111 back->removeDictionary(dict[i]);
113 QVERIFY2(back->getDictionaries().contains(dict[total-1]) == 1,
114 "Deleted wrong dictionaries");
120 void BackboneTest::selectedDictionaryTest() {
121 QList<CommonDictInterface* > selected;
122 back->selectedDictionaries(selected);
123 foreach(bool d, back->getDictionaries().values())
126 selected << dict[0] << dict[4];
128 back->selectedDictionaries(selected);
129 foreach(CommonDictInterface* d, back->getDictionaries().keys())
130 if(selected.contains(d))
131 QCOMPARE(back->getDictionaries()[d], true);
133 QCOMPARE(back->getDictionaries()[d], false);
139 void BackboneTest::stopSearchingTest() {
140 for(int i = 0; i < total; i++) {
141 CommonDictInterfaceMock *m = (CommonDictInterfaceMock*) dict[i];
143 back->addDictionary(dict[i]);
146 for(int i = 0; i < total; i++) {
147 CommonDictInterfaceMock *m = (CommonDictInterfaceMock*)dict[i];
148 QCOMPARE(m->stopped, 0);
151 back->stopSearching();
153 for(int i = 0; i < total; i++) {
154 CommonDictInterfaceMock *m = (CommonDictInterfaceMock*)dict[i];
155 QCOMPARE(m->stopped, 1);
164 void BackboneTest::searchTest() {
165 for(int i = 0; i < total; i++) {
166 CommonDictInterfaceMock *m = (CommonDictInterfaceMock*) dict[i];
168 back->addDictionary(dict[i]);
171 for(int i = 0; i < total; i++) {
172 CommonDictInterfaceMock *m = (CommonDictInterfaceMock*)dict[i];
173 QCOMPARE(m->stopped, 1);
176 qDebug() << "main search " << this->thread()->currentThreadId();
177 QString list("pigwa");
178 back->_searchBookmarks = 0;
179 back->_searchDicts = 1;
182 qDebug() << back->activeDicts().size() << "!!!!!!!!!!!!!";
185 for(int i = 0; i < total; i++) {
186 CommonDictInterfaceMock *m = (CommonDictInterfaceMock*)dict[i];
187 QCOMPARE(m->stopped, 0);
194 void BackboneTest::translationTest() {
195 QSignalSpy translatS(back, SIGNAL(ready()));
196 QVERIFY2 (translatS.isValid() == true, "ready() signal is invalid");
203 qDebug() << "Time for backbone.search: " << time.elapsed();
206 back->translationReady();
207 qDebug() << "Time for backbone->translation: " << time.elapsed();
209 QVERIFY2(translatS.count() == 1, "Lost finall 'ready()' signal");
210 QVERIFY2(back->result().size() == total*2, "Lost some of the translations");
213 void BackboneTest::quitTest() {
214 QSignalSpy translatS(back, SIGNAL(closeOk()));
215 for(int i = 0; i < total; i++) {
216 CommonDictInterfaceMock *m = (CommonDictInterfaceMock*) dict[i];
218 back->addDictionary(dict[i]);
221 for(int i = 0; i < total; i++) {
222 CommonDictInterfaceMock *m = (CommonDictInterfaceMock*)dict[i];
223 QCOMPARE(m->stopped, 0);
228 for(int i = 0; i < total; i++) {
229 CommonDictInterfaceMock *m = (CommonDictInterfaceMock*)dict[i];
230 QCOMPARE(m->stopped, 1);
232 QVERIFY2(translatS.count() == 1, "Lost finall 'closeOk()' signal");
235 void BackboneTest::historyTest() {
236 History* history = back->history();
238 history->add("mleko");
240 QCOMPARE(history->nextAvailable(), FALSE);
241 QCOMPARE(history->prevAvailable(), FALSE);
242 QCOMPARE(history->listAvailable(), TRUE);
245 history->add("szklanka");
246 QCOMPARE(history->nextAvailable(), FALSE);
247 QCOMPARE(history->prevAvailable(), TRUE);
250 QCOMPARE(history->nextAvailable(), TRUE);
251 QCOMPARE(history->prevAvailable(), FALSE);
254 QStringList words = history->list();
255 QCOMPARE(words[0], QString("pic"));
256 QCOMPARE(words[1], QString("mleko"));
263 words = history->list();
264 QCOMPARE(words[0], QString("qqq"));
265 QCOMPARE(words[1], QString("pic"));
266 QCOMPARE(words[2], QString("mleko"));
268 history->setCurrentElement(0);
269 QCOMPARE(history->nextAvailable(), FALSE);
270 QCOMPARE(history->prevAvailable(), TRUE);
271 QCOMPARE(history->listAvailable(), TRUE);
273 history->setCurrentElement(1);
274 QCOMPARE(history->nextAvailable(), TRUE);
275 QCOMPARE(history->prevAvailable(), TRUE);
276 QCOMPARE(history->listAvailable(), TRUE);
278 history->setMaxSize(1);
279 words = history->list();
280 QCOMPARE(words[0], QString("pic"));
282 QCOMPARE(history->nextAvailable(), FALSE);
283 QCOMPARE(history->prevAvailable(), FALSE);
284 QCOMPARE(history->listAvailable(), TRUE);
288 QTEST_APPLESS_MAIN(BackboneTest);
290 #include "tst_Backbone.moc"