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/qduplicatetracker_p.h
|
||||||
tools/qflatmap_p.h
|
tools/qflatmap_p.h
|
||||||
tools/qfreelist.cpp tools/qfreelist_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/qhashfunctions.h
|
||||||
tools/qiterator.h
|
tools/qiterator.h
|
||||||
tools/qline.cpp tools/qline.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