mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-26 07:02:11 +00:00
Undoing accidental commit (this was meant to go to a new branch).
Revert "WIP: test setup complete, AddInCppUniquePtr failing (reproduces PyCLIF smart_ptrs_test failure)."
This reverts commit 20107030ab
.
This commit is contained in:
parent
20107030ab
commit
6285177afe
@ -1,61 +0,0 @@
|
||||
#include "pybind11_tests.h"
|
||||
|
||||
#include <pybind11/smart_holder.h>
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace pybind11_tests {
|
||||
namespace test_class_sh_with_alias {
|
||||
|
||||
struct Abase {
|
||||
int val = 0;
|
||||
virtual ~Abase() = default;
|
||||
Abase(int val_) : val{val_} {}
|
||||
int Get() const { return val * 10 + 3; }
|
||||
virtual int Add(int other_val) const = 0;
|
||||
|
||||
// Some compilers complain about implicitly defined versions of some of the following:
|
||||
Abase(const Abase &) = default;
|
||||
Abase(Abase &&) = default;
|
||||
Abase &operator=(const Abase &) = default;
|
||||
Abase &operator=(Abase &&) = default;
|
||||
};
|
||||
|
||||
struct AbaseAlias : Abase {
|
||||
using Abase::Abase;
|
||||
|
||||
int Add(int other_val) const override {
|
||||
PYBIND11_OVERRIDE_PURE(int, /* Return type */
|
||||
Abase, /* Parent class */
|
||||
Add, /* Name of function in C++ (must match Python name) */
|
||||
other_val);
|
||||
}
|
||||
};
|
||||
|
||||
int AddInCppRawPtr(const Abase *obj, int other_val) { return obj->Add(other_val) * 10 + 7; }
|
||||
|
||||
int AddInCppSharedPtr(std::shared_ptr<Abase> obj, int other_val) {
|
||||
return obj->Add(other_val) * 100 + 11;
|
||||
}
|
||||
|
||||
int AddInCppUniquePtr(std::unique_ptr<Abase> obj, int other_val) {
|
||||
return obj->Add(other_val) * 100 + 13;
|
||||
}
|
||||
|
||||
} // namespace test_class_sh_with_alias
|
||||
} // namespace pybind11_tests
|
||||
|
||||
PYBIND11_SMART_HOLDER_TYPE_CASTERS(pybind11_tests::test_class_sh_with_alias::Abase)
|
||||
|
||||
TEST_SUBMODULE(class_sh_with_alias, m) {
|
||||
using namespace pybind11_tests::test_class_sh_with_alias;
|
||||
|
||||
py::classh<Abase, AbaseAlias>(m, "Abase")
|
||||
.def(py::init<int>(), py::arg("val"))
|
||||
.def("Get", &Abase::Get)
|
||||
.def("Add", &Abase::Add, py::arg("other_val"));
|
||||
|
||||
m.def("AddInCppRawPtr", AddInCppRawPtr, py::arg("obj"), py::arg("other_val"));
|
||||
m.def("AddInCppSharedPtr", AddInCppSharedPtr, py::arg("obj"), py::arg("other_val"));
|
||||
m.def("AddInCppUniquePtr", AddInCppUniquePtr, py::arg("obj"), py::arg("other_val"));
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from pybind11_tests import class_sh_with_alias as m
|
||||
|
||||
|
||||
class PyDrvd(m.Abase):
|
||||
def __init__(self, val):
|
||||
super(PyDrvd, self).__init__(val)
|
||||
|
||||
def Add(self, other_val):
|
||||
return self.Get() * 100 + other_val
|
||||
|
||||
|
||||
def test_drvd_add():
|
||||
drvd = PyDrvd(74)
|
||||
assert drvd.Add(38) == (74 * 10 + 3) * 100 + 38
|
||||
|
||||
|
||||
def test_add_in_cpp_raw_ptr():
|
||||
drvd = PyDrvd(52)
|
||||
assert m.AddInCppRawPtr(drvd, 27) == ((52 * 10 + 3) * 100 + 27) * 10 + 7
|
||||
|
||||
|
||||
def test_add_in_cpp_shared_ptr():
|
||||
drvd = PyDrvd(36)
|
||||
assert m.AddInCppSharedPtr(drvd, 56) == ((36 * 10 + 3) * 100 + 56) * 100 + 11
|
||||
|
||||
|
||||
def test_add_in_cpp_unique_ptr():
|
||||
drvd = PyDrvd(38)
|
||||
assert m.AddInCppUniquePtr(drvd, 29) == ((38 * 10 + 3) * 100 + 29) * 100 + 13
|
Loading…
Reference in New Issue
Block a user