diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2009-03-23 09:18:55 (GMT) |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2009-03-23 09:18:55 (GMT) |
commit | e5fcad302d86d316390c6b0f62759a067313e8a9 (patch) | |
tree | c2afbf6f1066b6ce261f14341cf6d310e5595bc1 /tests/auto/qsidebar | |
download | Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.zip Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.tar.gz Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.tar.bz2 |
Long live Qt 4.5!
Diffstat (limited to 'tests/auto/qsidebar')
-rw-r--r-- | tests/auto/qsidebar/.gitignore | 1 | ||||
-rw-r--r-- | tests/auto/qsidebar/qsidebar.pro | 8 | ||||
-rw-r--r-- | tests/auto/qsidebar/tst_qsidebar.cpp | 199 |
3 files changed, 208 insertions, 0 deletions
diff --git a/tests/auto/qsidebar/.gitignore b/tests/auto/qsidebar/.gitignore new file mode 100644 index 0000000..194ca9f --- /dev/null +++ b/tests/auto/qsidebar/.gitignore @@ -0,0 +1 @@ +tst_qsidebar diff --git a/tests/auto/qsidebar/qsidebar.pro b/tests/auto/qsidebar/qsidebar.pro new file mode 100644 index 0000000..bfcaab7 --- /dev/null +++ b/tests/auto/qsidebar/qsidebar.pro @@ -0,0 +1,8 @@ +CONFIG += qttest_p4 + +include(../../src/qfiledialog.pri) + +SOURCES += tst_qsidebar.cpp +TARGET = tst_qsidebar + + diff --git a/tests/auto/qsidebar/tst_qsidebar.cpp b/tests/auto/qsidebar/tst_qsidebar.cpp new file mode 100644 index 0000000..7a262e6 --- /dev/null +++ b/tests/auto/qsidebar/tst_qsidebar.cpp @@ -0,0 +1,199 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include <QtTest/QtTest> +#include "../../../src/gui/dialogs/qsidebar_p.h" +#include "../../../src/gui/dialogs/qfilesystemmodel_p.h" + +//TESTED_CLASS= +//TESTED_FILES= + +class tst_QSidebar : public QObject { + Q_OBJECT + +public: + tst_QSidebar(); + virtual ~tst_QSidebar(); + +public Q_SLOTS: + void init(); + void cleanup(); + +private slots: + void setUrls(); + void selectUrls(); + void addUrls(); + + void goToUrl(); +}; + +tst_QSidebar::tst_QSidebar() +{ +} + +tst_QSidebar::~tst_QSidebar() +{ +} + +void tst_QSidebar::init() +{ +} + +void tst_QSidebar::cleanup() +{ +} + +void tst_QSidebar::setUrls() +{ + QList<QUrl> urls; + QFileSystemModel fsmodel; + QSidebar qsidebar; + qsidebar.init(&fsmodel, urls); + QAbstractItemModel *model = qsidebar.model(); + + urls << QUrl::fromLocalFile(QDir::rootPath()) + << QUrl::fromLocalFile(QDir::temp().absolutePath()); + + QCOMPARE(model->rowCount(), 0); + qsidebar.setUrls(urls); + QCOMPARE(qsidebar.urls(), urls); + QCOMPARE(model->rowCount(), urls.count()); + qsidebar.setUrls(urls); + QCOMPARE(model->rowCount(), urls.count()); +} + +void tst_QSidebar::selectUrls() +{ + QList<QUrl> urls; + urls << QUrl::fromLocalFile(QDir::rootPath()) + << QUrl::fromLocalFile(QDir::temp().absolutePath()); + QFileSystemModel fsmodel; + QSidebar qsidebar; + qsidebar.init(&fsmodel, urls); + + QSignalSpy spy(&qsidebar, SIGNAL(goToUrl(const QUrl &))); + qsidebar.selectUrl(urls.at(0)); + QCOMPARE(spy.count(), 0); +} + +void tst_QSidebar::addUrls() +{ + QList<QUrl> emptyUrls; + QFileSystemModel fsmodel; + QSidebar qsidebar; + qsidebar.init(&fsmodel, emptyUrls); + QAbstractItemModel *model = qsidebar.model(); + + // default + QCOMPARE(model->rowCount(), 0); + + QList<QUrl> urls; + urls << QUrl::fromLocalFile(QDir::rootPath()) + << QUrl::fromLocalFile(QDir::temp().absolutePath()); + + // test < 0 + qsidebar.addUrls(urls, -1); + QCOMPARE(model->rowCount(), 2); + + // test = 0 + qsidebar.setUrls(emptyUrls); + qsidebar.addUrls(urls, 0); + QCOMPARE(model->rowCount(), 2); + + // test > 0 + qsidebar.setUrls(emptyUrls); + qsidebar.addUrls(urls, 100); + QCOMPARE(model->rowCount(), 2); + + // test inserting with already existing rows + QList<QUrl> moreUrls; + moreUrls << QUrl::fromLocalFile(QDir::home().absolutePath()); + qsidebar.addUrls(moreUrls, -1); + QCOMPARE(model->rowCount(), 3); + + // make sure invalid urls are still added + QList<QUrl> badUrls; + badUrls << QUrl::fromLocalFile(QDir::home().absolutePath() + "/I used to exist"); + qsidebar.addUrls(badUrls, 0); + QCOMPARE(model->rowCount(), 4); + + // check that every item has text and an icon including the above invalid one + for (int i = 0; i < model->rowCount(); ++i) { + QVERIFY(!model->index(i, 0).data().toString().isEmpty()); + QIcon icon = qvariant_cast<QIcon>(model->index(i, 0).data(Qt::DecorationRole)); + QVERIFY(!icon.isNull()); + } + + // test moving up the list + qsidebar.setUrls(emptyUrls); + qsidebar.addUrls(urls, 100); + qsidebar.addUrls(moreUrls, 100); + QCOMPARE(model->rowCount(), 3); + qsidebar.addUrls(moreUrls, 1); + QCOMPARE(qsidebar.urls()[1], moreUrls[0]); + + // test appending with -1 + qsidebar.setUrls(emptyUrls); + qsidebar.addUrls(urls, -1); + qsidebar.addUrls(moreUrls, -1); + QCOMPARE(qsidebar.urls()[0], urls[0]); +} + +void tst_QSidebar::goToUrl() +{ + QList<QUrl> urls; + urls << QUrl::fromLocalFile(QDir::rootPath()) + << QUrl::fromLocalFile(QDir::temp().absolutePath()); + QFileSystemModel fsmodel; + QSidebar qsidebar; + qsidebar.init(&fsmodel, urls); + qsidebar.show(); + + QSignalSpy spy(&qsidebar, SIGNAL(goToUrl(const QUrl &))); + QTest::mousePress(qsidebar.viewport(), Qt::LeftButton, 0, qsidebar.visualRect(qsidebar.model()->index(0, 0)).center()); + QCOMPARE(spy.count(), 1); + QCOMPARE((spy.value(0)).at(0).toUrl(), urls.first()); +} + +QTEST_MAIN(tst_QSidebar) +#include "tst_qsidebar.moc" + |