diff options
author | Marc Mutz <marc.mutz@qt.io> | 2023-05-11 14:17:17 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2023-05-17 06:44:45 +0200 |
commit | 8712e35aec2c072fe709364eaa69bb8928c5cacc (patch) | |
tree | 6c0a54722d4f784ae279bb07f28fae225684384d /tests/auto/corelib/tools | |
parent | 782ccc6de5950ff1f6d3eeaaeacc7af4bc97a84f (diff) |
QVarLengthArray/QList: make assign() return a reference to *this
While std::vector::assign() returns void, std::basic_string::assign()
returns std::basic_string&. In Qt, we want to be consistent between
{QVLA,QList,QString,QByteArray}::assign(), and returning *this is the
more general solution, so do that.
Task-number: QTBUG-106196
Task-number: QTBUG-106200
Change-Id: I2689b4af032ab6fb3f8fbcb4d825d5201ea5abeb
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'tests/auto/corelib/tools')
-rw-r--r-- | tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp b/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp index 24f5dba17e..4c6c0e0671 100644 --- a/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp +++ b/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp @@ -778,6 +778,18 @@ void tst_ContainerApiSymmetry::assign_impl() const for (const auto &e : Arr) \ QCOMPARE(e, ComparisonData) \ /*end*/ +#define RET_CHECK(...) \ + do { \ + if constexpr (std::is_void_v<decltype( __VA_ARGS__ )>) { \ + /* e.g. std::vector */ \ + __VA_ARGS__ ; \ + } else { \ + /* e.g. std::basic_string */ \ + auto &&r = __VA_ARGS__ ; \ + QCOMPARE_EQ(&r, &c); \ + } \ + } while (false) \ + /* end */ using V = typename Container::value_type; using S = typename Container::size_type; auto tData = V(9); @@ -785,7 +797,7 @@ void tst_ContainerApiSymmetry::assign_impl() const // fill version auto c = make<Container>(4); const S oldCapacity = c.capacity(); - c.assign(4, tData); + RET_CHECK(c.assign(4, tData)); CHECK(c, tData, c.size(), S(4), c.capacity(), oldCapacity); c.assign(8, tData); @@ -801,7 +813,7 @@ void tst_ContainerApiSymmetry::assign_impl() const auto iter = make<Container>(1); iter.assign(8, tData); - c.assign(iter.begin(), iter.end()); + RET_CHECK(c.assign(iter.begin(), iter.end())); CHECK(c, tData, c.size(), S(8), c.capacity(), std::max(oldCapacity, S(8))); c.assign(iter.begin(), iter.begin()); @@ -814,7 +826,7 @@ void tst_ContainerApiSymmetry::assign_impl() const const S oldCapacity = c.capacity(); std::stringstream ss("9 9 "); - c.assign(std::istream_iterator<V>{ss}, std::istream_iterator<V>{}); + RET_CHECK(c.assign(std::istream_iterator<V>{ss}, std::istream_iterator<V>{})); CHECK(c, tData, c.size(), S(2), c.capacity(), oldCapacity); ss.str(""); @@ -836,10 +848,11 @@ void tst_ContainerApiSymmetry::assign_impl() const auto c = make<Container>(4); const S oldCapacity = c.capacity(); std::initializer_list<V> list = {tData, tData, tData}; - c.assign(list); + RET_CHECK(c.assign(list)); CHECK(c, tData, c.size(), S(3), c.capacity(), oldCapacity); } +#undef RET_CHECK #undef CHECK } |