Skip to content

Commit

Permalink
Strip out smart_holder code and tests from test_class_sh_shared_ptr_c…
Browse files Browse the repository at this point in the history
…opy_move.
  • Loading branch information
Ralf W. Grosse-Kunstleve committed Jul 9, 2024
1 parent 7e34433 commit 75d3a8a
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 39 deletions.
31 changes: 3 additions & 28 deletions tests/test_class_sh_shared_ptr_copy_move.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
#include <pybind11/smart_holder.h>

#include "pybind11_tests.h"

#include <memory>
Expand All @@ -9,7 +7,7 @@
namespace pybind11_tests {
namespace {

const std::string fooNames[] = {"ShPtr_", "SmHld_"};
const std::string fooNames[] = {"ShPtr_"};

template <int SerNo>
struct Foo {
Expand All @@ -29,37 +27,26 @@ struct Foo {
};

using FooShPtr = Foo<0>;
using FooSmHld = Foo<1>;

struct Outer {
std::shared_ptr<FooShPtr> ShPtr;
std::shared_ptr<FooSmHld> SmHld;
Outer()
: ShPtr(std::make_shared<FooShPtr>("Outer")), SmHld(std::make_shared<FooSmHld>("Outer")) {}
Outer() : ShPtr(std::make_shared<FooShPtr>("Outer")) {}
std::shared_ptr<FooShPtr> getShPtr() const { return ShPtr; }
std::shared_ptr<FooSmHld> getSmHld() const { return SmHld; }
};

} // namespace
} // namespace pybind11_tests

PYBIND11_TYPE_CASTER_BASE_HOLDER(pybind11_tests::FooShPtr,
std::shared_ptr<pybind11_tests::FooShPtr>)
PYBIND11_SMART_HOLDER_TYPE_CASTERS(pybind11_tests::FooSmHld)

namespace pybind11_tests {

TEST_SUBMODULE(class_sh_shared_ptr_copy_move, m) {
namespace py = pybind11;

py::class_<FooShPtr, std::shared_ptr<FooShPtr>>(m, "FooShPtr")
.def("get_history", &FooShPtr::get_history);
py::classh<FooSmHld>(m, "FooSmHld").def("get_history", &FooSmHld::get_history);

auto outer = py::class_<Outer>(m, "Outer").def(py::init());
#define MAKE_PROP(PropTyp) \
MAKE_PROP_FOO(ShPtr, PropTyp) \
MAKE_PROP_FOO(SmHld, PropTyp)
#define MAKE_PROP(PropTyp) MAKE_PROP_FOO(ShPtr, PropTyp)

#define MAKE_PROP_FOO(FooTyp, PropTyp) \
.def_##PropTyp(#FooTyp "_" #PropTyp "_default", &Outer::FooTyp) \
Expand Down Expand Up @@ -88,25 +75,13 @@ TEST_SUBMODULE(class_sh_shared_ptr_copy_move, m) {
l.append(o);
return l;
});
m.def("test_SmHld_copy", []() {
auto o = std::make_shared<FooSmHld>("copy");
auto l = py::list();
l.append(o);
return l;
});

m.def("test_ShPtr_move", []() {
auto o = std::make_shared<FooShPtr>("move");
auto l = py::list();
l.append(std::move(o));
return l;
});
m.def("test_SmHld_move", []() {
auto o = std::make_shared<FooSmHld>("move");
auto l = py::list();
l.append(std::move(o));
return l;
});
}

} // namespace pybind11_tests
12 changes: 1 addition & 11 deletions tests/test_class_sh_shared_ptr_copy_move.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,11 @@ def test_shptr_copy():
assert txt == "FooShPtr_copy"


def test_smhld_copy():
txt = m.test_SmHld_copy()[0].get_history()
assert txt == "FooSmHld_copy"


def test_shptr_move():
txt = m.test_ShPtr_move()[0].get_history()
assert txt == "FooShPtr_move"


def test_smhld_move():
txt = m.test_SmHld_move()[0].get_history()
assert txt == "FooSmHld_move"


def _check_property(foo_typ, prop_typ, policy):
o = m.Outer()
name = f"{foo_typ}_{prop_typ}_{policy}"
Expand All @@ -36,6 +26,6 @@ def _check_property(foo_typ, prop_typ, policy):

def test_properties():
for prop_typ in ("readonly", "readwrite", "property_readonly"):
for foo_typ in ("ShPtr", "SmHld"):
for foo_typ in ("ShPtr",):
for policy in ("default", "copy", "move"):
_check_property(foo_typ, prop_typ, policy)

0 comments on commit 75d3a8a

Please sign in to comment.