from std_unique_ptr import ( make_unique_int, make_unique_v1, make_unique_null, V1, UniquePtrHolder, ) v = make_unique_int() assert isinstance(v, int) assert v == 10 v = make_unique_v1() assert isinstance(v, V1) assert v.v == 10 v = make_unique_null() assert v is None unique_ptr_holder = UniquePtrHolder() v = unique_ptr_holder.int_ptr assert isinstance(v, int) assert v == 20 # v is a copy, int_ptr will not be updated v = 10 assert unique_ptr_holder.int_ptr == 20 v = unique_ptr_holder.v1_ptr assert isinstance(v, V1) assert v.v == 200 # v is a ref, v1_ptr will be updated v.v = 10 assert unique_ptr_holder.v1_ptr.v == 10 v = unique_ptr_holder.null_ptr assert v is None