diff options
Diffstat (limited to 'src/plugins/autotest/testresultmodel.cpp')
-rw-r--r-- | src/plugins/autotest/testresultmodel.cpp | 100 |
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()) |