summaryrefslogtreecommitdiff
path: root/src/plugins/autotest/testresultmodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/autotest/testresultmodel.cpp')
-rw-r--r--src/plugins/autotest/testresultmodel.cpp100
1 files changed, 49 insertions, 51 deletions
diff --git a/src/plugins/autotest/testresultmodel.cpp b/src/plugins/autotest/testresultmodel.cpp
index 0eb9faf52e..3f8c678d5b 100644
--- a/src/plugins/autotest/testresultmodel.cpp
+++ b/src/plugins/autotest/testresultmodel.cpp
@@ -21,7 +21,7 @@ namespace Internal {
/********************************* TestResultItem ******************************************/
-TestResultItem::TestResultItem(const TestResultPtr &testResult)
+TestResultItem::TestResultItem(const TestResult &testResult)
: m_testResult(testResult)
{
}
@@ -71,9 +71,9 @@ QVariant TestResultItem::data(int column, int role) const
{
switch (role) {
case Qt::DecorationRole: {
- if (!m_testResult)
- return QVariant();
- const ResultType result = m_testResult->result();
+ if (!m_testResult.isValid())
+ return {};
+ const ResultType result = m_testResult.result();
if (result == ResultType::MessageLocation && parent())
return parent()->data(column, role);
if (result == ResultType::TestStart)
@@ -81,7 +81,7 @@ QVariant TestResultItem::data(int column, int role) const
return testResultIcon(result);
}
case Qt::DisplayRole:
- return m_testResult ? m_testResult->outputString(true) : QVariant();
+ return m_testResult.isValid() ? m_testResult.outputString(true) : QVariant();
default:
return Utils::TreeItem::data(column, role);
}
@@ -89,9 +89,8 @@ QVariant TestResultItem::data(int column, int role) const
void TestResultItem::updateDescription(const QString &description)
{
- QTC_ASSERT(m_testResult, return);
-
- m_testResult->setDescription(description);
+ QTC_ASSERT(m_testResult.isValid(), return);
+ m_testResult.setDescription(description);
}
static bool isSignificant(ResultType type)
@@ -117,7 +116,7 @@ void TestResultItem::updateResult(bool &changed, ResultType addedChildType,
const std::optional<SummaryEvaluation> &summary)
{
changed = false;
- if (m_testResult->result() != ResultType::TestStart)
+ if (m_testResult.result() != ResultType::TestStart)
return;
if (!isSignificant(addedChildType) || (addedChildType == ResultType::TestStart && !summary))
@@ -165,13 +164,13 @@ void TestResultItem::updateResult(bool &changed, ResultType addedChildType,
TestResultItem *TestResultItem::intermediateFor(const TestResultItem *item) const
{
QTC_ASSERT(item, return nullptr);
- const TestResult *otherResult = item->testResult();
+ const TestResult otherResult = item->testResult();
for (int row = childCount() - 1; row >= 0; --row) {
TestResultItem *child = childAt(row);
- const TestResult *testResult = child->testResult();
- if (testResult->result() != ResultType::TestStart)
+ const TestResult testResult = child->testResult();
+ if (testResult.result() != ResultType::TestStart)
continue;
- if (testResult->isIntermediateFor(otherResult))
+ if (testResult.isIntermediateFor(otherResult))
return child;
}
return nullptr;
@@ -179,9 +178,9 @@ TestResultItem *TestResultItem::intermediateFor(const TestResultItem *item) cons
TestResultItem *TestResultItem::createAndAddIntermediateFor(const TestResultItem *child)
{
- TestResultPtr result(child->testResult()->createIntermediateResult());
- QTC_ASSERT(!result.isNull(), return nullptr);
- result->setResult(ResultType::TestStart);
+ TestResult result = child->testResult().intermediateResult();
+ QTC_ASSERT(result.isValid(), return nullptr);
+ result.setResult(ResultType::TestStart);
TestResultItem *intermediate = new TestResultItem(result);
appendChild(intermediate);
return intermediate;
@@ -189,17 +188,17 @@ TestResultItem *TestResultItem::createAndAddIntermediateFor(const TestResultItem
QString TestResultItem::resultString() const
{
- if (testResult()->result() != ResultType::TestStart)
- return TestResult::resultToString(testResult()->result());
+ if (testResult().result() != ResultType::TestStart)
+ return TestResult::resultToString(testResult().result());
if (!m_summaryResult)
- return QString();
+ return {};
return m_summaryResult->failed ? QString("FAIL") : QString("PASS");
}
/********************************* TestResultModel *****************************************/
TestResultModel::TestResultModel(QObject *parent)
- : Utils::TreeModel<TestResultItem>(new TestResultItem(TestResultPtr()), parent)
+ : Utils::TreeModel<TestResultItem>(new TestResultItem({}), parent)
{
connect(TestRunner::instance(), &TestRunner::reportSummary,
this, [this](const QString &id, const QHash<ResultType, int> &summary){
@@ -210,12 +209,12 @@ TestResultModel::TestResultModel(QObject *parent)
void TestResultModel::updateParent(const TestResultItem *item)
{
QTC_ASSERT(item, return);
- QTC_ASSERT(item->testResult(), return);
+ QTC_ASSERT(item->testResult().isValid(), return);
TestResultItem *parentItem = item->parent();
if (parentItem == rootItem()) // do not update invisible root item
return;
bool changed = false;
- parentItem->updateResult(changed, item->testResult()->result(), item->summaryResult());
+ parentItem->updateResult(changed, item->testResult().result(), item->summaryResult());
if (!changed)
return;
emit dataChanged(parentItem->index(), parentItem->index());
@@ -232,16 +231,16 @@ static bool isFailed(ResultType type)
}
}
-void TestResultModel::addTestResult(const TestResultPtr &testResult, bool autoExpand)
+void TestResultModel::addTestResult(const TestResult &testResult, bool autoExpand)
{
const int lastRow = rootItem()->childCount() - 1;
- if (testResult->result() == ResultType::MessageCurrentTest) {
+ if (testResult.result() == ResultType::MessageCurrentTest) {
// MessageCurrentTest should always be the last top level item
if (lastRow >= 0) {
TestResultItem *current = rootItem()->childAt(lastRow);
- const TestResult *result = current->testResult();
- if (result && result->result() == ResultType::MessageCurrentTest) {
- current->updateDescription(testResult->description());
+ const TestResult result = current->testResult();
+ if (result.isValid() && result.result() == ResultType::MessageCurrentTest) {
+ current->updateDescription(testResult.description());
emit dataChanged(current->index(), current->index());
return;
}
@@ -251,22 +250,22 @@ void TestResultModel::addTestResult(const TestResultPtr &testResult, bool autoEx
return;
}
- m_testResultCount[testResult->id()][testResult->result()]++;
+ m_testResultCount[testResult.id()][testResult.result()]++;
TestResultItem *newItem = new TestResultItem(testResult);
TestResultItem *root = nullptr;
if (AutotestPlugin::settings()->displayApplication) {
- const QString application = testResult->id();
+ const QString application = testResult.id();
if (!application.isEmpty()) {
root = rootItem()->findFirstLevelChild([&application](TestResultItem *child) {
QTC_ASSERT(child, return false);
- return child->testResult()->id() == application;
+ return child->testResult().id() == application;
});
if (!root) {
- TestResult *tmpAppResult = new TestResult(application, application);
- tmpAppResult->setResult(ResultType::Application);
- root = new TestResultItem(TestResultPtr(tmpAppResult));
+ TestResult tmpAppResult(application, application);
+ tmpAppResult.setResult(ResultType::Application);
+ root = new TestResultItem(tmpAppResult);
if (lastRow >= 0)
rootItem()->insertChild(lastRow, root);
else
@@ -276,7 +275,7 @@ void TestResultModel::addTestResult(const TestResultPtr &testResult, bool autoEx
}
TestResultItem *parentItem = findParentItemFor(newItem, root);
- addFileName(testResult->fileName().fileName()); // ensure we calculate the results pane correctly
+ addFileName(testResult.fileName().fileName()); // ensure we calculate the results pane correctly
if (parentItem) {
parentItem->appendChild(newItem);
if (autoExpand) {
@@ -288,8 +287,8 @@ void TestResultModel::addTestResult(const TestResultPtr &testResult, bool autoEx
} else {
if (lastRow >= 0) {
TestResultItem *current = rootItem()->childAt(lastRow);
- const TestResult *result = current->testResult();
- if (result && result->result() == ResultType::MessageCurrentTest) {
+ const TestResult result = current->testResult();
+ if (result.isValid() && result.result() == ResultType::MessageCurrentTest) {
rootItem()->insertChild(current->index().row(), newItem);
return;
}
@@ -298,8 +297,8 @@ void TestResultModel::addTestResult(const TestResultPtr &testResult, bool autoEx
rootItem()->appendChild(newItem);
}
- if (isFailed(testResult->result())) {
- if (const ITestTreeItem *it = testResult->findTestTreeItem()) {
+ if (isFailed(testResult.result())) {
+ if (const ITestTreeItem *it = testResult.findTestTreeItem()) {
TestTreeModel *model = TestTreeModel::instance();
model->setData(model->indexForItem(it), true, FailedRole);
}
@@ -309,7 +308,7 @@ void TestResultModel::addTestResult(const TestResultPtr &testResult, bool autoEx
void TestResultModel::removeCurrentTestMessage()
{
TestResultItem *currentMessageItem = rootItem()->findFirstLevelChild([](TestResultItem *it) {
- return (it->testResult()->result() == ResultType::MessageCurrentTest);
+ return (it->testResult().result() == ResultType::MessageCurrentTest);
});
if (currentMessageItem)
destroyItem(currentMessageItem);
@@ -326,12 +325,11 @@ void TestResultModel::clearTestResults()
m_widthOfLineNumber = 0;
}
-const TestResult *TestResultModel::testResult(const QModelIndex &idx)
+TestResult TestResultModel::testResult(const QModelIndex &idx)
{
if (idx.isValid())
return itemForIndex(idx)->testResult();
-
- return nullptr;
+ return {};
}
void TestResultModel::recalculateMaxWidthOfFileName(const QFont &font)
@@ -383,15 +381,15 @@ TestResultItem *TestResultModel::findParentItemFor(const TestResultItem *item,
{
QTC_ASSERT(item, return nullptr);
TestResultItem *root = startItem ? const_cast<TestResultItem *>(startItem) : nullptr;
- const TestResult *result = item->testResult();
- const QString &name = result->name();
- const QString &id = result->id();
+ const TestResult result = item->testResult();
+ const QString &name = result.name();
+ const QString &id = result.id();
if (root == nullptr && !name.isEmpty()) {
for (int row = rootItem()->childCount() - 1; row >= 0; --row) {
TestResultItem *tmp = rootItem()->childAt(row);
- auto tmpTestResult = tmp->testResult();
- if (tmpTestResult->id() == id && tmpTestResult->name() == name) {
+ const TestResult tmpTestResult = tmp->testResult();
+ if (tmpTestResult.id() == id && tmpTestResult.name() == name) {
root = tmp;
break;
}
@@ -403,7 +401,7 @@ TestResultItem *TestResultModel::findParentItemFor(const TestResultItem *item,
bool needsIntermediate = false;
auto predicate = [result, &needsIntermediate](Utils::TreeItem *it) {
TestResultItem *currentItem = static_cast<TestResultItem *>(it);
- return currentItem->testResult()->isDirectParentOf(result, &needsIntermediate);
+ return currentItem->testResult().isDirectParentOf(result, &needsIntermediate);
};
TestResultItem *parent = root->reverseFindAnyChild(predicate);
if (parent) {
@@ -480,7 +478,7 @@ bool TestResultFilterModel::hasResults()
return rowCount(QModelIndex());
}
-const TestResult *TestResultFilterModel::testResult(const QModelIndex &index) const
+TestResult TestResultFilterModel::testResult(const QModelIndex &index) const
{
return m_sourceModel->testResult(mapToSource(index));
}
@@ -495,7 +493,7 @@ bool TestResultFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &s
QModelIndex index = m_sourceModel->index(sourceRow, 0, sourceParent);
if (!index.isValid())
return false;
- ResultType resultType = m_sourceModel->testResult(index)->result();
+ const ResultType resultType = m_sourceModel->testResult(index).result();
if (resultType == ResultType::TestStart) {
TestResultItem *item = m_sourceModel->itemForIndex(index);
QTC_ASSERT(item, return false);
@@ -511,7 +509,7 @@ bool TestResultFilterModel::acceptTestCaseResult(const QModelIndex &srcIndex) co
for (int row = 0, count = m_sourceModel->rowCount(srcIndex); row < count; ++row) {
const QModelIndex &child = m_sourceModel->index(row, 0, srcIndex);
TestResultItem *item = m_sourceModel->itemForIndex(child);
- ResultType type = item->testResult()->result();
+ const ResultType type = item->testResult().result();
if (type == ResultType::TestStart) {
if (!item->summaryResult())