/* 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 #include #include #include #include #include #include "CatchShow.h" #include "EnvironmentDialog.h" EnvironmentDialogTest::EnvironmentDialogTest(QObject* parent) : QObject(parent) { } void EnvironmentDialogTest::environmentDialog() { CatchShow catcher; catcher.setCallback([](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([&catcher, &done](QDialog* box) { if (done) { return; } done = true; auto name = box->findChild("name"); auto value = box->findChild("value"); auto acceptReject = box->findChild(); 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([&done](QDialog* box) { if (done) { return; } done = true; auto name = box->findChild("name"); auto value = box->findChild("value"); auto acceptReject = box->findChild(); 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)