forked from qt-creator/qt-creator
Utils: Support more containers with Utils::transform
Support std::vector and similar classes as input and output. Change-Id: I1d202d54c18e868ce0e71e4c2b6288565710baa8 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
#include <QtTest>
|
||||
|
||||
#include <array>
|
||||
#include <deque>
|
||||
#include <memory>
|
||||
#include <valarray>
|
||||
|
||||
@@ -162,6 +163,78 @@ void tst_Algorithm::transform()
|
||||
const QList<int> trans = Utils::transform(list, &Struct::member);
|
||||
QCOMPARE(trans, QList<int>({4, 3, 2, 1, 2}));
|
||||
}
|
||||
{
|
||||
// QList -> std::vector
|
||||
const QList<int> v({1, 2, 3, 4});
|
||||
const std::vector<int> trans = Utils::transform<std::vector>(v, [](int i) { return i + 1; });
|
||||
QCOMPARE(trans, std::vector<int>({2, 3, 4, 5}));
|
||||
}
|
||||
{
|
||||
// QList -> std::vector
|
||||
const QList<Struct> v({1, 2, 3, 4});
|
||||
const std::vector<int> trans = Utils::transform<std::vector>(v, &Struct::getMember);
|
||||
QCOMPARE(trans, std::vector<int>({1, 2, 3, 4}));
|
||||
}
|
||||
{
|
||||
// QList -> std::vector
|
||||
const QList<Struct> v({1, 2, 3, 4});
|
||||
const std::vector<int> trans = Utils::transform<std::vector>(v, &Struct::member);
|
||||
QCOMPARE(trans, std::vector<int>({1, 2, 3, 4}));
|
||||
}
|
||||
{
|
||||
// std::vector -> QList
|
||||
const std::vector<int> v({1, 2, 3, 4});
|
||||
const QList<int> trans = Utils::transform<QList>(v, [](int i) { return i + 1; });
|
||||
QCOMPARE(trans, QList<int>({2, 3, 4, 5}));
|
||||
}
|
||||
{
|
||||
// std::vector -> QList
|
||||
const std::vector<Struct> v({1, 2, 3, 4});
|
||||
const QList<int> trans = Utils::transform<QList>(v, &Struct::getMember);
|
||||
QCOMPARE(trans, QList<int>({1, 2, 3, 4}));
|
||||
}
|
||||
{
|
||||
// std::vector -> QList
|
||||
const std::vector<Struct> v({1, 2, 3, 4});
|
||||
const QList<int> trans = Utils::transform<QList>(v, &Struct::member);
|
||||
QCOMPARE(trans, QList<int>({1, 2, 3, 4}));
|
||||
}
|
||||
{
|
||||
// std::deque -> std::vector
|
||||
const std::deque<int> v({1, 2, 3, 4});
|
||||
const std::vector<int> trans = Utils::transform<std::vector>(v, [](int i) { return i + 1; });
|
||||
QCOMPARE(trans, std::vector<int>({2, 3, 4, 5}));
|
||||
}
|
||||
{
|
||||
// std::deque -> std::vector
|
||||
const std::deque<Struct> v({1, 2, 3, 4});
|
||||
const std::vector<int> trans = Utils::transform<std::vector>(v, &Struct::getMember);
|
||||
QCOMPARE(trans, std::vector<int>({1, 2, 3, 4}));
|
||||
}
|
||||
{
|
||||
// std::deque -> std::vector
|
||||
const std::deque<Struct> v({1, 2, 3, 4});
|
||||
const std::vector<int> trans = Utils::transform<std::vector>(v, &Struct::member);
|
||||
QCOMPARE(trans, std::vector<int>({1, 2, 3, 4}));
|
||||
}
|
||||
{
|
||||
// std::vector -> std::vector
|
||||
const std::vector<int> v({1, 2, 3, 4});
|
||||
const std::vector<int> trans = Utils::transform(v, [](int i) { return i + 1; });
|
||||
QCOMPARE(trans, std::vector<int>({2, 3, 4, 5}));
|
||||
}
|
||||
{
|
||||
// std::vector -> std::vector
|
||||
const std::vector<Struct> v({1, 2, 3, 4});
|
||||
const std::vector<int> trans = Utils::transform(v, &Struct::getMember);
|
||||
QCOMPARE(trans, std::vector<int>({1, 2, 3, 4}));
|
||||
}
|
||||
{
|
||||
// std::vector -> std::vector
|
||||
const std::vector<Struct> v({1, 2, 3, 4});
|
||||
const std::vector<int> trans = Utils::transform(v, &Struct::member);
|
||||
QCOMPARE(trans, std::vector<int>({1, 2, 3, 4}));
|
||||
}
|
||||
}
|
||||
|
||||
void tst_Algorithm::sort()
|
||||
|
Reference in New Issue
Block a user