| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #define BOOST_TEST_DYN_LINK
- #define BOOST_TEST_MAIN // in only one cpp file
- #include <boost/test/unit_test.hpp>
- #include "core/small_obj.hpp"
- using namespace sophiar;
- BOOST_AUTO_TEST_CASE(test_small_obj) {
- struct test_obj : public small_obj<test_obj> {
- explicit test_obj(int &_p) : probe(_p) {
- probe = 1;
- }
- ~test_obj() {
- probe = 2;
- }
- int &probe;
- };
- int my_probe = 0;
- {
- auto obj = test_obj::new_instance(my_probe);
- BOOST_TEST(my_probe == 1);
- }
- BOOST_TEST(my_probe == 2);
- my_probe = 0;
- {
- test_obj::pointer obj_2;
- {
- auto obj = test_obj::new_instance(my_probe);
- obj_2 = obj;
- BOOST_TEST(my_probe == 1);
- BOOST_TEST(obj_2->ref_count == 2);
- }
- BOOST_TEST(my_probe == 1);
- BOOST_TEST(obj_2->ref_count == 1);
- }
- BOOST_TEST(my_probe == 2);
- }
|