def test_property_rvalue_policy(): """When returning an rvalue, the return value policy is automatically changed from `reference(_internal)` to `move`. The following would not work otherwise.""" instance = m.TestPropRVP() o = instance.rvalue assert o.value == 1 os = m.TestPropRVP.static_rvalue assert os.value == 1
def test_property_return_value_policies(access): if not access.startswith("static"): obj = m.TestPropRVP() else: obj = m.TestPropRVP ref = getattr(obj, access + "_ref") assert ref.value == 1 ref.value = 2 assert getattr(obj, access + "_ref").value == 2 ref.value = 1 # restore original value for static properties copy = getattr(obj, access + "_copy") assert copy.value == 1 copy.value = 2 assert getattr(obj, access + "_copy").value == 1 copy = getattr(obj, access + "_func") assert copy.value == 1 copy.value = 2 assert getattr(obj, access + "_func").value == 1