Test construction from raw pointers

This commit is contained in:
Josh Holtrop 2026-02-23 23:01:56 -05:00
parent 21f2dd4cad
commit 47273edf6e

View File

@ -1,5 +1,6 @@
#include <rcp.h>
#include <cassert>
#include <vector>
static int mybase_construct;
static int mybase_destruct;
@ -48,7 +49,7 @@ public:
double v;
};
void test_destructors_called()
void test_class_hierarchy()
{
{
rcp<MyBase> mybase = MyBase::create(4, 5);
@ -84,11 +85,46 @@ void test_create()
assert(myb->x == 8);
}
struct MyObj
{
rcp_managed_root(MyObj);
public:
int v = {42};
template <typename R>
void add_to(R & receiver)
{
receiver.add(this);
}
};
struct Receiver
{
std::vector<rcp<MyObj>> objects;
void add(MyObj * o)
{
objects.push_back(rcp<MyObj>(o));
}
};
void test_multi_construct_from_raw_pointers()
{
Receiver r;
auto myo = MyObj::create();
for (size_t i = 0u; i < 5u; i++)
{
myo->add_to(r);
}
for (size_t i = 0u; i < 5u; i++)
{
assert(r.objects[i]->v == 42);
}
}
int main(int argc, char * argv[])
{
test_destructors_called();
test_class_hierarchy();
test_dereference();
test_booleans();
test_create();
test_multi_construct_from_raw_pointers();
return 0;
}