Files
libtorrent/test/test_alloca.cpp
2026-03-07 17:12:04 +01:00

74 lines
1.0 KiB
C++

/*
Copyright (c) 2017, 2020, Arvid Norberg
All rights reserved.
You may use, distribute and modify this code under the terms of the BSD license,
see LICENSE file.
*/
#include "test.hpp"
#include "libtorrent/aux_/alloca.hpp"
using namespace lt;
namespace {
struct A
{
int val = 1337;
};
int destructed = 0;
struct B
{
~B() { ++destructed; }
};
}
TORRENT_TEST(alloca_construct)
{
TORRENT_ALLOCA(vec, A, 13);
TEST_EQUAL(vec.size(), 13);
for (auto const& o : vec)
{
TEST_EQUAL(o.val, 1337);
}
}
TORRENT_TEST(alloca_destruct)
{
{
destructed = 0;
TORRENT_ALLOCA(vec, B, 3);
}
TEST_EQUAL(destructed, 3);
}
TORRENT_TEST(alloca_large)
{
// this is something like 256 kiB of allocation
// it should be made on the heap and always succeed
TORRENT_ALLOCA(vec, A, 65536);
for (auto const& a : vec)
TEST_EQUAL(a.val, 1337);
}
TORRENT_TEST(alloca_empty)
{
{
destructed = 0;
TORRENT_ALLOCA(vec, B, destructed);
}
TEST_EQUAL(destructed, 0);
}
TORRENT_TEST(alloca_zero)
{
TORRENT_ALLOCA(vec, A, 0);
TEST_EQUAL(vec.size(), 0);
}