diff options
author | Marc Mutz <marc.mutz@qt.io> | 2023-05-08 12:01:43 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2023-12-08 04:18:32 +0200 |
commit | cd39a469a9de29f5cb01c42f75eb8f840cc65430 (patch) | |
tree | 6ba5bc13ad46b0d0caadfe49bc0c11a902b0dfd4 /src/corelib/tools | |
parent | b6ff86e5568d5ce715de4153a1ab34dc2c278fc9 (diff) |
Add tests for CompactStorage
They're too trivial for their own QTestLib-based approach, but we
don't want them in the header, either, reducing the compile times for
all users, so put them into an otherwise empty .cpp file.
Change-Id: Iae7fc4d4a29a0648b91752040854288e02da7045
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/tools')
-rw-r--r-- | src/corelib/tools/qfunctionaltools_impl.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/corelib/tools/qfunctionaltools_impl.cpp b/src/corelib/tools/qfunctionaltools_impl.cpp new file mode 100644 index 0000000000..28148c39a2 --- /dev/null +++ b/src/corelib/tools/qfunctionaltools_impl.cpp @@ -0,0 +1,47 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#include <QtCore/qfunctionaltools_impl.h> + +// Remove this file once we have tests that implicitly test all aspects of +// CompactStorage + +QT_BEGIN_NAMESPACE + +namespace QtPrivate { + +#define FOR_EACH_CVREF(op) \ + op(&) \ + op(const &) \ + op(&&) \ + op(const &&) \ + /* end */ + +namespace _testing { + struct empty {}; + struct final final {}; + static_assert(std::is_same_v<CompactStorage<empty>, + detail::StorageEmptyBaseClassOptimization<empty>>); + static_assert(std::is_same_v<CompactStorage<final>, + detail::StorageByValue<final>>); + static_assert(std::is_same_v<CompactStorage<int>, + detail::StorageByValue<int>>); +#define CHECK1(Obj, cvref) \ + static_assert(std::is_same_v<decltype(std::declval<CompactStorage< Obj > cvref>().object()), \ + Obj cvref>); +#define CHECK(cvref) \ + CHECK1(empty, cvref) \ + CHECK1(final, cvref) \ + CHECK1(int, cvref) \ + /* end */ + + FOR_EACH_CVREF(CHECK) +#undef CHECK +#undef CHECK1 +} // namespace _testing + +} // namespace QtPrivate + +#undef FOR_EACH_CVREF + +QT_END_NAMESPACE |