all: more assorted cleanups

This commit is contained in:
Markus F.X.J. Oberhumer
2024-02-09 14:48:47 +01:00
parent 25aa0e2e46
commit ae6d3b9bff
12 changed files with 98 additions and 36 deletions
+36
View File
@@ -131,6 +131,7 @@ TEST_CASE("libc++") {
CHECK(v.end() - v.begin() == N);
CHECK(&v[0] == &(*(v.begin())));
// CHECK(&v[0] + N == &(*(v.end()))); // TODO later: is this legal??
// TODO later
#if defined(_LIBCPP_HARDENING_MODE_DEBUG) && \
(_LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_DEBUG)
CHECK_THROWS((void) &v[N]);
@@ -259,6 +260,41 @@ struct Z2_X2 : public X2 {
// util
**************************************************************************/
TEST_CASE("Deleter") {
LE16 *o = {}; // object
LE32 *a = {}; // array
{
const upx::ObjectDeleter<LE16 **> o_deleter{&o, 1};
o = new LE16;
assert(o != nullptr);
const upx::ArrayDeleter<LE32 **> a_deleter{&a, 1};
a = New(LE32, 1);
assert(a != nullptr);
}
assert(o == nullptr);
assert(a == nullptr);
}
TEST_CASE("Deleter") {
constexpr size_t N = 2;
BE16 *o[N]; // multiple objects
BE32 *a[N]; // multiple arrays
{
upx::ObjectDeleter<BE16 **> o_deleter{o, 0};
upx::ArrayDeleter<BE32 **> a_deleter{a, 0};
for (size_t i = 0; i < N; i++) {
o[i] = new BE16;
o_deleter.count += 1;
a[i] = New(BE32, 1 + i);
a_deleter.count += 1;
}
}
for (size_t i = 0; i < N; i++) {
assert(o[i] == nullptr);
assert(a[i] == nullptr);
}
}
TEST_CASE("ptr_static_cast") {
// check that we don't trigger any -Wcast-align warnings
using upx::ptr_static_cast;