summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2009-11-02 22:14:53 +0100
committerAndrea Diamantini <adjam7@gmail.com>2009-11-02 22:14:53 +0100
commit3ab194eb596995a101756fcb92f4294e2dcb3ba1 (patch)
tree5fbff742e0fdb6305c28aad32d6ef0414ea8db2f
parentCompiling rekonq as a kdeinit executable (diff)
downloadrekonq-3ab194eb596995a101756fcb92f4294e2dcb3ba1.tar.xz
Finally... unit tests!!
First test is trivial, but it's a test (tabbar test). And now we have it!
-rw-r--r--src/CMakeLists.txt5
-rw-r--r--src/rekonqprivate_export.h43
-rw-r--r--src/tabbar.h3
-rw-r--r--src/tests/CMakeLists.txt22
-rw-r--r--src/tests/tabbar_test.cpp133
5 files changed, 205 insertions, 1 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b9bb78a8..5bd41b25 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,3 +1,8 @@
+### ------- tests sub dir -------
+
+ADD_SUBDIRECTORY( tests )
+
+
### ------- SETTING REKONQ FILES..
SET( rekonq_KDEINIT_SRCS
diff --git a/src/rekonqprivate_export.h b/src/rekonqprivate_export.h
new file mode 100644
index 00000000..8f996a1f
--- /dev/null
+++ b/src/rekonqprivate_export.h
@@ -0,0 +1,43 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2007 David Faure <faure@kde.org>
+* Copyright (C) 2009 by Andrea Diamantini <adjam7 at gmail dot com>
+*
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License or (at your option) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+
+#ifndef REKONQPRIVATE_EXPORT_H
+#define REKONQPRIVATE_EXPORT_H
+
+/* needed for KDE_EXPORT and KDE_IMPORT macros */
+#include <kdemacros.h>
+
+/* Classes from the rekonq application, which are exported only for unit tests */
+#ifndef REKONQ_TESTS_EXPORT
+ /* We are building this library */
+ #define REKONQ_TESTS_EXPORT KDE_EXPORT
+#else
+ /* We are using this library */
+ #define REKONQ_TESTS_EXPORT KDE_IMPORT
+#endif
+
+#endif // REKONQPRIVATE_EXPORT_H
diff --git a/src/tabbar.h b/src/tabbar.h
index 1601b3b6..fcb04d28 100644
--- a/src/tabbar.h
+++ b/src/tabbar.h
@@ -32,6 +32,7 @@
// Local Includes
+#include "rekonqprivate_export.h"
#include "mainview.h"
// Qt Includes
@@ -53,7 +54,7 @@ class KPassivePopup;
* a context menu and shortcuts
*
*/
-class TabBar : public KTabBar
+class REKONQ_TESTS_EXPORT TabBar : public KTabBar
{
Q_OBJECT
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
new file mode 100644
index 00000000..9963acd4
--- /dev/null
+++ b/src/tests/CMakeLists.txt
@@ -0,0 +1,22 @@
+### ---------- General Settings -------
+
+SET( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} )
+
+INCLUDE_DIRECTORIES ( ${CMAKE_CURRENT_BINARY_DIR}/..
+ ${KDE4_INCLUDES}
+ ${QT4_INCLUDES}
+)
+
+##### -------------tabbar test
+
+kde4_add_unit_test( tabbar_test TEST tabbar_test.cpp )
+
+target_link_libraries( tabbar_test
+ kdeinit_rekonq
+ ${KDE4_KDECORE_LIBS}
+ ${KDE4_KDEUI_LIBS}
+ ${QT_QTCORE_LIBRARY}
+ ${QT_QTTEST_LIBRARY}
+)
+
+# --------------
diff --git a/src/tests/tabbar_test.cpp b/src/tests/tabbar_test.cpp
new file mode 100644
index 00000000..7b40c487
--- /dev/null
+++ b/src/tests/tabbar_test.cpp
@@ -0,0 +1,133 @@
+/*
+ * Copyright 2008 Benjamin C. Meyer <ben@meyerhome.net>
+ * Copyright 2008 Andrea Diamantini <adjam7@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+#include <QtGui/QtGui>
+#include <QtTest/QtTest>
+
+#include "../tabbar.h"
+
+
+class TabBarTest : public QObject
+{
+ Q_OBJECT
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void tabbar_data();
+ void tabbar();
+
+ void tabSizeHint_data();
+ void tabSizeHint();
+};
+
+
+// Subclass that exposes the protected functions.
+class SubTabBar : public TabBar
+{
+public:
+ void call_cloneTab(int index)
+ { return SubTabBar::cloneTab(index); }
+
+ void call_closeOtherTabs(int index)
+ { return SubTabBar::closeOtherTabs(index); }
+
+ void call_closeTab(int index)
+ { return SubTabBar::closeTab(index); }
+
+ void call_mouseMoveEvent(QMouseEvent* event)
+ { return SubTabBar::mouseMoveEvent(event); }
+
+ void call_mousePressEvent(QMouseEvent* event)
+ { return SubTabBar::mousePressEvent(event); }
+
+ void call_reloadAllTabs()
+ { return SubTabBar::reloadAllTabs(); }
+
+ void call_reloadTab(int index)
+ { return SubTabBar::reloadTab(index); }
+
+ QSize call_tabSizeHint(int index) const
+ { return SubTabBar::tabSizeHint(index); }
+
+ void call_showTabPreview(int tab)
+ { return SubTabBar::showTabPreview(tab); }
+};
+
+
+// This will be called before the first test function is executed.
+// It is only called once.
+void TabBarTest::initTestCase()
+{
+}
+
+
+// This will be called after the last test function is executed.
+// It is only called once.
+void TabBarTest::cleanupTestCase()
+{
+}
+
+
+// This will be called before each test function is executed.
+void TabBarTest::init()
+{
+}
+
+
+// This will be called after every test function.
+void TabBarTest::cleanup()
+{
+}
+
+
+void TabBarTest::tabbar_data()
+{
+}
+
+
+void TabBarTest::tabbar()
+{
+}
+
+
+void TabBarTest::tabSizeHint_data()
+{
+// QTest::addColumn<int>("index");
+// QTest::newRow("0") << 0;
+}
+
+
+// protected QSize tabSizeHint(int index) const
+void TabBarTest::tabSizeHint()
+{
+ // Need fixes as our function uses MainView methods to determine size
+// QFETCH(int, index);
+// SubTabBar bar;
+// QVERIFY(bar.call_tabSizeHint(index).width() <= 250);
+}
+
+
+QTEST_MAIN(TabBarTest)
+#include "tst_tabbar.moc"