| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| file Copyright.txt or https://cmake.org/licensing for details. */ | |
| #include "EnvironmentDialogTest.h" | |
| #include <QDialogButtonBox> | |
| #include <QMessageBox> | |
| #include <QObject> | |
| #include <QPushButton> | |
| #include <QString> | |
| #include <QtTest> | |
| #include "CatchShow.h" | |
| #include "EnvironmentDialog.h" | |
| EnvironmentDialogTest::EnvironmentDialogTest(QObject* parent) | |
| : QObject(parent) | |
| { | |
| } | |
| void EnvironmentDialogTest::environmentDialog() | |
| { | |
| CatchShow catcher; | |
| catcher.setCallback<QMessageBox>([](QMessageBox* box) { box->accept(); }); | |
| QProcessEnvironment env; | |
| env.insert("DELETED_VARIABLE_1", "Deleted variable 1"); | |
| env.insert("DELETED_VARIABLE_2", "Deleted variable 2"); | |
| env.insert("KEPT_VARIABLE", "Kept variable"); | |
| env.insert("CHANGED_VARIABLE", "This will be changed"); | |
| EnvironmentDialog dialog(env); | |
| { | |
| QStringList expected{ | |
| "CHANGED_VARIABLE=This will be changed", | |
| "DELETED_VARIABLE_1=Deleted variable 1", | |
| "DELETED_VARIABLE_2=Deleted variable 2", | |
| "KEPT_VARIABLE=Kept variable", | |
| }; | |
| QCOMPARE(dialog.environment().toStringList(), expected); | |
| QCOMPARE(catcher.count(), 0); | |
| } | |
| { | |
| CatchShow catcher2; | |
| bool done = false; | |
| catcher2.setCallback<QDialog>([&catcher, &done](QDialog* box) { | |
| if (done) { | |
| return; | |
| } | |
| done = true; | |
| auto name = box->findChild<QLineEdit*>("name"); | |
| auto value = box->findChild<QLineEdit*>("value"); | |
| auto acceptReject = box->findChild<QDialogButtonBox*>(); | |
| name->setText(""); | |
| value->setText(""); | |
| acceptReject->button(QDialogButtonBox::Ok)->click(); | |
| QCOMPARE(catcher.count(), 1); | |
| name->setText("KEPT_VARIABLE"); | |
| value->setText(""); | |
| acceptReject->button(QDialogButtonBox::Ok)->click(); | |
| QCOMPARE(catcher.count(), 2); | |
| name->setText("ADDED_VARIABLE"); | |
| value->setText("Added variable"); | |
| acceptReject->button(QDialogButtonBox::Ok)->click(); | |
| QCOMPARE(catcher.count(), 2); | |
| }); | |
| dialog.AddEntry->click(); | |
| QStringList expected{ | |
| "ADDED_VARIABLE=Added variable", | |
| "CHANGED_VARIABLE=This will be changed", | |
| "DELETED_VARIABLE_1=Deleted variable 1", | |
| "DELETED_VARIABLE_2=Deleted variable 2", | |
| "KEPT_VARIABLE=Kept variable", | |
| }; | |
| QCOMPARE(dialog.environment().toStringList(), expected); | |
| QCOMPARE(catcher.count(), 2); | |
| QVERIFY(done); | |
| } | |
| { | |
| CatchShow catcher2; | |
| bool done = false; | |
| catcher2.setCallback<QDialog>([&done](QDialog* box) { | |
| if (done) { | |
| return; | |
| } | |
| done = true; | |
| auto name = box->findChild<QLineEdit*>("name"); | |
| auto value = box->findChild<QLineEdit*>("value"); | |
| auto acceptReject = box->findChild<QDialogButtonBox*>(); | |
| name->setText("DISCARDED_VARIABLE"); | |
| value->setText("Discarded variable"); | |
| acceptReject->button(QDialogButtonBox::Cancel)->click(); | |
| }); | |
| dialog.AddEntry->click(); | |
| QStringList expected{ | |
| "ADDED_VARIABLE=Added variable", | |
| "CHANGED_VARIABLE=This will be changed", | |
| "DELETED_VARIABLE_1=Deleted variable 1", | |
| "DELETED_VARIABLE_2=Deleted variable 2", | |
| "KEPT_VARIABLE=Kept variable", | |
| }; | |
| QCOMPARE(dialog.environment().toStringList(), expected); | |
| QCOMPARE(catcher.count(), 2); | |
| QVERIFY(done); | |
| } | |
| { | |
| auto* model = dialog.Environment->model(); | |
| auto* selectionModel = dialog.Environment->selectionModel(); | |
| for (int i = 0; i < model->rowCount(); ++i) { | |
| auto index1 = model->index(i, 0); | |
| auto index2 = model->buddy(index1); | |
| auto name = model->data(index1, Qt::DisplayRole).toString(); | |
| if (name == "DELETED_VARIABLE_1" || name == "DELETED_VARIABLE_2") { | |
| selectionModel->select(index1, QItemSelectionModel::Select); | |
| selectionModel->select(index2, QItemSelectionModel::Select); | |
| } else if (name == "CHANGED_VARIABLE") { | |
| model->setData(index2, "Changed variable", Qt::DisplayRole); | |
| } | |
| } | |
| dialog.RemoveEntry->click(); | |
| QStringList expected{ | |
| "ADDED_VARIABLE=Added variable", | |
| "CHANGED_VARIABLE=Changed variable", | |
| "KEPT_VARIABLE=Kept variable", | |
| }; | |
| QCOMPARE(dialog.environment().toStringList(), expected); | |
| } | |
| } | |
| QTEST_MAIN(EnvironmentDialogTest) |