#include "EngineTest.h" #include "MinimalEngine.h" #include using namespace Seele; BOOST_AUTO_TEST_SUITE(RefPtr) struct TestStruct { TestStruct() : data(10) { } ~TestStruct() { } uint32 data; }; BOOST_AUTO_TEST_CASE(basic_refcount) { { Seele::RefPtr ptr = new TestStruct(); BOOST_REQUIRE_EQUAL(ptr->data, 10); { Seele::RefPtr secondPtr = ptr; BOOST_REQUIRE_EQUAL(secondPtr->data, 10); BOOST_REQUIRE_EQUAL(ptr->data, 10); } BOOST_REQUIRE_EQUAL(ptr->data, 10); } } struct DerivedStruct : public TestStruct { }; BOOST_AUTO_TEST_CASE(inheritance_cast) { Seele::RefPtr backCast; { Seele::RefPtr derived = new DerivedStruct(); Seele::RefPtr base = derived; BOOST_REQUIRE_EQUAL(base->data, 10); backCast = base.cast(); } BOOST_REQUIRE_EQUAL(backCast->data, 10); } BOOST_AUTO_TEST_CASE(unique_ptr) { UniquePtr uptr = new TestStruct(); UniquePtr uptr2 = std::move(uptr); BOOST_REQUIRE_EQUAL(uptr2->data, 10); BOOST_REQUIRE_EQUAL(uptr.isValid(), false); } BOOST_AUTO_TEST_SUITE_END()