mirror of
https://github.com/ChaiScript/ChaiScript.git
synced 2026-02-08 02:36:49 +08:00
Add test to pass unique_ptr<Derived> to function expecting unique_ptr<Base>&&.
This commit is contained in:
parent
077c93ab27
commit
52c18e69a6
@ -1192,6 +1192,38 @@ TEST_CASE("Call methods on base class through unique_ptr<derived>")
|
|||||||
CHECK(chai.eval<int>("var uptr2 = make_Unique_Ptr_Test_Derived_Class(); uptr2.getI()") == 5);
|
CHECK(chai.eval<int>("var uptr2 = make_Unique_Ptr_Test_Derived_Class(); uptr2.getI()") == 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int move_Unique_Ptr(std::unique_ptr<Unique_Ptr_Test_Class>&& uptr)
|
||||||
|
{
|
||||||
|
std::unique_ptr<Unique_Ptr_Test_Class> uptr2 = std::move(uptr);
|
||||||
|
return uptr2->getI();
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Pass unique_ptr<T> as a rvalue reference to a function")
|
||||||
|
{
|
||||||
|
chaiscript::ChaiScript_Basic chai(create_chaiscript_stdlib(),create_chaiscript_parser());
|
||||||
|
|
||||||
|
chai.add(chaiscript::var(std::make_unique<Unique_Ptr_Test_Class>()), "uptr");
|
||||||
|
chai.add(chaiscript::fun(move_Unique_Ptr), "move");
|
||||||
|
|
||||||
|
CHECK(chai.eval<int>("move(uptr)") == 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
int move_Unique_Ptr_Base(std::unique_ptr<Unique_Ptr_Test_Base_Class>&& uptr)
|
||||||
|
{
|
||||||
|
std::unique_ptr<Unique_Ptr_Test_Base_Class> uptr2 = std::move(uptr);
|
||||||
|
return uptr2->getI();
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Pass unique_ptr<D> as a rvalue reference to a function expecting unique_ptr<B>&&")
|
||||||
|
{
|
||||||
|
chaiscript::ChaiScript_Basic chai(create_chaiscript_stdlib(),create_chaiscript_parser());
|
||||||
|
|
||||||
|
chai.add(chaiscript::var(std::make_unique<Unique_Ptr_Test_Derived_Class>()), "uptr");
|
||||||
|
chai.add(chaiscript::fun(move_Unique_Ptr_Base), "move");
|
||||||
|
|
||||||
|
CHECK(chai.eval<int>("move(uptr)") == 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class A
|
class A
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user