You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
4.2 KiB
143 lines
4.2 KiB
/* 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)
|