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