summaryrefslogtreecommitdiff
path: root/tests/auto/algorithm/tst_algorithm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/algorithm/tst_algorithm.cpp')
-rw-r--r--tests/auto/algorithm/tst_algorithm.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/tests/auto/algorithm/tst_algorithm.cpp b/tests/auto/algorithm/tst_algorithm.cpp
index 1f54294c2d..7ae01b91be 100644
--- a/tests/auto/algorithm/tst_algorithm.cpp
+++ b/tests/auto/algorithm/tst_algorithm.cpp
@@ -320,6 +320,15 @@ void tst_Algorithm::findOr()
Struct defS(6);
QCOMPARE(Utils::findOr(v3, &defS, &Struct::isOdd), v3.at(0).get());
QCOMPARE(Utils::findOr(v3, &defS, &Struct::isEven), &defS);
+
+ std::vector<std::shared_ptr<Struct>> v4;
+ v4.emplace_back(std::make_shared<Struct>(1));
+ v4.emplace_back(std::make_shared<Struct>(3));
+ v4.emplace_back(std::make_shared<Struct>(5));
+ v4.emplace_back(std::make_shared<Struct>(7));
+ std::shared_ptr<Struct> sharedDefS = std::make_shared<Struct>(6);
+ QCOMPARE(Utils::findOr(v4, sharedDefS, &Struct::isOdd), v4.at(0));
+ QCOMPARE(Utils::findOr(v4, sharedDefS, &Struct::isEven), sharedDefS);
}
void tst_Algorithm::findOrDefault()
@@ -340,7 +349,15 @@ void tst_Algorithm::findOrDefault()
v3.emplace_back(std::make_unique<Struct>(5));
v3.emplace_back(std::make_unique<Struct>(7));
QCOMPARE(Utils::findOrDefault(v3, &Struct::isOdd), v3.at(0).get());
- QCOMPARE(Utils::findOrDefault(v3, &Struct::isEven), static_cast<Struct*>(0));
+ QCOMPARE(Utils::findOrDefault(v3, &Struct::isEven), static_cast<Struct*>(nullptr));
+
+ std::vector<std::shared_ptr<Struct>> v4;
+ v4.emplace_back(std::make_shared<Struct>(1));
+ v4.emplace_back(std::make_shared<Struct>(3));
+ v4.emplace_back(std::make_shared<Struct>(5));
+ v4.emplace_back(std::make_shared<Struct>(7));
+ QCOMPARE(Utils::findOrDefault(v4, &Struct::isOdd), v4.at(0));
+ QCOMPARE(Utils::findOrDefault(v4, &Struct::isEven), std::shared_ptr<Struct>());
}
QTEST_MAIN(tst_Algorithm)