test_unique_ptr_member.py 909 Bytes
Newer Older
1
2
3
4
5
6
# -*- coding: utf-8 -*-
import pytest

from pybind11_tests import unique_ptr_member as m


7
8
9
10
11
def test_make_unique_pointee():
    m.to_cout("")
    obj = m.make_unique_pointee()
    assert obj.get_int() == 213
    m.to_cout("")
12
13
14


def test_pointee_and_ptr_owner():
15
    m.to_cout("")
16
17
    obj = m.pointee()
    assert obj.get_int() == 213
18
19
    owner = m.ptr_owner(obj)
    with pytest.raises(RuntimeError) as exc_info:
20
        obj.get_int()
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    assert str(exc_info.value) == "Invalid object instance"
    assert owner.is_owner()
    m.to_cout("before give up")
    reclaimed = owner.give_up_ownership_via_shared_ptr()
    m.to_cout("after give up")
    assert not owner.is_owner()
    # assert reclaimed.get_int() == 213
    del reclaimed
    m.to_cout("after del")
    m.to_cout("3")
    m.to_cout("")


def test_cpp_pattern():
    m.to_cout("")
    res = m.cpp_pattern()
    assert res == 111111
    m.to_cout("")