summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2009-11-05 10:40:13 +0100
committerAndrea Diamantini <adjam7@gmail.com>2009-11-05 10:40:13 +0100
commitf2a846d56cea2f33e85e52f9c99a3c73c2195feb (patch)
treec285492a0c552f7d52320aad368868f21e6dc189 /src
parentMerge commit 'refs/merge-requests/1986' of git://gitorious.org/rekonq/mainlin... (diff)
parentTrivial MainView Test (diff)
downloadrekonq-f2a846d56cea2f33e85e52f9c99a3c73c2195feb.tar.xz
Merge branch 'AutoTests'
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt19
-rw-r--r--src/application.cpp2
-rw-r--r--src/main.cpp2
-rw-r--r--src/mainview.cpp3
-rw-r--r--src/mainview.h3
-rw-r--r--src/rekonqprivate_export.h43
-rw-r--r--src/tabbar.h3
-rw-r--r--src/tests/CMakeLists.txt32
-rw-r--r--src/tests/mainview_test.cpp443
-rw-r--r--src/tests/tabbar_test.cpp140
-rw-r--r--src/urlbar.cpp3
11 files changed, 679 insertions, 14 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 279d9519..5bd41b25 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,6 +1,11 @@
+### ------- tests sub dir -------
+
+ADD_SUBDIRECTORY( tests )
+
+
### ------- SETTING REKONQ FILES..
-SET( rekonq_SRCS
+SET( rekonq_KDEINIT_SRCS
homepage.cpp
previewimage.cpp
websnap.cpp
@@ -18,8 +23,7 @@ SET( rekonq_SRCS
urlbar.cpp
findbar.cpp
settings.cpp
- webview.cpp
- main.cpp
+ webview.cpp
sidepanel.cpp
panelhistory.cpp
lineedit.cpp
@@ -29,7 +33,7 @@ SET( rekonq_SRCS
)
-KDE4_ADD_UI_FILES( rekonq_SRCS
+KDE4_ADD_UI_FILES( rekonq_KDEINIT_SRCS
settings_general.ui
settings_tabs.ui
settings_fonts.ui
@@ -37,7 +41,7 @@ KDE4_ADD_UI_FILES( rekonq_SRCS
cleardata.ui
)
-KDE4_ADD_KCFG_FILES( rekonq_SRCS rekonq.kcfgc )
+KDE4_ADD_KCFG_FILES( rekonq_KDEINIT_SRCS rekonq.kcfgc )
### ------------- INCLUDING DIRECTORIES...
@@ -55,12 +59,12 @@ ADD_DEFINITIONS ( ${KDE4_DEFINITIONS} )
### --------------- ADDING EXECUTABLE...
-KDE4_ADD_EXECUTABLE( rekonq ${rekonq_SRCS} )
+KDE4_ADD_KDEINIT_EXECUTABLE( rekonq ${rekonq_KDEINIT_SRCS} main.cpp )
### --------------- TARGETTING LINK LIBRARIES...
-TARGET_LINK_LIBRARIES ( rekonq
+TARGET_LINK_LIBRARIES ( kdeinit_rekonq
${QT_LIBRARIES}
${QT_QTNETWORK_LIBRARY}
${QT_QTWEBKIT_LIBRARY}
@@ -74,4 +78,5 @@ TARGET_LINK_LIBRARIES ( rekonq
### ------------ INSTALL FILES...
INSTALL( TARGETS rekonq ${INSTALL_TARGETS_DEFAULT_ARGS} )
+INSTALL( TARGETS kdeinit_rekonq ${INSTALL_TARGETS_DEFAULT_ARGS} )
INSTALL( FILES rekonq.kcfg DESTINATION ${KCFG_INSTALL_DIR} )
diff --git a/src/application.cpp b/src/application.cpp
index 634e068f..8e65b394 100644
--- a/src/application.cpp
+++ b/src/application.cpp
@@ -172,7 +172,7 @@ int Application::newInstance()
Application *Application::instance()
{
- return (static_cast<Application *>(QCoreApplication::instance()));
+ return (qobject_cast<Application *>(QCoreApplication::instance()));
}
diff --git a/src/main.cpp b/src/main.cpp
index c874debd..c0e4b70d 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -41,7 +41,7 @@ static const char description[] =
I18N_NOOP("A lightweight Web Browser for KDE based on WebKit");
-int main(int argc, char **argv)
+extern "C" KDE_EXPORT int kdemain( int argc, char **argv )
{
KAboutData about("rekonq",
0,
diff --git a/src/mainview.cpp b/src/mainview.cpp
index 04ede24c..c4b0cfc2 100644
--- a/src/mainview.cpp
+++ b/src/mainview.cpp
@@ -91,9 +91,6 @@ MainView::MainView(QWidget *parent)
connect(m_tabBar, SIGNAL(reloadAllTabs()), this, SLOT(slotReloadAllTabs()));
connect(m_tabBar, SIGNAL(tabCloseRequested(int)), this, SLOT(slotCloseTab(int)));
-
- // connecting urlbar signals
- connect(urlBar(), SIGNAL(activated(const KUrl&)), Application::instance(), SLOT(loadUrl(const KUrl&)));
// current page index changing
connect(this, SIGNAL(currentChanged(int)), this, SLOT(slotCurrentChanged(int)));
diff --git a/src/mainview.h b/src/mainview.h
index f0fe183d..dc0393fa 100644
--- a/src/mainview.h
+++ b/src/mainview.h
@@ -31,6 +31,7 @@
// Local Includes
+#include "rekonqprivate_export.h"
#include "webview.h"
#include "webpage.h"
#include "application.h"
@@ -58,7 +59,7 @@ class UrlBar;
*
*/
-class MainView : public KTabWidget
+class REKONQ_TESTS_EXPORT MainView : public KTabWidget
{
Q_OBJECT
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..5df23e24
--- /dev/null
+++ b/src/tests/CMakeLists.txt
@@ -0,0 +1,32 @@
+##### ---------- 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 tabbar_test.cpp )
+
+target_link_libraries( tabbar_test
+ kdeinit_rekonq
+ ${KDE4_KDECORE_LIBS}
+ ${KDE4_KDEUI_LIBS}
+ ${QT_QTTEST_LIBRARY}
+)
+
+##### ------------- mainview test
+
+kde4_add_unit_test( mainview_test mainview_test.cpp )
+
+target_link_libraries( mainview_test
+ kdeinit_rekonq
+ ${KDE4_KDECORE_LIBS}
+ ${KDE4_KDEUI_LIBS}
+ ${QT_QTTEST_LIBRARY}
+)
+
+############################################################
diff --git a/src/tests/mainview_test.cpp b/src/tests/mainview_test.cpp
new file mode 100644
index 00000000..f56d73ab
--- /dev/null
+++ b/src/tests/mainview_test.cpp
@@ -0,0 +1,443 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright 2008 Benjamin C. Meyer <ben@meyerhome.net>
+* Copyright 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/>.
+*
+* ============================================================ */
+
+
+#include <qtest_kde.h>
+
+#include <QtTest>
+#include <QtCore>
+#include <QtGui>
+
+#include "../mainview.h"
+#include "../webview.h"
+
+
+class MainViewTest : public QObject
+{
+ Q_OBJECT
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void tabwidget_data();
+ void tabwidget();
+
+ void closeTab_data();
+ void closeTab();
+
+ void currentWebView_data();
+ void currentWebView();
+
+ void newTab_data();
+ void newTab();
+
+ void nextTab_data();
+ void nextTab();
+
+ void previousTab_data();
+ void previousTab();
+
+ void recentlyClosedTabs_data();
+ void recentlyClosedTabs();
+
+ void setCurrentTitle_data();
+ void setCurrentTitle(const QString &);
+
+ void showStatusBarMessage_data();
+ void showStatusBarMessage(const QString &);
+
+ void currentChanged_data();
+ void currentChanged();
+};
+
+
+// Subclass that exposes the protected functions.
+class SubMainView : public MainView
+{
+public:
+ void call_resizeEvent(QResizeEvent *event)
+ { return SubMainView::resizeEvent(event); }
+};
+
+
+// This will be called before the first test function is executed.
+// It is only called once.
+void MainViewTest::initTestCase()
+{
+}
+
+// This will be called after the last test function is executed.
+// It is only called once.
+void MainViewTest::cleanupTestCase()
+{
+}
+
+// This will be called before each test function is executed.
+void MainViewTest::init()
+{
+}
+
+// This will be called after every test function.
+void MainViewTest::cleanup()
+{
+}
+
+// -------------------------------------------
+
+void MainViewTest::tabwidget_data()
+{
+}
+
+void MainViewTest::tabwidget()
+{
+ SubMainView widget;
+// widget.currentWebView();
+// QCOMPARE(widget.currentIndex(), 0);
+// widget.newTab();
+// widget.nextTab();
+// QCOMPARE(widget.currentIndex(), 1);
+// widget.previousTab();
+// QCOMPARE(widget.currentIndex(), 0);
+}
+
+// -------------------------------------------
+
+void MainViewTest::closeTab_data()
+{
+ QTest::addColumn<int>("index");
+ QTest::newRow("null") << 0;
+}
+
+// public void closeTab(int index = -1)
+void MainViewTest::closeTab()
+{
+ QFETCH(int, index);
+
+ SubMainView widget;
+/*
+ QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &)));
+ QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &)));
+QSignalSpy spy5(&widget, SIGNAL(tabsChanged()));
+ QSignalSpy spy6(&widget, SIGNAL(lastTabClosed()));
+
+ widget.newTab();
+ widget.slotCloseTab(index);
+ widget.newTab();
+ widget.slotCloseTab(index);
+ widget.newTab();
+
+ QCOMPARE(spy0.count(), 0);
+ QCOMPARE(spy3.count(), 2);
+ QCOMPARE(spy5.count(), 0);
+ QCOMPARE(spy6.count(), 0);*/
+}
+
+// -------------------------------------------
+
+Q_DECLARE_METATYPE(WebView*)
+void MainViewTest::currentWebView_data()
+{
+ /*
+ QTest::addColumn<WebView*>("currentWebView");
+ QTest::newRow("null") << WebView*();
+ */
+}
+
+// public WebView *currentWebView() const
+void MainViewTest::currentWebView()
+{
+ /*
+ QFETCH(WebView*, currentWebView);
+
+ SubMainView widget;
+
+ QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &)));
+ QSignalSpy spy2(&widget, SIGNAL(loadProgress(int)));
+ QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &)));
+ QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &)));
+ QSignalSpy spy5(&widget, SIGNAL(tabsChanged()));
+ QSignalSpy spy6(&widget, SIGNAL(lastTabClosed()));
+
+ QCOMPARE(widget.currentWebView(), currentWebView);
+
+ QCOMPARE(spy0.count(), 0);
+ QCOMPARE(spy2.count(), 0);
+ QCOMPARE(spy3.count(), 0);
+ QCOMPARE(spy4.count(), 0);
+ QCOMPARE(spy5.count(), 0);
+ QCOMPARE(spy6.count(), 0);
+ */
+ QSKIP("Test is not implemented.", SkipAll);
+}
+
+// -------------------------------------------
+
+void MainViewTest::newTab_data()
+{
+ QTest::addColumn<int>("foo");
+ QTest::newRow("null") << 0;
+}
+
+// public void newTab()
+void MainViewTest::newTab()
+{
+ /*
+ QFETCH(int, foo);
+
+ SubMainView widget;
+
+ QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &)));
+ QSignalSpy spy2(&widget, SIGNAL(loadProgress(int)));
+ QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &)));
+ QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &)));
+ QSignalSpy spy5(&widget, SIGNAL(tabsChanged()));
+ QSignalSpy spy6(&widget, SIGNAL(lastTabClosed()));
+
+ widget.newTab();
+
+ QCOMPARE(spy0.count(), 0);
+ QCOMPARE(spy2.count(), 0);
+ QCOMPARE(spy3.count(), 0);
+ QCOMPARE(spy4.count(), 0);
+ QCOMPARE(spy5.count(), 0);
+ QCOMPARE(spy6.count(), 0);
+ */
+ QSKIP("Test is not implemented.", SkipAll);
+}
+
+// -------------------------------------------
+
+void MainViewTest::nextTab_data()
+{
+ QTest::addColumn<int>("foo");
+ QTest::newRow("null") << 0;
+}
+
+// public void nextTab()
+void MainViewTest::nextTab()
+{
+ /*
+ QFETCH(int, foo);
+
+ SubMainView widget;
+
+ QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &)));
+ QSignalSpy spy2(&widget, SIGNAL(loadProgress(int)));
+ QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &)));
+ QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &)));
+ QSignalSpy spy5(&widget, SIGNAL(tabsChanged()));
+ QSignalSpy spy6(&widget, SIGNAL(lastTabClosed()));
+
+ widget.nextTab();
+
+ QCOMPARE(spy0.count(), 0);
+ QCOMPARE(spy2.count(), 0);
+ QCOMPARE(spy3.count(), 0);
+ QCOMPARE(spy4.count(), 0);
+ QCOMPARE(spy5.count(), 0);
+ QCOMPARE(spy6.count(), 0);
+ */
+ QSKIP("Test is not implemented.", SkipAll);
+}
+
+// -------------------------------------------
+
+void MainViewTest::previousTab_data()
+{
+ QTest::addColumn<int>("foo");
+ QTest::newRow("null") << 0;
+}
+
+
+// public void previousTab()
+void MainViewTest::previousTab()
+{
+ /*
+ QFETCH(int, foo);
+
+ SubMainView widget;
+
+ QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &)));
+ QSignalSpy spy2(&widget, SIGNAL(loadProgress(int)));
+ QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &)));
+ QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &)));
+ QSignalSpy spy5(&widget, SIGNAL(tabsChanged()));
+ QSignalSpy spy6(&widget, SIGNAL(lastTabClosed()));
+
+ widget.previousTab();
+
+ QCOMPARE(spy0.count(), 0);
+ QCOMPARE(spy2.count(), 0);
+ QCOMPARE(spy3.count(), 0);
+ QCOMPARE(spy4.count(), 0);
+ QCOMPARE(spy5.count(), 0);
+ QCOMPARE(spy6.count(), 0);
+ */
+ QSKIP("Test is not implemented.", SkipAll);
+}
+
+// -------------------------------------------
+
+void MainViewTest::recentlyClosedTabs_data()
+{
+}
+
+void MainViewTest::recentlyClosedTabs()
+{
+ /*
+ SubMainView widget;
+
+ QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &)));
+ QSignalSpy spy2(&widget, SIGNAL(loadProgress(int)));
+ QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &)));
+ QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &)));
+ QSignalSpy spy5(&widget, SIGNAL(tabsChanged()));
+ QSignalSpy spy6(&widget, SIGNAL(lastTabClosed()));
+
+ QCOMPARE(spy0.count(), 0);
+ QCOMPARE(spy2.count(), 0);
+ QCOMPARE(spy3.count(), 0);
+ QCOMPARE(spy4.count(), 0);
+ QCOMPARE(spy5.count(), 0);
+ QCOMPARE(spy6.count(), 0);
+ */
+ QSKIP("Test is not implemented.", SkipAll);
+}
+
+// -------------------------------------------
+
+void MainViewTest::setCurrentTitle_data()
+{
+ QTest::addColumn<QString>("url");
+ QTest::newRow("null") << QString("foo");
+}
+
+// protected void setCurrentTitle(QString const &url)
+void MainViewTest::setCurrentTitle(const QString &)
+{
+ /*
+ QFETCH(QString, url);
+
+ SubMainView widget;
+
+ QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &)));
+ QSignalSpy spy2(&widget, SIGNAL(loadProgress(int)));
+ QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &)));
+ QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &)));
+ QSignalSpy spy5(&widget, SIGNAL(tabsChanged()));
+ QSignalSpy spy6(&widget, SIGNAL(lastTabClosed()));
+
+ widget.call_setCurrentTitle(url);
+
+ QCOMPARE(spy0.count(), 0);
+ QCOMPARE(spy2.count(), 0);
+ QCOMPARE(spy3.count(), 0);
+ QCOMPARE(spy4.count(), 0);
+ QCOMPARE(spy5.count(), 0);
+ QCOMPARE(spy6.count(), 0);
+ */
+ QSKIP("Test is not implemented.", SkipAll);
+}
+
+// -------------------------------------------
+
+void MainViewTest::showStatusBarMessage_data()
+{
+ QTest::addColumn<QString>("message");
+ QTest::newRow("null") << QString("foo");
+}
+
+// protected void showStatusBarMessage(QString const &message)
+void MainViewTest::showStatusBarMessage(const QString &)
+{
+ /*
+ QFETCH(QString, message);
+
+ SubMainView widget;
+
+ QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &)));
+ QSignalSpy spy2(&widget, SIGNAL(loadProgress(int)));
+ QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &)));
+ QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &)));
+ QSignalSpy spy5(&widget, SIGNAL(tabsChanged()));
+ QSignalSpy spy6(&widget, SIGNAL(lastTabClosed()));
+
+ widget.call_showStatusBarMessage(message);
+
+ QCOMPARE(spy0.count(), 0);
+ QCOMPARE(spy2.count(), 0);
+ QCOMPARE(spy3.count(), 0);
+ QCOMPARE(spy4.count(), 0);
+ QCOMPARE(spy5.count(), 0);
+ QCOMPARE(spy6.count(), 0);
+ */
+ QSKIP("Test is not implemented.", SkipAll);
+}
+
+// -------------------------------------------
+
+// void slotCurrentChanged(int index);
+void MainViewTest::currentChanged_data()
+{
+ QTest::addColumn<int>("foo");
+ QTest::newRow("null") << 0;
+}
+
+// private slotCurrentChanged
+void MainViewTest::currentChanged()
+{
+ /*
+ QFETCH(int, foo);
+
+ SubMainView widget;
+
+ QSignalSpy spy0(&widget, SIGNAL(linkHovered(const QString &)));
+ QSignalSpy spy2(&widget, SIGNAL(loadProgress(int)));
+ QSignalSpy spy3(&widget, SIGNAL(setCurrentTitle(const QString &)));
+ QSignalSpy spy4(&widget, SIGNAL(showStatusBarMessage(const QString &)));
+ QSignalSpy spy5(&widget, SIGNAL(tabsChanged()));
+ QSignalSpy spy6(&widget, SIGNAL(lastTabClosed()));
+
+ widget.call_tabsChanged();
+
+ QCOMPARE(spy0.count(), 0);
+ QCOMPARE(spy2.count(), 0);
+ QCOMPARE(spy3.count(), 0);
+ QCOMPARE(spy4.count(), 0);
+ QCOMPARE(spy5.count(), 0);
+ QCOMPARE(spy6.count(), 0);
+ */
+ QSKIP("Test is not implemented.", SkipAll);
+}
+
+// -------------------------------------------
+
+QTEST_KDEMAIN(MainViewTest, GUI)
+#include "mainview_test.moc"
diff --git a/src/tests/tabbar_test.cpp b/src/tests/tabbar_test.cpp
new file mode 100644
index 00000000..08f295d1
--- /dev/null
+++ b/src/tests/tabbar_test.cpp
@@ -0,0 +1,140 @@
+/*
+ * 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 <qtest_kde.h>
+
+#include <QtTest>
+#include <QtCore>
+#include <QtGui>
+
+#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()
+{
+ SubTabBar widget;
+}
+
+// -------------------------------------------
+
+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_KDEMAIN(TabBarTest, GUI)
+#include "tabbar_test.moc"
diff --git a/src/urlbar.cpp b/src/urlbar.cpp
index d587fd80..81185409 100644
--- a/src/urlbar.cpp
+++ b/src/urlbar.cpp
@@ -81,6 +81,9 @@ UrlBar::UrlBar(QWidget *parent)
QPalette p = view()->palette();
p.setColor(QPalette::Base, palette().color(QPalette::Base));
view()->setPalette(p);
+
+ // load urls on activated urlbar signal
+ connect(this, SIGNAL(activated(const KUrl&)), Application::instance(), SLOT(loadUrl(const KUrl&)));
}