Added tests for history
authorMateusz Półrola <mateusz.polrola@comarch.pl>
Wed, 11 Aug 2010 10:30:31 +0000 (12:30 +0200)
committerMateusz Półrola <mateusz.polrola@comarch.pl>
Wed, 11 Aug 2010 10:30:31 +0000 (12:30 +0200)
trunk/src/base/backbone/History.cpp
trunk/src/base/backbone/backbone.cpp
trunk/src/includes/History.h
trunk/tests/mDictionaryTests/mDictionaryTests.pro
trunk/tests/mDictionaryTests/mDictionaryTests.pro.user
trunk/tests/mDictionaryTests/tst_Backbone.cpp

index 4163f4d..850a90d 100644 (file)
 #include "../../includes/History.h"
 #include <QDebug>
 
-History::History(QObject *parent) :
+History::History(int maxSize, QObject *parent) :
     QObject(parent)
 {
-    _maxSize = 5;
+    _maxSize = maxSize;
     currentElement = -1;
     _prevAvailable = false;
     _nextAvailable = false;
@@ -35,6 +35,29 @@ History::History(QObject *parent) :
 }
 
 
+void History::setMaxSize(int size) {
+    if(maxSize() <= 0) return;
+    if(size > _maxSize) {
+        _maxSize = size;
+    }
+    else {
+        _maxSize = size;
+        if(currentElement > 0) {
+            _history.remove(0, currentElement);
+        }
+
+        while(_history.size() > _maxSize) {
+            _history.pop_back();
+        }
+
+        setCurrentElement(0);
+    }
+}
+
+int History::maxSize() {
+    return _maxSize;
+}
+
 void History::add(QString word) {
     if(currentElement != -1) {
         //we search the same word so we don't add it again
index 220682c..83da538 100644 (file)
@@ -43,8 +43,7 @@ void Backbone::init() {
    connect(&_timerHtmlSearch, SIGNAL(timeout()), this,
            SLOT(htmlTranslationReady()));
 
-
-   _history = new History(this);
+   _history = new History(5, this);
 }
 
 Backbone::Backbone(QString pluginPath, QString configPath, QObject *parent)
index ac0b1bf..df56199 100644 (file)
@@ -32,7 +32,7 @@ class History : public QObject
 {
     Q_OBJECT
 public:
-    explicit History(QObject *parent = 0);
+    explicit History(int maxSize = 5, QObject *parent = 0);
 
 Q_SIGNALS:
     void historyChanged(bool prevAvailable,
@@ -51,6 +51,10 @@ public:
 
     void setCurrentElement(int element);
 
+    int maxSize();
+
+    void setMaxSize(int size);
+
 private:
     QVector<QString> _history;
     int _maxSize;
index 9c9ea98..ed2c910 100644 (file)
@@ -15,7 +15,8 @@ TEMPLATE = app
 
 
 SOURCES += tst_Backbone.cpp \
-    ../../src/base/backbone/backbone.cpp
+    ../../src/base/backbone/backbone.cpp \
+    ../../src/base/backbone/History.cpp
 DEFINES += SRCDIR=\\\"$$PWD/\\\"
 
 HEADERS += \
@@ -24,6 +25,7 @@ HEADERS += \
     ../../src/includes/translation.h \
     ../../src/includes/settings.h \
     ../../src/includes/CommonDictInterface.h \
+    ../../src/includes/History.h \
     TranslationMock.h
 
 check.target = check
index ef5a8f0..fa63c14 100644 (file)
     <value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
     <value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
     <valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
+    <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">4.6.2 Debug</value>
+    <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">2</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/scratchbox/users/mateusz/home/mateusz/mdictionary/trunk/tests/mDictionaryTests</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">9</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">0</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">false</value>
+   </valuemap>
+   <valuemap key="ProjectExplorer.Target.BuildConfiguration.1" type="QVariantMap">
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">QMake</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
+     <valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">2</value>
+    <valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
+      <value type="QString">clean</value>
+     </valuelist>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
+    <value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
+    <valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
+    <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">4.6.2 Release</value>
+    <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">0</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/scratchbox/users/mateusz/home/mateusz/mdictionary/trunk/tests/mDictionaryTests</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">9</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">0</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">false</value>
+   </valuemap>
+   <valuemap key="ProjectExplorer.Target.BuildConfiguration.2" type="QVariantMap">
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">QMake</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
+     <valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">2</value>
+    <valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
+      <value type="QString">clean</value>
+     </valuelist>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
+    <value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
+    <valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Qt w PATH Debug</value>
     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
     <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">2</value>
-    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/home/bulislaw/devel/mdictionary/trunk/tests/mDictionaryTests-build-desktop</value>
-    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">3</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/scratchbox/users/mateusz/home/mateusz/mdictionary/trunk/tests/mDictionaryTests-build-desktop</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">4</value>
     <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">0</value>
     <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">true</value>
    </valuemap>
-   <valuemap key="ProjectExplorer.Target.BuildConfiguration.1" type="QVariantMap">
+   <valuemap key="ProjectExplorer.Target.BuildConfiguration.3" type="QVariantMap">
     <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
      <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">QMake</value>
      <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Qt w PATH Release</value>
     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
     <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">0</value>
-    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/home/bulislaw/devel/mdictionary/trunk/tests/mDictionaryTests-build-desktop</value>
-    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">3</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/scratchbox/users/mateusz/home/mateusz/mdictionary/trunk/tests/mDictionaryTests-build-desktop</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">4</value>
     <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">0</value>
     <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">true</value>
    </valuemap>
-   <valuemap key="ProjectExplorer.Target.BuildConfiguration.2" type="QVariantMap">
+   <valuemap key="ProjectExplorer.Target.BuildConfiguration.4" type="QVariantMap">
     <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
      <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">QMake</value>
      <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Qt 4.6.3 OpenSource Debug</value>
     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
     <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">2</value>
-    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/home/bulislaw/devel/mdictionary/trunk/tests/mDictionaryTests-build-desktop</value>
-    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">2</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/scratchbox/users/mateusz/home/mateusz/mdictionary/trunk/tests/mDictionaryTests-build-desktop</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">6</value>
     <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">0</value>
     <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">true</value>
    </valuemap>
-   <valuemap key="ProjectExplorer.Target.BuildConfiguration.3" type="QVariantMap">
+   <valuemap key="ProjectExplorer.Target.BuildConfiguration.5" type="QVariantMap">
     <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
      <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">QMake</value>
      <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Qt 4.6.3 OpenSource Release</value>
     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
     <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">0</value>
-    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/home/bulislaw/devel/mdictionary/trunk/tests/mDictionaryTests-build-desktop</value>
-    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">2</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">/scratchbox/users/mateusz/home/mateusz/mdictionary/trunk/tests/mDictionaryTests-build-desktop</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">6</value>
     <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">0</value>
     <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">true</value>
    </valuemap>
-   <value key="ProjectExplorer.Target.BuildConfigurationCount" type="int">4</value>
+   <value key="ProjectExplorer.Target.BuildConfigurationCount" type="int">6</value>
    <valuemap key="ProjectExplorer.Target.RunConfiguration.0" type="QVariantMap">
     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">mDictionaryTests</value>
     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4RunConfiguration</value>
index 01f6a77..eac34cb 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <QtCore/QString>
 #include <QtTest/QtTest>
+#include <QStringList>
 #include <QList>
 #include <QTime>
 #include "../../src/base/backbone/backbone.h"
@@ -52,6 +53,7 @@ private Q_SLOTS:
     void stopSearchingTest();
     void searchTest();
     void translationTest();
+    void historyTest();
     void quitTest();
 };
 
@@ -169,8 +171,7 @@ void BackboneTest::searchTest() {
     }
 
     qDebug() << "main " << this->thread()->currentThreadId();
-    QStringList list;
-    list << "pigwa";
+    QString list("pigwa");
 
     back->search(list);
     usleep(2000);
@@ -192,8 +193,7 @@ void BackboneTest::translationTest() {
 
     QTime time;
     time.start();
-    QStringList list;
-    list << "nic";
+    QString list("nic");
     back->search(list);
     qDebug() << "Time for backbone.search: " << time.elapsed();
     usleep(2000);
@@ -227,6 +227,58 @@ void BackboneTest::quitTest() {
     QVERIFY2(translatS.count() == 1, "Lost finall 'closeOk()' signal");
 }
 
+void BackboneTest::historyTest() {
+    History* history = back->history();
+
+    history->add("mleko");
+
+    QCOMPARE(history->nextAvailable(), FALSE);
+    QCOMPARE(history->prevAvailable(), FALSE);
+    QCOMPARE(history->listAvailable(), TRUE);
+
+
+    history->add("szklanka");
+    QCOMPARE(history->nextAvailable(), FALSE);
+    QCOMPARE(history->prevAvailable(), TRUE);
+
+    history->previous();
+    QCOMPARE(history->nextAvailable(), TRUE);
+    QCOMPARE(history->prevAvailable(), FALSE);
+
+    history->add("pic");
+    QStringList words = history->list();
+    QCOMPARE(words[0], QString("pic"));
+    QCOMPARE(words[1], QString("mleko"));
+
+    history->add("qqq");
+
+    history->previous();
+    history->add("pic");
+
+    words = history->list();
+    QCOMPARE(words[0], QString("qqq"));
+    QCOMPARE(words[1], QString("pic"));
+    QCOMPARE(words[2], QString("mleko"));
+
+    history->setCurrentElement(0);
+    QCOMPARE(history->nextAvailable(), FALSE);
+    QCOMPARE(history->prevAvailable(), TRUE);
+    QCOMPARE(history->listAvailable(), TRUE);
+
+    history->setCurrentElement(1);
+    QCOMPARE(history->nextAvailable(), TRUE);
+    QCOMPARE(history->prevAvailable(), TRUE);
+    QCOMPARE(history->listAvailable(), TRUE);
+
+    history->setMaxSize(1);
+    words = history->list();
+    QCOMPARE(words[0], QString("pic"));
+
+    QCOMPARE(history->nextAvailable(), FALSE);
+    QCOMPARE(history->prevAvailable(), FALSE);
+    QCOMPARE(history->listAvailable(), TRUE);
+}
+
 
 QTEST_APPLESS_MAIN(BackboneTest);