File indexing completed on 2024-05-05 04:35:29
0001 /* 0002 * This file is part of KDevelop Krazy2 Plugin. 0003 * 0004 * Copyright 2012 Daniel Calviño Sánchez <danxuliu@gmail.com> 0005 * 0006 * This program is free software; you can redistribute it and/or 0007 * modify it under the terms of the GNU General Public License 0008 * as published by the Free Software Foundation; either version 2 0009 * of the License, or (at your option) any later version. 0010 * 0011 * This program is distributed in the hope that it will be useful, 0012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0014 * GNU General Public License for more details. 0015 * 0016 * You should have received a copy of the GNU General Public License 0017 * along with this program. If not, see <http://www.gnu.org/licenses/>. 0018 */ 0019 0020 #include <QTest> 0021 0022 #include <QTreeView> 0023 0024 #include <QPushButton> 0025 0026 #include "../settings/selectcheckerswidget.h" 0027 #include "../checker.h" 0028 0029 class SelectCheckersWidgetTest: public QObject { 0030 Q_OBJECT 0031 private slots: 0032 0033 void init(); 0034 void cleanup(); 0035 0036 void testConstructor(); 0037 0038 void testSetCheckers(); 0039 0040 void testAddSingleChecker(); 0041 void testAddSeveralCheckers(); 0042 0043 void testSelectFileTypeToAdd(); 0044 void testSelectExtraHeaderToAdd(); 0045 0046 void testAddSeveralCheckersWithFileTypeAndExtraHeaderSelected(); 0047 0048 void testRemoveSingleChecker(); 0049 void testRemoveSeveralCheckers(); 0050 0051 void testSelectFileTypeToRemove(); 0052 void testSelectExtraHeaderToRemove(); 0053 0054 void testRemoveSeveralCheckersWithFileTypeAndExtraHeaderSelected(); 0055 0056 private: 0057 0058 Checker* m_checker1_1; 0059 Checker* m_extraChecker1_1; 0060 Checker* m_checker2_1; 0061 Checker* m_checker2_2; 0062 Checker* m_checker2_3; 0063 Checker* m_extraChecker2_1; 0064 Checker* m_extraChecker2_2; 0065 Checker* m_extraChecker2_3; 0066 Checker* m_checker3_1; 0067 Checker* m_extraChecker4_1; 0068 0069 QList<const Checker*> m_availableCheckers; 0070 0071 Checker* newChecker(const QString& fileType, const QString& name, 0072 const QString& description = "", bool extra = false) const; 0073 0074 QTreeView* otherAvailableCheckersView(const SelectCheckersWidget* widget) const; 0075 QTreeView* checkersToRunView(const SelectCheckersWidget* widget) const; 0076 QPushButton* addButton(const SelectCheckersWidget* widget) const; 0077 QPushButton* removeButton(const SelectCheckersWidget* widget) const; 0078 0079 void select(QTreeView* view, const QString& rows, 0080 QItemSelectionModel::SelectionFlags command); 0081 0082 }; 0083 0084 void SelectCheckersWidgetTest::init() { 0085 m_checker1_1 = newChecker("fileType1", "checker1-1Name", "checker1-1Description"); 0086 m_availableCheckers.append(m_checker1_1); 0087 m_extraChecker1_1 = newChecker("fileType1", "extraChecker1-1Name", "extraChecker1-1Description", true); 0088 m_availableCheckers.append(m_extraChecker1_1); 0089 m_checker2_1 = newChecker("fileType2", "checker2-1Name", "checker2-1Description"); 0090 m_availableCheckers.append(m_checker2_1); 0091 m_checker2_2 = newChecker("fileType2", "checker2-2Name", "checker2-2Description"); 0092 m_availableCheckers.append(m_checker2_2); 0093 m_checker2_3 = newChecker("fileType2", "checker2-3Name", "checker2-3Description"); 0094 m_availableCheckers.append(m_checker2_3); 0095 m_extraChecker2_1 = newChecker("fileType2", "extraChecker2-1Name", "extraChecker2-1Description", true); 0096 m_availableCheckers.append(m_extraChecker2_1); 0097 m_extraChecker2_2 = newChecker("fileType2", "extraChecker2-2Name", "extraChecker2-2Description", true); 0098 m_availableCheckers.append(m_extraChecker2_2); 0099 m_extraChecker2_3 = newChecker("fileType2", "extraChecker2-3Name", "extraChecker2-3Description", true); 0100 m_availableCheckers.append(m_extraChecker2_3); 0101 m_checker3_1 = newChecker("fileType3", "checker3-1Name", "checker3-1Description"); 0102 m_availableCheckers.append(m_checker3_1); 0103 m_extraChecker4_1 = newChecker("fileType4", "extraChecker4-1Name", "extraChecker4-1Description", true); 0104 m_availableCheckers.append(m_extraChecker4_1); 0105 } 0106 0107 void SelectCheckersWidgetTest::cleanup() { 0108 qDeleteAll(m_availableCheckers); 0109 m_availableCheckers.clear(); 0110 } 0111 0112 void SelectCheckersWidgetTest::testConstructor() { 0113 QWidget parent; 0114 SelectCheckersWidget widget(&parent); 0115 0116 QCOMPARE(widget.parent(), &parent); 0117 QVERIFY(!otherAvailableCheckersView(&widget)->isEnabled()); 0118 QVERIFY(!checkersToRunView(&widget)->isEnabled()); 0119 QVERIFY(!addButton(&widget)->isEnabled()); 0120 QVERIFY(!removeButton(&widget)->isEnabled()); 0121 } 0122 0123 void SelectCheckersWidgetTest::testSetCheckers() { 0124 QList<const Checker*> checkersToRun; 0125 checkersToRun.append(m_checker2_2); 0126 checkersToRun.append(m_extraChecker2_1); 0127 checkersToRun.append(m_checker3_1); 0128 0129 SelectCheckersWidget widget; 0130 widget.setCheckers(m_availableCheckers, checkersToRun); 0131 0132 QVERIFY(otherAvailableCheckersView(&widget)->isEnabled()); 0133 QVERIFY(checkersToRunView(&widget)->isEnabled()); 0134 QVERIFY(!addButton(&widget)->isEnabled()); 0135 QVERIFY(!removeButton(&widget)->isEnabled()); 0136 } 0137 0138 void SelectCheckersWidgetTest::testAddSingleChecker() { 0139 QList<const Checker*> checkersToRun; 0140 checkersToRun.append(m_checker2_2); 0141 checkersToRun.append(m_extraChecker2_1); 0142 checkersToRun.append(m_checker3_1); 0143 0144 SelectCheckersWidget widget; 0145 widget.setCheckers(m_availableCheckers, checkersToRun); 0146 0147 QVERIFY(!addButton(&widget)->isEnabled()); 0148 0149 //checker2_1 0150 select(otherAvailableCheckersView(&widget), "1-0", QItemSelectionModel::SelectCurrent); 0151 0152 QVERIFY(addButton(&widget)->isEnabled()); 0153 0154 addButton(&widget)->click(); 0155 0156 QVERIFY(!addButton(&widget)->isEnabled()); 0157 0158 checkersToRun = widget.checkersToRun(); 0159 QCOMPARE(checkersToRun.count(), 4); 0160 QVERIFY(checkersToRun.contains(m_checker2_1)); 0161 QVERIFY(checkersToRun.contains(m_checker2_2)); 0162 QVERIFY(checkersToRun.contains(m_extraChecker2_1)); 0163 QVERIFY(checkersToRun.contains(m_checker3_1)); 0164 0165 //checker2_3 0166 select(otherAvailableCheckersView(&widget), "1-0", QItemSelectionModel::SelectCurrent); 0167 0168 QVERIFY(addButton(&widget)->isEnabled()); 0169 0170 addButton(&widget)->click(); 0171 0172 QVERIFY(!addButton(&widget)->isEnabled()); 0173 0174 checkersToRun = widget.checkersToRun(); 0175 QCOMPARE(checkersToRun.count(), 5); 0176 QVERIFY(checkersToRun.contains(m_checker2_1)); 0177 QVERIFY(checkersToRun.contains(m_checker2_2)); 0178 QVERIFY(checkersToRun.contains(m_checker2_3)); 0179 QVERIFY(checkersToRun.contains(m_extraChecker2_1)); 0180 QVERIFY(checkersToRun.contains(m_checker3_1)); 0181 } 0182 0183 void SelectCheckersWidgetTest::testAddSeveralCheckers() { 0184 QList<const Checker*> checkersToRun; 0185 checkersToRun.append(m_checker2_2); 0186 checkersToRun.append(m_extraChecker2_1); 0187 checkersToRun.append(m_checker3_1); 0188 0189 SelectCheckersWidget widget; 0190 widget.setCheckers(m_availableCheckers, checkersToRun); 0191 0192 QVERIFY(!addButton(&widget)->isEnabled()); 0193 0194 //checker2_1 0195 select(otherAvailableCheckersView(&widget), "1-0", QItemSelectionModel::Select); 0196 //extraChecker2_2 0197 select(otherAvailableCheckersView(&widget), "1-2-0", QItemSelectionModel::Select); 0198 //checker1_1 0199 select(otherAvailableCheckersView(&widget), "0-0", QItemSelectionModel::Select); 0200 0201 QVERIFY(addButton(&widget)->isEnabled()); 0202 0203 addButton(&widget)->click(); 0204 0205 QVERIFY(!addButton(&widget)->isEnabled()); 0206 0207 checkersToRun = widget.checkersToRun(); 0208 QCOMPARE(checkersToRun.count(), 6); 0209 QVERIFY(checkersToRun.contains(m_checker1_1)); 0210 QVERIFY(checkersToRun.contains(m_checker2_1)); 0211 QVERIFY(checkersToRun.contains(m_checker2_2)); 0212 QVERIFY(checkersToRun.contains(m_extraChecker2_1)); 0213 QVERIFY(checkersToRun.contains(m_extraChecker2_2)); 0214 QVERIFY(checkersToRun.contains(m_checker3_1)); 0215 0216 //checker2_3 0217 select(otherAvailableCheckersView(&widget), "1-0", QItemSelectionModel::Select); 0218 //extraChecker2_3 0219 select(otherAvailableCheckersView(&widget), "1-1-0", QItemSelectionModel::Select); 0220 0221 QVERIFY(addButton(&widget)->isEnabled()); 0222 0223 addButton(&widget)->click(); 0224 0225 QVERIFY(!addButton(&widget)->isEnabled()); 0226 0227 checkersToRun = widget.checkersToRun(); 0228 QCOMPARE(checkersToRun.count(), 8); 0229 QVERIFY(checkersToRun.contains(m_checker1_1)); 0230 QVERIFY(checkersToRun.contains(m_checker2_1)); 0231 QVERIFY(checkersToRun.contains(m_checker2_2)); 0232 QVERIFY(checkersToRun.contains(m_checker2_3)); 0233 QVERIFY(checkersToRun.contains(m_extraChecker2_1)); 0234 QVERIFY(checkersToRun.contains(m_extraChecker2_2)); 0235 QVERIFY(checkersToRun.contains(m_extraChecker2_3)); 0236 QVERIFY(checkersToRun.contains(m_checker3_1)); 0237 } 0238 0239 void SelectCheckersWidgetTest::testSelectFileTypeToAdd() { 0240 QList<const Checker*> checkersToRun; 0241 0242 SelectCheckersWidget widget; 0243 widget.setCheckers(m_availableCheckers, checkersToRun); 0244 0245 QVERIFY(!addButton(&widget)->isEnabled()); 0246 QVERIFY(!removeButton(&widget)->isEnabled()); 0247 0248 //fileType2 0249 select(otherAvailableCheckersView(&widget), "1", QItemSelectionModel::SelectCurrent); 0250 0251 QVERIFY(!addButton(&widget)->isEnabled()); 0252 QVERIFY(!removeButton(&widget)->isEnabled()); 0253 0254 //checker2_1 0255 select(otherAvailableCheckersView(&widget), "1-0", QItemSelectionModel::SelectCurrent); 0256 0257 QVERIFY(addButton(&widget)->isEnabled()); 0258 QVERIFY(!removeButton(&widget)->isEnabled()); 0259 0260 //fileType2 0261 select(otherAvailableCheckersView(&widget), "1", QItemSelectionModel::SelectCurrent); 0262 0263 QVERIFY(!addButton(&widget)->isEnabled()); 0264 QVERIFY(!removeButton(&widget)->isEnabled()); 0265 } 0266 0267 void SelectCheckersWidgetTest::testSelectExtraHeaderToAdd() { 0268 QList<const Checker*> checkersToRun; 0269 0270 SelectCheckersWidget widget; 0271 widget.setCheckers(m_availableCheckers, checkersToRun); 0272 0273 QVERIFY(!addButton(&widget)->isEnabled()); 0274 QVERIFY(!removeButton(&widget)->isEnabled()); 0275 0276 //extraHeader2 0277 select(otherAvailableCheckersView(&widget), "1-3", QItemSelectionModel::SelectCurrent); 0278 0279 QVERIFY(!addButton(&widget)->isEnabled()); 0280 QVERIFY(!removeButton(&widget)->isEnabled()); 0281 0282 //extraChecker2_1 0283 select(otherAvailableCheckersView(&widget), "1-3-0", QItemSelectionModel::SelectCurrent); 0284 0285 QVERIFY(addButton(&widget)->isEnabled()); 0286 QVERIFY(!removeButton(&widget)->isEnabled()); 0287 0288 //extraHeader2 0289 select(otherAvailableCheckersView(&widget), "1-3", QItemSelectionModel::SelectCurrent); 0290 0291 QVERIFY(!addButton(&widget)->isEnabled()); 0292 QVERIFY(!removeButton(&widget)->isEnabled()); 0293 } 0294 0295 void SelectCheckersWidgetTest::testAddSeveralCheckersWithFileTypeAndExtraHeaderSelected() { 0296 QList<const Checker*> checkersToRun; 0297 checkersToRun.append(m_checker2_2); 0298 checkersToRun.append(m_extraChecker2_1); 0299 checkersToRun.append(m_checker3_1); 0300 0301 SelectCheckersWidget widget; 0302 widget.setCheckers(m_availableCheckers, checkersToRun); 0303 0304 QVERIFY(!addButton(&widget)->isEnabled()); 0305 0306 //fileType2 0307 select(otherAvailableCheckersView(&widget), "1", QItemSelectionModel::Select); 0308 //checker2_1 0309 select(otherAvailableCheckersView(&widget), "1-0", QItemSelectionModel::Select); 0310 0311 QVERIFY(addButton(&widget)->isEnabled()); 0312 0313 addButton(&widget)->click(); 0314 0315 QVERIFY(!addButton(&widget)->isEnabled()); 0316 0317 checkersToRun = widget.checkersToRun(); 0318 QCOMPARE(checkersToRun.count(), 4); 0319 QVERIFY(checkersToRun.contains(m_checker2_1)); 0320 QVERIFY(checkersToRun.contains(m_checker2_2)); 0321 QVERIFY(checkersToRun.contains(m_extraChecker2_1)); 0322 QVERIFY(checkersToRun.contains(m_checker3_1)); 0323 0324 //checker1_1 0325 select(otherAvailableCheckersView(&widget), "0-0", QItemSelectionModel::Select); 0326 //checker2_3 0327 select(otherAvailableCheckersView(&widget), "1-0", QItemSelectionModel::Select); 0328 //extraHeader2 0329 select(otherAvailableCheckersView(&widget), "1-1", QItemSelectionModel::Select); 0330 0331 QVERIFY(addButton(&widget)->isEnabled()); 0332 0333 addButton(&widget)->click(); 0334 0335 QVERIFY(!addButton(&widget)->isEnabled()); 0336 0337 checkersToRun = widget.checkersToRun(); 0338 QCOMPARE(checkersToRun.count(), 6); 0339 QVERIFY(checkersToRun.contains(m_checker1_1)); 0340 QVERIFY(checkersToRun.contains(m_checker2_1)); 0341 QVERIFY(checkersToRun.contains(m_checker2_2)); 0342 QVERIFY(checkersToRun.contains(m_checker2_3)); 0343 QVERIFY(checkersToRun.contains(m_extraChecker2_1)); 0344 QVERIFY(checkersToRun.contains(m_checker3_1)); 0345 } 0346 0347 void SelectCheckersWidgetTest::testRemoveSingleChecker() { 0348 QList<const Checker*> checkersToRun; 0349 checkersToRun.append(m_checker2_1); 0350 checkersToRun.append(m_checker2_2); 0351 checkersToRun.append(m_checker2_3); 0352 checkersToRun.append(m_extraChecker2_1); 0353 checkersToRun.append(m_checker3_1); 0354 0355 SelectCheckersWidget widget; 0356 widget.setCheckers(m_availableCheckers, checkersToRun); 0357 0358 QVERIFY(!removeButton(&widget)->isEnabled()); 0359 0360 //checker2_2 0361 select(checkersToRunView(&widget), "0-1", QItemSelectionModel::SelectCurrent); 0362 0363 QVERIFY(removeButton(&widget)->isEnabled()); 0364 0365 removeButton(&widget)->click(); 0366 0367 QVERIFY(!removeButton(&widget)->isEnabled()); 0368 0369 checkersToRun = widget.checkersToRun(); 0370 QCOMPARE(checkersToRun.count(), 4); 0371 QVERIFY(checkersToRun.contains(m_checker2_1)); 0372 QVERIFY(checkersToRun.contains(m_checker2_3)); 0373 QVERIFY(checkersToRun.contains(m_extraChecker2_1)); 0374 QVERIFY(checkersToRun.contains(m_checker3_1)); 0375 0376 //checker2_3 0377 select(checkersToRunView(&widget), "0-1", QItemSelectionModel::SelectCurrent); 0378 0379 QVERIFY(removeButton(&widget)->isEnabled()); 0380 0381 removeButton(&widget)->click(); 0382 0383 QVERIFY(!removeButton(&widget)->isEnabled()); 0384 0385 checkersToRun = widget.checkersToRun(); 0386 QCOMPARE(checkersToRun.count(), 3); 0387 QVERIFY(checkersToRun.contains(m_checker2_1)); 0388 QVERIFY(checkersToRun.contains(m_extraChecker2_1)); 0389 QVERIFY(checkersToRun.contains(m_checker3_1)); 0390 } 0391 0392 void SelectCheckersWidgetTest::testRemoveSeveralCheckers() { 0393 QList<const Checker*> checkersToRun; 0394 checkersToRun.append(m_checker1_1); 0395 checkersToRun.append(m_checker2_1); 0396 checkersToRun.append(m_checker2_2); 0397 checkersToRun.append(m_checker2_3); 0398 checkersToRun.append(m_extraChecker2_1); 0399 checkersToRun.append(m_extraChecker2_2); 0400 checkersToRun.append(m_extraChecker2_3); 0401 checkersToRun.append(m_checker3_1); 0402 0403 SelectCheckersWidget widget; 0404 widget.setCheckers(m_availableCheckers, checkersToRun); 0405 0406 QVERIFY(!removeButton(&widget)->isEnabled()); 0407 0408 //checker2_2 0409 select(checkersToRunView(&widget), "1-1", QItemSelectionModel::Select); 0410 //extraChecker2_2 0411 select(checkersToRunView(&widget), "1-3-1", QItemSelectionModel::Select); 0412 //checker1_1 0413 select(checkersToRunView(&widget), "0-0", QItemSelectionModel::Select); 0414 0415 QVERIFY(removeButton(&widget)->isEnabled()); 0416 0417 removeButton(&widget)->click(); 0418 0419 QVERIFY(!removeButton(&widget)->isEnabled()); 0420 0421 checkersToRun = widget.checkersToRun(); 0422 QCOMPARE(checkersToRun.count(), 5); 0423 QVERIFY(checkersToRun.contains(m_checker2_1)); 0424 QVERIFY(checkersToRun.contains(m_checker2_3)); 0425 QVERIFY(checkersToRun.contains(m_extraChecker2_1)); 0426 QVERIFY(checkersToRun.contains(m_extraChecker2_3)); 0427 QVERIFY(checkersToRun.contains(m_checker3_1)); 0428 0429 //checker2_3 0430 select(checkersToRunView(&widget), "0-1", QItemSelectionModel::Select); 0431 //extraChecker2_3 0432 select(checkersToRunView(&widget), "0-2-1", QItemSelectionModel::Select); 0433 0434 QVERIFY(removeButton(&widget)->isEnabled()); 0435 0436 removeButton(&widget)->click(); 0437 0438 QVERIFY(!removeButton(&widget)->isEnabled()); 0439 0440 checkersToRun = widget.checkersToRun(); 0441 QCOMPARE(checkersToRun.count(), 3); 0442 QVERIFY(checkersToRun.contains(m_checker2_1)); 0443 QVERIFY(checkersToRun.contains(m_extraChecker2_1)); 0444 QVERIFY(checkersToRun.contains(m_checker3_1)); 0445 } 0446 0447 void SelectCheckersWidgetTest::testSelectFileTypeToRemove() { 0448 QList<const Checker*> checkersToRun; 0449 checkersToRun.append(m_checker2_2); 0450 checkersToRun.append(m_extraChecker2_1); 0451 checkersToRun.append(m_checker3_1); 0452 0453 SelectCheckersWidget widget; 0454 widget.setCheckers(m_availableCheckers, checkersToRun); 0455 0456 QVERIFY(!addButton(&widget)->isEnabled()); 0457 QVERIFY(!removeButton(&widget)->isEnabled()); 0458 0459 //fileType2 0460 select(checkersToRunView(&widget), "0", QItemSelectionModel::SelectCurrent); 0461 0462 QVERIFY(!addButton(&widget)->isEnabled()); 0463 QVERIFY(!removeButton(&widget)->isEnabled()); 0464 0465 //checker2_2 0466 select(checkersToRunView(&widget), "0-0", QItemSelectionModel::SelectCurrent); 0467 0468 QVERIFY(!addButton(&widget)->isEnabled()); 0469 QVERIFY(removeButton(&widget)->isEnabled()); 0470 0471 //fileType2 0472 select(checkersToRunView(&widget), "0", QItemSelectionModel::SelectCurrent); 0473 0474 QVERIFY(!addButton(&widget)->isEnabled()); 0475 QVERIFY(!removeButton(&widget)->isEnabled()); 0476 } 0477 0478 void SelectCheckersWidgetTest::testSelectExtraHeaderToRemove() { 0479 QList<const Checker*> checkersToRun; 0480 checkersToRun.append(m_checker2_2); 0481 checkersToRun.append(m_extraChecker2_1); 0482 checkersToRun.append(m_checker3_1); 0483 0484 SelectCheckersWidget widget; 0485 widget.setCheckers(m_availableCheckers, checkersToRun); 0486 0487 QVERIFY(!addButton(&widget)->isEnabled()); 0488 QVERIFY(!removeButton(&widget)->isEnabled()); 0489 0490 //extraHeader2 0491 select(checkersToRunView(&widget), "0-1", QItemSelectionModel::SelectCurrent); 0492 0493 QVERIFY(!addButton(&widget)->isEnabled()); 0494 QVERIFY(!removeButton(&widget)->isEnabled()); 0495 0496 //extraChecker2_2 0497 select(checkersToRunView(&widget), "0-1-0", QItemSelectionModel::SelectCurrent); 0498 0499 QVERIFY(!addButton(&widget)->isEnabled()); 0500 QVERIFY(removeButton(&widget)->isEnabled()); 0501 0502 //extraHeader2 0503 select(checkersToRunView(&widget), "0-1", QItemSelectionModel::SelectCurrent); 0504 0505 QVERIFY(!addButton(&widget)->isEnabled()); 0506 QVERIFY(!removeButton(&widget)->isEnabled()); 0507 } 0508 0509 void SelectCheckersWidgetTest::testRemoveSeveralCheckersWithFileTypeAndExtraHeaderSelected() { 0510 QList<const Checker*> checkersToRun; 0511 checkersToRun.append(m_checker1_1); 0512 checkersToRun.append(m_checker2_1); 0513 checkersToRun.append(m_checker2_2); 0514 checkersToRun.append(m_checker2_3); 0515 checkersToRun.append(m_extraChecker2_1); 0516 checkersToRun.append(m_checker3_1); 0517 0518 SelectCheckersWidget widget; 0519 widget.setCheckers(m_availableCheckers, checkersToRun); 0520 0521 QVERIFY(!removeButton(&widget)->isEnabled()); 0522 0523 //fileType2 0524 select(checkersToRunView(&widget), "1", QItemSelectionModel::Select); 0525 //checker2_2 0526 select(checkersToRunView(&widget), "1-1", QItemSelectionModel::Select); 0527 0528 QVERIFY(removeButton(&widget)->isEnabled()); 0529 0530 removeButton(&widget)->click(); 0531 0532 QVERIFY(!removeButton(&widget)->isEnabled()); 0533 0534 checkersToRun = widget.checkersToRun(); 0535 QCOMPARE(checkersToRun.count(), 5); 0536 QVERIFY(checkersToRun.contains(m_checker1_1)); 0537 QVERIFY(checkersToRun.contains(m_checker2_1)); 0538 QVERIFY(checkersToRun.contains(m_checker2_3)); 0539 QVERIFY(checkersToRun.contains(m_extraChecker2_1)); 0540 QVERIFY(checkersToRun.contains(m_checker3_1)); 0541 0542 //checker1_1 0543 select(checkersToRunView(&widget), "0-0", QItemSelectionModel::Select); 0544 //checker2_3 0545 select(checkersToRunView(&widget), "1-1", QItemSelectionModel::Select); 0546 //extraHeader2 0547 select(checkersToRunView(&widget), "1-2", QItemSelectionModel::Select); 0548 0549 QVERIFY(removeButton(&widget)->isEnabled()); 0550 0551 removeButton(&widget)->click(); 0552 0553 QVERIFY(!removeButton(&widget)->isEnabled()); 0554 0555 checkersToRun = widget.checkersToRun(); 0556 QCOMPARE(checkersToRun.count(), 3); 0557 QVERIFY(checkersToRun.contains(m_checker2_1)); 0558 QVERIFY(checkersToRun.contains(m_extraChecker2_1)); 0559 QVERIFY(checkersToRun.contains(m_checker3_1)); 0560 } 0561 0562 ///////////////////////////////// Helpers ////////////////////////////////////// 0563 0564 Checker* SelectCheckersWidgetTest::newChecker(const QString& fileType, const QString& name, 0565 const QString& description /*=""*/, bool extra /*=false*/) const { 0566 auto checker = new Checker(); 0567 checker->setFileType(fileType); 0568 checker->setName(name); 0569 checker->setDescription(description); 0570 checker->setExtra(extra); 0571 0572 return checker; 0573 } 0574 0575 QTreeView* SelectCheckersWidgetTest::otherAvailableCheckersView(const SelectCheckersWidget* widget) const { 0576 return widget->findChild<QTreeView*>("otherAvailableCheckersView"); 0577 } 0578 0579 QTreeView* SelectCheckersWidgetTest::checkersToRunView(const SelectCheckersWidget* widget) const { 0580 return widget->findChild<QTreeView*>("checkersToRunView"); 0581 } 0582 0583 QPushButton* SelectCheckersWidgetTest::addButton(const SelectCheckersWidget* widget) const { 0584 return widget->findChild<QPushButton*>("addButton"); 0585 } 0586 0587 QPushButton* SelectCheckersWidgetTest::removeButton(const SelectCheckersWidget* widget) const { 0588 return widget->findChild<QPushButton*>("removeButton"); 0589 } 0590 0591 void SelectCheckersWidgetTest::select(QTreeView* view, const QString& rows, 0592 QItemSelectionModel::SelectionFlags command) { 0593 QModelIndex index; 0594 foreach (const QString& row, rows.split('-')) { 0595 index = view->model()->index(row.toInt(), 0, index); 0596 } 0597 0598 view->selectionModel()->select(index, command); 0599 } 0600 0601 QTEST_MAIN(SelectCheckersWidgetTest) 0602 0603 #include "selectcheckerswidgettest.moc"