Warning, file /graphics/okular/autotests/toggleactionmenutest.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2020 David Hurka <david.hurka@mailbox.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include <QTest> 0008 0009 #include "../part/toggleactionmenu.h" 0010 #include <QToolBar> 0011 0012 class ToggleActionMenuTest : public QObject 0013 { 0014 Q_OBJECT 0015 0016 private Q_SLOTS: 0017 void testSetDefaultAction(); 0018 void testDeleteToolBarButton(); 0019 }; 0020 0021 void ToggleActionMenuTest::testSetDefaultAction() 0022 { 0023 QToolBar dummyToolBar; 0024 ToggleActionMenu menu(QStringLiteral("Menu"), this); 0025 QAction *actionA = new QAction(QStringLiteral("A"), this); 0026 QAction *actionB = new QAction(QStringLiteral("B"), this); 0027 0028 // Do not set a default action, the menu should behave as plain KActionMenu. 0029 QCOMPARE(menu.defaultAction(), &menu); 0030 QToolButton *menuButton = qobject_cast<QToolButton *>(menu.createWidget(&dummyToolBar)); 0031 QVERIFY(menuButton); 0032 QCOMPARE(menuButton->defaultAction(), &menu); 0033 0034 // Should still behave as plain KActionMenu when actions are added. 0035 menu.addAction(actionA); 0036 QCOMPARE(menu.defaultAction(), &menu); 0037 QCOMPARE(menuButton->defaultAction(), &menu); 0038 0039 // Set an action from the menu as default action, should work. 0040 menu.setDefaultAction(actionA); 0041 QCOMPARE(menu.defaultAction(), actionA); 0042 QCOMPARE(menuButton->defaultAction(), actionA); 0043 0044 // Set a foreign action as default action, should reset the default action. 0045 menu.setDefaultAction(actionB); 0046 QCOMPARE(menu.defaultAction(), &menu); 0047 QCOMPARE(menuButton->defaultAction(), &menu); 0048 0049 // Set an action of the menu as default action, should work. 0050 menu.setDefaultAction(actionA); 0051 QCOMPARE(menu.defaultAction(), actionA); 0052 QCOMPARE(menuButton->defaultAction(), actionA); 0053 0054 // Remove default action from menu, should reset the default action. 0055 menu.removeAction(actionA); 0056 QCOMPARE(menu.defaultAction(), &menu); 0057 QCOMPARE(menuButton->defaultAction(), &menu); 0058 } 0059 0060 void ToggleActionMenuTest::testDeleteToolBarButton() 0061 { 0062 QToolBar dummyToolBar; 0063 ToggleActionMenu menu(QStringLiteral("Menu"), this); 0064 QAction *actionA = new QAction(QStringLiteral("A"), this); 0065 QAction *actionB = new QAction(QStringLiteral("B"), this); 0066 0067 // Setup: set a default action and create two toolbar buttons. 0068 menu.addAction(actionA); 0069 menu.addAction(actionB); 0070 menu.setDefaultAction(actionA); 0071 QToolButton *menuButtonA = qobject_cast<QToolButton *>(menu.createWidget(&dummyToolBar)); 0072 QVERIFY(menuButtonA); 0073 QCOMPARE(menuButtonA->defaultAction(), actionA); 0074 QToolButton *menuButtonB = qobject_cast<QToolButton *>(menu.createWidget(&dummyToolBar)); 0075 QVERIFY(menuButtonB); 0076 0077 // Delete button B, and set a new default action. Button A shall be updated without segfaulting on the deleted button B. 0078 delete menuButtonB; 0079 menu.setDefaultAction(actionB); 0080 QCOMPARE(menuButtonA->defaultAction(), actionB); 0081 } 0082 0083 QTEST_MAIN(ToggleActionMenuTest) 0084 0085 #include "toggleactionmenutest.moc"