add test of smart_ptr