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>
This commit is contained in:
parent
b6ff86e556
commit
cd39a469a9
@ -281,7 +281,7 @@ qt_internal_add_module(Core
|
||||
tools/qduplicatetracker_p.h
|
||||
tools/qflatmap_p.h
|
||||
tools/qfreelist.cpp tools/qfreelist_p.h
|
||||
tools/qfunctionaltools_impl.h
|
||||
tools/qfunctionaltools_impl.cpp tools/qfunctionaltools_impl.h
|
||||
tools/qhashfunctions.h
|
||||
tools/qiterator.h
|
||||
tools/qline.cpp tools/qline.h
|
||||
|
47
src/corelib/tools/qfunctionaltools_impl.cpp
Normal file
47
src/corelib/tools/qfunctionaltools_impl.cpp
Normal file
@ -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
|
Loading…
x
Reference in New Issue
Block a user