test smart pointer