ctkMessageBoxDontShowAgainTest.cpp 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582
  1. /*=========================================================================
  2. Library: CTK
  3. Copyright (c) Kitware Inc.
  4. Licensed under the Apache License, Version 2.0 (the "License");
  5. you may not use this file except in compliance with the License.
  6. You may obtain a copy of the License at
  7. http://www.apache.org/licenses/LICENSE-2.0.txt
  8. Unless required by applicable law or agreed to in writing, software
  9. distributed under the License is distributed on an "AS IS" BASIS,
  10. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  11. See the License for the specific language governing permissions and
  12. limitations under the License.
  13. =========================================================================*/
  14. // Qt includes
  15. #include <QApplication>
  16. #include <QCheckBox>
  17. #include <QSettings>
  18. #include <QStyle>
  19. #include <QTimer>
  20. // CTK includes
  21. #include "ctkMessageBox.h"
  22. #include "ctkTest.h"
  23. // STD includes
  24. #include <cstdlib>
  25. #include <iostream>
  26. Q_DECLARE_METATYPE(QMessageBox::StandardButton);
  27. Q_DECLARE_METATYPE(QMessageBox::ButtonRole);
  28. // ----------------------------------------------------------------------------
  29. class ctkMessageBoxDontShowAgainTester: public QObject
  30. {
  31. Q_OBJECT
  32. void testExecMessageBox(ctkMessageBox& messageBox);
  33. private Q_SLOTS:
  34. void initTestCase();
  35. void init();
  36. void cleanup();
  37. // Check default values of ctkMessageBox
  38. void testDefaults();
  39. // Ensure the "don't show again" checkbox works correctly with 1 button (Ok)
  40. void testDontShowAgain();
  41. void testDontShowAgain_data();
  42. // Ensure the "don't show again" checkbox works correctly with 2 buttons
  43. // Ok and Cancel
  44. void testOkCancel();
  45. void testOkCancel_data();
  46. // Ensure the "don't show again" checkbox works correctly with 2 buttons
  47. /// with custom text
  48. void testDontShowAgainCustomText();
  49. void testDontShowAgainCustomText_data();
  50. // Test Settings key with 1 button (Ok)
  51. void testDontShowAgainSettingsKey();
  52. void testDontShowAgainSettingsKey_data();
  53. // Test with 2 buttons (Ok and Cancel)
  54. void testDontShowAgainSettingsKeyOkCancel();
  55. void testDontShowAgainSettingsKeyOkCancel_data();
  56. // Check "Don't show again" before the the dialog is shown.
  57. // -> doesn't show the dialog.
  58. void testDontShowAgainSettingsKeySetDontShowAgain();
  59. void testDontShowAgainSettingsKeySetDontShowAgain_data();
  60. // After the dialog is shown, simulate a click on the
  61. // "don't show again" checkbox.
  62. void testDontShowAgainSettingsKeyClickDontShowAgain();
  63. void testDontShowAgainSettingsKeyClickDontShowAgain_data();
  64. // static utility function
  65. void testConfirmExit();
  66. void testConfirmExit_data();
  67. // test the visibility cases();
  68. void testVisible();
  69. //void testCustomButton();
  70. };
  71. // ----------------------------------------------------------------------------
  72. void ctkMessageBoxDontShowAgainTester::initTestCase()
  73. {
  74. // Setup QApplication for settings
  75. qApp->setOrganizationName("CommonToolKit");
  76. qApp->setOrganizationDomain("www.commontk.org");
  77. qApp->setApplicationName("CTK");
  78. }
  79. // ----------------------------------------------------------------------------
  80. void ctkMessageBoxDontShowAgainTester::init()
  81. {
  82. QSettings settings;
  83. settings.setValue("Show", int(QMessageBox::InvalidRole));
  84. settings.setValue("DontShowWithOkButton", int(QMessageBox::Ok));
  85. settings.setValue("DontShowWithAcceptRole", int(QMessageBox::AcceptRole));
  86. settings.setValue("DontShowWithCancelButton", int(QMessageBox::Cancel));
  87. settings.setValue("DontShowWithRejectRole", int(QMessageBox::RejectRole));
  88. }
  89. // ----------------------------------------------------------------------------
  90. void ctkMessageBoxDontShowAgainTester::cleanup()
  91. {
  92. QSettings settings;
  93. settings.clear();
  94. }
  95. // ----------------------------------------------------------------------------
  96. void ctkMessageBoxDontShowAgainTester::testDefaults()
  97. {
  98. ctkMessageBox messageBox;
  99. QCOMPARE(messageBox.isDontShowAgainVisible(), false);
  100. QCOMPARE(messageBox.dontShowAgain(), false);
  101. QCOMPARE(messageBox.dontShowAgainSettingsKey(), QString());
  102. QCOMPARE(messageBox.buttons().size(), 0);
  103. QCOMPARE(messageBox.standardButtons(), QMessageBox::NoButton);
  104. messageBox.show();
  105. qApp->processEvents();
  106. QCOMPARE(messageBox.buttons().size(), 1);
  107. QCOMPARE(messageBox.standardButtons(), QMessageBox::Ok);
  108. }
  109. // ----------------------------------------------------------------------------
  110. void ctkMessageBoxDontShowAgainTester::testExecMessageBox(ctkMessageBox& messageBox)
  111. {
  112. QFETCH(int, buttonOrRole);
  113. if (buttonOrRole != QMessageBox::InvalidRole)
  114. {
  115. if (messageBox.standardButtons() == QMessageBox::NoButton &&
  116. messageBox.buttons().size() == 0)
  117. {
  118. messageBox.addButton(QMessageBox::Ok);
  119. }
  120. if (messageBox.standardButtons() & buttonOrRole)
  121. {
  122. QAbstractButton* button = messageBox.button(
  123. static_cast<QMessageBox::StandardButton>(buttonOrRole));
  124. QVERIFY(button);
  125. QTimer::singleShot(0, button, SLOT(click()));
  126. }
  127. else
  128. {
  129. const char* slot = 0;
  130. if (buttonOrRole == QMessageBox::AcceptRole)
  131. {
  132. slot = SLOT(accept());
  133. }
  134. else if (buttonOrRole == QMessageBox::RejectRole)
  135. {
  136. slot = SLOT(reject());
  137. }
  138. QTimer::singleShot(0, &messageBox, slot);
  139. }
  140. }
  141. // shouldn't hang
  142. int execResult = messageBox.exec();
  143. QFETCH(int, result);
  144. QCOMPARE(execResult, result);
  145. QFETCH(QMessageBox::ButtonRole, resultRole);
  146. QCOMPARE(messageBox.buttonRole(messageBox.clickedButton()), resultRole);
  147. }
  148. // ----------------------------------------------------------------------------
  149. void ctkMessageBoxDontShowAgainTester::testDontShowAgain()
  150. {
  151. ctkMessageBox messageBox;
  152. QFETCH(bool, visible);
  153. messageBox.setDontShowAgainVisible(visible);
  154. QFETCH(bool, dontShowAgain);
  155. messageBox.setDontShowAgain(dontShowAgain);
  156. this->testExecMessageBox(messageBox);
  157. }
  158. // ----------------------------------------------------------------------------
  159. void ctkMessageBoxDontShowAgainTester::testDontShowAgain_data()
  160. {
  161. QTest::addColumn<bool>("visible");
  162. QTest::addColumn<bool>("dontShowAgain");
  163. QTest::addColumn<int>("buttonOrRole");
  164. QTest::addColumn<int>("result");
  165. QTest::addColumn<QMessageBox::ButtonRole>("resultRole");
  166. QTest::newRow("invisible dont show") << false << true << int(QMessageBox::InvalidRole) << int(QMessageBox::Ok) << QMessageBox::AcceptRole;
  167. QTest::newRow("visible dont show") << true << true << int(QMessageBox::InvalidRole) << int(QMessageBox::Ok) << QMessageBox::AcceptRole;
  168. QTest::newRow("invisible show click ok") << false << false << int(QMessageBox::Ok) << int(QMessageBox::Ok) << QMessageBox::AcceptRole;
  169. QTest::newRow("visible show click ok") << true << false << int(QMessageBox::Ok) << int(QMessageBox::Ok) << QMessageBox::AcceptRole;
  170. QTest::newRow("invisible show accept") << false << false << int(QMessageBox::AcceptRole) << int(QDialog::Accepted) << QMessageBox::InvalidRole;
  171. QTest::newRow("visible show accept") << true << false << int(QMessageBox::AcceptRole) << int(QDialog::Accepted) << QMessageBox::InvalidRole;
  172. }
  173. // ----------------------------------------------------------------------------
  174. void ctkMessageBoxDontShowAgainTester::testOkCancel()
  175. {
  176. ctkMessageBox messageBox;
  177. messageBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
  178. QFETCH(bool, visible);
  179. messageBox.setDontShowAgainVisible(visible);
  180. QFETCH(bool, dontShowAgain);
  181. messageBox.setDontShowAgain(dontShowAgain);
  182. this->testExecMessageBox(messageBox);
  183. }
  184. // ----------------------------------------------------------------------------
  185. void ctkMessageBoxDontShowAgainTester::testOkCancel_data()
  186. {
  187. this->testDontShowAgain_data();
  188. QTest::newRow("invisible show click cancel") << false << false << int(QMessageBox::Cancel) << int(QMessageBox::Cancel) << QMessageBox::RejectRole;
  189. QTest::newRow("visible show click cancel") << true << false << int(QMessageBox::Cancel) << int(QMessageBox::Cancel) << QMessageBox::RejectRole;
  190. QTest::newRow("invisible show reject") << false << false << int(QMessageBox::RejectRole) << int(QMessageBox::Rejected) << QMessageBox::InvalidRole;
  191. QTest::newRow("visible show click cancel") << true << false << int(QMessageBox::RejectRole) << int(QMessageBox::Rejected) << QMessageBox::InvalidRole;
  192. }
  193. // ----------------------------------------------------------------------------
  194. void ctkMessageBoxDontShowAgainTester::testDontShowAgainCustomText()
  195. {
  196. ctkMessageBox messageBox;
  197. messageBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
  198. QAbstractButton *okButton = messageBox.button(QMessageBox::Ok);
  199. okButton->setText("SaveData");
  200. QAbstractButton *cancelButton = messageBox.button(QMessageBox::Cancel);
  201. cancelButton->setText("Discard Data");
  202. QFETCH(bool, visible);
  203. messageBox.setDontShowAgainVisible(visible);
  204. QFETCH(bool, dontShowAgain);
  205. messageBox.setDontShowAgain(dontShowAgain);
  206. this->testExecMessageBox(messageBox);
  207. // check that the don't show again text has been updated
  208. QCheckBox *checkBox = messageBox.findChild<QCheckBox*>("ctk_msgbox_dontshowcheckbox");
  209. QString dontShowAgainText = checkBox->text();
  210. if (visible)
  211. {
  212. // the custom text was set from the Ok box as it has the accept role
  213. QString expectedString = QString("Don't show this message again and always ")
  214. + okButton->text();
  215. QCOMPARE(dontShowAgainText, expectedString);
  216. }
  217. else
  218. {
  219. // the custom text was not added to the end of the standard message
  220. QString expectedString = QString("Don't show this message again");
  221. QCOMPARE(dontShowAgainText, expectedString);
  222. }
  223. }
  224. // ----------------------------------------------------------------------------
  225. void ctkMessageBoxDontShowAgainTester::testDontShowAgainCustomText_data()
  226. {
  227. // use the basic test set up
  228. this->testDontShowAgain_data();
  229. }
  230. // ----------------------------------------------------------------------------
  231. void ctkMessageBoxDontShowAgainTester::testDontShowAgainSettingsKey()
  232. {
  233. ctkMessageBox messageBox;
  234. QFETCH(bool, visible);
  235. messageBox.setDontShowAgain(visible);
  236. QFETCH(QString, key);
  237. messageBox.setDontShowAgainSettingsKey(key);
  238. QCOMPARE(messageBox.dontShowAgainSettingsKey(), key);
  239. QFETCH(bool, dontShowAgain);
  240. QCOMPARE(messageBox.dontShowAgain(), dontShowAgain);
  241. this->testExecMessageBox(messageBox);
  242. QSettings settings;
  243. QFETCH(int, keyValue);
  244. QCOMPARE(settings.value(key).toInt(), keyValue);
  245. }
  246. // ----------------------------------------------------------------------------
  247. void ctkMessageBoxDontShowAgainTester::testDontShowAgainSettingsKey_data()
  248. {
  249. QTest::addColumn<bool>("visible");
  250. QTest::addColumn<QString>("key");
  251. QTest::addColumn<bool>("dontShowAgain");
  252. QTest::addColumn<int>("buttonOrRole");
  253. QTest::addColumn<int>("result");
  254. QTest::addColumn<QMessageBox::ButtonRole>("resultRole");
  255. QTest::addColumn<int>("keyValue");
  256. QTest::newRow("invisible NonExistingKey")
  257. << false << "NonExistingKey" << false << int(QMessageBox::Ok)
  258. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  259. << int(QMessageBox::InvalidRole);
  260. QTest::newRow("visible NonExistingKey")
  261. << true << "NonExistingKey" << false << int(QMessageBox::Ok)
  262. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  263. << int(QMessageBox::InvalidRole);
  264. QTest::newRow("invisible Show")
  265. << false << "Show" << false << int(QMessageBox::Ok)
  266. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  267. << int(QMessageBox::InvalidRole);
  268. QTest::newRow("visible Show")
  269. << true << "Show" << false << int(QMessageBox::Ok)
  270. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  271. << int(QMessageBox::InvalidRole);
  272. QTest::newRow("invisible DontShow Ok")
  273. << false << "DontShowWithOkButton" << true << int(QMessageBox::InvalidRole)
  274. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  275. << int(QMessageBox::Ok);
  276. QTest::newRow("visible DontShow Ok")
  277. << true << "DontShowWithOkButton" << true << int(QMessageBox::InvalidRole)
  278. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  279. << int(QMessageBox::Ok);
  280. QTest::newRow("invisible DontShow Accept")
  281. << false << "DontShowWithAcceptRole" << true << int(QMessageBox::InvalidRole)
  282. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  283. << int(QMessageBox::Ok);
  284. QTest::newRow("visible DontShow Accept")
  285. << true << "DontShowWithAcceptRole" << true << int(QMessageBox::InvalidRole)
  286. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  287. << int(QMessageBox::Ok);
  288. }
  289. // ----------------------------------------------------------------------------
  290. void ctkMessageBoxDontShowAgainTester::testDontShowAgainSettingsKeyOkCancel()
  291. {
  292. ctkMessageBox messageBox;
  293. messageBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
  294. QFETCH(bool, visible);
  295. messageBox.setDontShowAgain(visible);
  296. QFETCH(QString, key);
  297. messageBox.setDontShowAgainSettingsKey(key);
  298. QCOMPARE(messageBox.dontShowAgainSettingsKey(), key);
  299. QFETCH(bool, dontShowAgain);
  300. QCOMPARE(messageBox.dontShowAgain(), dontShowAgain);
  301. this->testExecMessageBox(messageBox);
  302. QSettings settings;
  303. QFETCH(int, keyValue);
  304. QCOMPARE(settings.value(key).toInt(), keyValue);
  305. }
  306. // ----------------------------------------------------------------------------
  307. void ctkMessageBoxDontShowAgainTester::testDontShowAgainSettingsKeyOkCancel_data()
  308. {
  309. this->testDontShowAgainSettingsKey_data();
  310. QTest::newRow("invisible DontShow Cancel")
  311. << false << "DontShowWithCancelButton" << true << int(QMessageBox::InvalidRole)
  312. << int(QMessageBox::Cancel) << QMessageBox::RejectRole
  313. << int(QMessageBox::Cancel);
  314. QTest::newRow("visible DontShow Cancel")
  315. << true << "DontShowWithCancelButton" << true << int(QMessageBox::InvalidRole)
  316. << int(QMessageBox::Cancel) << QMessageBox::RejectRole
  317. << int(QMessageBox::Cancel);
  318. QTest::newRow("invisible DontShow Reject")
  319. << false << "DontShowWithRejectRole" << true << int(QMessageBox::InvalidRole)
  320. << int(QMessageBox::Cancel) << QMessageBox::RejectRole
  321. << int(QMessageBox::RejectRole);
  322. QTest::newRow("visible DontShow Reject")
  323. << true << "DontShowWithRejectRole" << true << int(QMessageBox::InvalidRole)
  324. << int(QMessageBox::Cancel) << QMessageBox::RejectRole
  325. << int(QMessageBox::RejectRole);
  326. }
  327. // ----------------------------------------------------------------------------
  328. void ctkMessageBoxDontShowAgainTester::testDontShowAgainSettingsKeySetDontShowAgain()
  329. {
  330. ctkMessageBox messageBox;
  331. messageBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
  332. QFETCH(QString, key);
  333. messageBox.setDontShowAgainSettingsKey(key);
  334. QCOMPARE(messageBox.dontShowAgainSettingsKey(), key);
  335. QFETCH(bool, dontShowAgain);
  336. messageBox.setDontShowAgain(dontShowAgain);
  337. this->testExecMessageBox(messageBox);
  338. QSettings settings;
  339. QFETCH(int, keyValue);
  340. QCOMPARE(settings.value(key).toInt(), keyValue);
  341. }
  342. // ----------------------------------------------------------------------------
  343. void ctkMessageBoxDontShowAgainTester::testDontShowAgainSettingsKeySetDontShowAgain_data()
  344. {
  345. QTest::addColumn<QString>("key");
  346. QTest::addColumn<bool>("dontShowAgain");
  347. QTest::addColumn<int>("buttonOrRole");
  348. QTest::addColumn<int>("result");
  349. QTest::addColumn<QMessageBox::ButtonRole>("resultRole");
  350. QTest::addColumn<int>("keyValue");
  351. // Doesn't have time to click on anything, the dialog is already skipped
  352. QTest::newRow("NonExistingKey dont show again")
  353. << "NonExistingKey" << true << int(QMessageBox::InvalidRole)
  354. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  355. << int(QMessageBox::Ok);
  356. QTest::newRow("Show dont show again accept")
  357. << "Show" << true << int(QMessageBox::InvalidRole)
  358. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  359. << int(QMessageBox::Ok);
  360. QTest::newRow("NonExistingKey show again accept")
  361. << "NonExistingKey" << false << int(QMessageBox::Ok)
  362. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  363. << int(QMessageBox::InvalidRole);
  364. // ctkMessageBox never write the settings.
  365. QTest::newRow("NonExistingKey show again reject")
  366. << "NonExistingKey" << false << int(QMessageBox::Cancel)
  367. << int(QMessageBox::Cancel) << QMessageBox::RejectRole
  368. << QVariant().toInt();
  369. QTest::newRow("Show show again accept")
  370. << "Show" << false << int(QMessageBox::Ok)
  371. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  372. << int(QMessageBox::InvalidRole);
  373. // ctkMessageBox never write the settings but the settings exists.
  374. QTest::newRow("Show dont show reject")
  375. << "Show" << false << int(QMessageBox::Cancel)
  376. << int(QMessageBox::Cancel) << QMessageBox::RejectRole
  377. << int(QMessageBox::InvalidRole);
  378. QTest::newRow("Show show again accept")
  379. << "DontShowWithOkButton" << false << int(QMessageBox::Ok)
  380. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  381. << int(QMessageBox::InvalidRole);
  382. QTest::newRow("Show dont show reject")
  383. << "DontShowWithOkButton" << false << int(QMessageBox::Cancel)
  384. << int(QMessageBox::Cancel) << QMessageBox::RejectRole
  385. << int(QMessageBox::Ok);
  386. }
  387. // ----------------------------------------------------------------------------
  388. void ctkMessageBoxDontShowAgainTester::testDontShowAgainSettingsKeyClickDontShowAgain()
  389. {
  390. ctkMessageBox messageBox;
  391. messageBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
  392. QFETCH(QString, key);
  393. messageBox.setDontShowAgainSettingsKey(key);
  394. QCOMPARE(messageBox.dontShowAgainSettingsKey(), key);
  395. QFETCH(bool, dontShowAgain);
  396. QCheckBox* checkBox =
  397. messageBox.findChild<QCheckBox*>("ctk_msgbox_dontshowcheckbox");
  398. QMetaObject::invokeMethod(checkBox, "setChecked", Qt::QueuedConnection,
  399. Q_ARG(bool, dontShowAgain));
  400. this->testExecMessageBox(messageBox);
  401. QSettings settings;
  402. QFETCH(int, keyValue);
  403. QCOMPARE(settings.value(key).toInt(), keyValue);
  404. }
  405. // ----------------------------------------------------------------------------
  406. void ctkMessageBoxDontShowAgainTester::testDontShowAgainSettingsKeyClickDontShowAgain_data()
  407. {
  408. QTest::addColumn<QString>("key");
  409. QTest::addColumn<bool>("dontShowAgain");
  410. QTest::addColumn<int>("buttonOrRole");
  411. QTest::addColumn<int>("result");
  412. QTest::addColumn<QMessageBox::ButtonRole>("resultRole");
  413. QTest::addColumn<int>("keyValue");
  414. QTest::newRow("NonExistingKey dont show again ok")
  415. << "NonExistingKey" << true << int(QMessageBox::Ok)
  416. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  417. << int(QMessageBox::Ok);
  418. QTest::newRow("NonExistingKey dont show again cancel")
  419. << "NonExistingKey" << true << int(QMessageBox::Cancel)
  420. << int(QMessageBox::Cancel) << QMessageBox::RejectRole
  421. << QVariant().toInt();
  422. QTest::newRow("Show dont show again accept")
  423. << "Show" << true << int(QMessageBox::Ok)
  424. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  425. << int(QMessageBox::Ok);
  426. QTest::newRow("Show dont show again cancel")
  427. << "Show" << true << int(QMessageBox::Cancel)
  428. << int(QMessageBox::Cancel) << QMessageBox::RejectRole
  429. << int(QMessageBox::InvalidRole);
  430. QTest::newRow("NonExistingKey show again accept")
  431. << "NonExistingKey" << false << int(QMessageBox::Ok)
  432. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  433. << int(QMessageBox::InvalidRole);
  434. QTest::newRow("NonExistingKey show again reject")
  435. << "NonExistingKey" << false << int(QMessageBox::Cancel)
  436. << int(QMessageBox::Cancel) << QMessageBox::RejectRole
  437. << QVariant().toInt();
  438. QTest::newRow("Show show again accept")
  439. << "Show" << false << int(QMessageBox::Ok)
  440. << int(QMessageBox::Ok) << QMessageBox::AcceptRole
  441. << int(QMessageBox::InvalidRole);
  442. QTest::newRow("Show dont show reject")
  443. << "Show" << false << int(QMessageBox::Cancel)
  444. << int(QMessageBox::Cancel) << QMessageBox::RejectRole
  445. << int(QMessageBox::InvalidRole);
  446. }
  447. // ----------------------------------------------------------------------------
  448. void ctkMessageBoxDontShowAgainTester::testConfirmExit()
  449. {
  450. QFETCH(QString, key);
  451. bool res = ctkMessageBox::confirmExit(key);
  452. QFETCH(bool, expectedRes);
  453. QCOMPARE(res, expectedRes);
  454. }
  455. // ----------------------------------------------------------------------------
  456. void ctkMessageBoxDontShowAgainTester::testConfirmExit_data()
  457. {
  458. QTest::addColumn<QString>("key");
  459. QTest::addColumn<bool>("expectedRes");
  460. QTest::newRow("DontShowWithOkButton") << "DontShowWithOkButton" << true;
  461. QTest::newRow("DontShowWithAcceptRole") << "DontShowWithAcceptRole" << true;
  462. QTest::newRow("DontShowWithCancelButton") << "DontShowWithCancelButton" << false;
  463. QTest::newRow("DontShowWithRejectRole") << "DontShowWithRejectRole" << false;
  464. }
  465. // ----------------------------------------------------------------------------
  466. void ctkMessageBoxDontShowAgainTester::testVisible()
  467. {
  468. ctkMessageBox messageBox;
  469. QCOMPARE(messageBox.isDontShowAgainVisible(), false);
  470. messageBox.setDontShowAgainSettingsKey("Non Empty key");
  471. QCOMPARE(messageBox.isDontShowAgainVisible(), true);
  472. messageBox.setDontShowAgainSettingsKey(QString());
  473. QCOMPARE(messageBox.isDontShowAgainVisible(), false);
  474. }
  475. // ----------------------------------------------------------------------------
  476. CTK_TEST_MAIN(ctkMessageBoxDontShowAgainTest)
  477. #include "moc_ctkMessageBoxDontShowAgainTest.cpp"