From 3ab194eb596995a101756fcb92f4294e2dcb3ba1 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Mon, 2 Nov 2009 22:14:53 +0100 Subject: Finally... unit tests!! First test is trivial, but it's a test (tabbar test). And now we have it! --- src/CMakeLists.txt | 5 ++ src/rekonqprivate_export.h | 43 +++++++++++++++ src/tabbar.h | 3 +- src/tests/CMakeLists.txt | 22 ++++++++ src/tests/tabbar_test.cpp | 133 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 205 insertions(+), 1 deletion(-) create mode 100644 src/rekonqprivate_export.h create mode 100644 src/tests/CMakeLists.txt create mode 100644 src/tests/tabbar_test.cpp 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 +* Copyright (C) 2009 by Andrea Diamantini +* +* +* 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 . +* +* ============================================================ */ + + +#ifndef REKONQPRIVATE_EXPORT_H +#define REKONQPRIVATE_EXPORT_H + +/* needed for KDE_EXPORT and KDE_IMPORT macros */ +#include + +/* 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 + * Copyright 2008 Andrea Diamantini + * + * 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 +#include + +#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("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" -- cgit v1.2.1