File indexing completed on 2024-05-12 16:23:40
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Jonah BrĂ¼chert <jbb@kaidan.im> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 #include <QtTest/QTest> 0008 0009 #include "tabsmodel.h" 0010 0011 class TabsModelTest : public QObject 0012 { 0013 Q_OBJECT 0014 0015 private Q_SLOTS: 0016 void initTestCase() 0017 { 0018 m_tabsModel = new TabsModel(); 0019 } 0020 0021 void testInitialTabExists() 0022 { 0023 QCOMPARE(m_tabsModel->tabs().size(), 1); 0024 0025 // Current tab should be initial tab 0026 QCOMPARE(m_tabsModel->currentTab(), 0); 0027 QCOMPARE(m_tabsModel->tab(0).url(), QUrl(QStringLiteral("about:blank"))); 0028 } 0029 0030 void testNewTab() 0031 { 0032 m_tabsModel->newTab(QUrl(QStringLiteral("https://kde.org"))); 0033 QCOMPARE(m_tabsModel->tabs().size(), 2); 0034 0035 qDebug() << m_tabsModel->tab(1).url() << m_tabsModel->tab(0).isMobile(); 0036 QCOMPARE(m_tabsModel->tab(1).url(), QUrl(QStringLiteral("https://kde.org"))); 0037 0038 // newly created tab should be current tab now 0039 QCOMPARE(m_tabsModel->currentTab(), 1); 0040 } 0041 0042 void testCurrentTab() 0043 { 0044 QCOMPARE(m_tabsModel->tabs().at(m_tabsModel->currentTab()).url(), QUrl(QStringLiteral("https://kde.org"))); 0045 } 0046 0047 void testCloseTab() { 0048 // Close initial tab, keep kde.org one 0049 m_tabsModel->closeTab(0); 0050 QCOMPARE(m_tabsModel->tabs().size(), 1); 0051 0052 // Check tabs moved properly 0053 QCOMPARE(m_tabsModel->tabs().at(0).url(), QUrl(QStringLiteral("https://kde.org"))); 0054 } 0055 0056 void testLoad() { 0057 m_tabsModel->setUrl(0, QUrl(QStringLiteral("https://debian.org"))); 0058 0059 // Number of tabs must not change 0060 QCOMPARE(m_tabsModel->tabs().size(), 1); 0061 0062 QCOMPARE(m_tabsModel->tabs().at(0).url(), QUrl(QStringLiteral("https://debian.org"))); 0063 } 0064 0065 void testRowCountMatches() { 0066 QCOMPARE(m_tabsModel->tabs().size(), m_tabsModel->rowCount()); 0067 } 0068 0069 void testCloseCurrentTab() { 0070 // 0071 // Case 1: There is only one tab, a new one should be created 0072 // 0073 QCOMPARE(m_tabsModel->tabs().size(), 1); 0074 m_tabsModel->setCurrentTab(0); 0075 m_tabsModel->closeTab(0); 0076 0077 // Check whether a new empty tab was created (count must not be less than one) 0078 QCOMPARE(m_tabsModel->tabs().size(), 1); 0079 QCOMPARE(m_tabsModel->tabs().at(0).url(), QUrl(QStringLiteral("about:blank"))); 0080 0081 // 0082 // Case 2: There are multiple tabs 0083 // 0084 m_tabsModel->newTab(QUrl(QStringLiteral("second"))); 0085 m_tabsModel->newTab(QUrl(QStringLiteral("third"))); 0086 0087 QCOMPARE(m_tabsModel->tabs(), std::vector<TabState>({ 0088 TabState(QUrl(QStringLiteral("about:blank")), m_tabsModel->isMobileDefault()), 0089 TabState(QUrl(QStringLiteral("second")), m_tabsModel->isMobileDefault()), 0090 TabState(QUrl(QStringLiteral("third")), m_tabsModel->isMobileDefault()) 0091 })); 0092 0093 // current tab is 2 0094 // close tab "second" 0095 m_tabsModel->closeTab(1); 0096 // current tab should now be 0, since we reset to first tab if the current tab is closed 0097 QCOMPARE(m_tabsModel->currentTab(), 0); 0098 0099 // "second" is indeed gone 0100 QCOMPARE(m_tabsModel->tabs(), std::vector<TabState>({ 0101 TabState(QUrl(QStringLiteral("about:blank")), m_tabsModel->isMobileDefault()), 0102 TabState(QUrl(QStringLiteral("third")), m_tabsModel->isMobileDefault()) 0103 })); 0104 } 0105 0106 void testSetTab() { 0107 m_tabsModel->setUrl(0, QUrl(QStringLiteral("https://debian.org"))); 0108 QCOMPARE(m_tabsModel->tabs(), std::vector<TabState>({ 0109 TabState(QUrl(QStringLiteral("https://debian.org")), m_tabsModel->isMobileDefault()), 0110 TabState(QUrl(QStringLiteral("third")), m_tabsModel->isMobileDefault())} 0111 )); 0112 } 0113 0114 void testPrivateMode() { 0115 // private mode is off by default 0116 QCOMPARE(m_tabsModel->privateMode(), false); 0117 0118 m_tabsModel->setPrivateMode(true); 0119 QCOMPARE(m_tabsModel->privateMode(), true); 0120 0121 m_tabsModel->setPrivateMode(false); 0122 QCOMPARE(m_tabsModel->privateMode(), false); 0123 } 0124 private: 0125 TabsModel *m_tabsModel; 0126 }; 0127 0128 QTEST_GUILESS_MAIN(TabsModelTest); 0129 0130 #include "tabsmodeltest.moc"