From 2549b4e9839924c1c132e150c4c0dc280a418d8f Mon Sep 17 00:00:00 2001 From: Gabriel Aubut-Lussier Date: Fri, 3 Feb 2017 23:19:25 -0500 Subject: [PATCH] Add test to call base class methods through std::unique_ptr. --- unittests/compiled_tests.cpp | 38 ++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/unittests/compiled_tests.cpp b/unittests/compiled_tests.cpp index dc256ea..44f23bd 100644 --- a/unittests/compiled_tests.cpp +++ b/unittests/compiled_tests.cpp @@ -1147,14 +1147,40 @@ std::unique_ptr make_Unique_Ptr_Test_Class() TEST_CASE("Call methods through unique_ptr") { - chaiscript::ChaiScript_Basic chai(create_chaiscript_stdlib(),create_chaiscript_parser()); + chaiscript::ChaiScript_Basic chai(create_chaiscript_stdlib(),create_chaiscript_parser()); - chai.add(chaiscript::var(std::make_unique()), "uptr"); - chai.add(chaiscript::fun(make_Unique_Ptr_Test_Class), "make_Unique_Ptr_Test_Class"); - chai.add(chaiscript::fun(&Unique_Ptr_Test_Class::getI), "getI"); - CHECK(chai.eval("uptr.getI()") == 5); - CHECK(chai.eval("var uptr2 = make_Unique_Ptr_Test_Class(); uptr2.getI()") == 5); + chai.add(chaiscript::var(std::make_unique()), "uptr"); + chai.add(chaiscript::fun(make_Unique_Ptr_Test_Class), "make_Unique_Ptr_Test_Class"); + chai.add(chaiscript::fun(&Unique_Ptr_Test_Class::getI), "getI"); + CHECK(chai.eval("uptr.getI()") == 5); + CHECK(chai.eval("var uptr2 = make_Unique_Ptr_Test_Class(); uptr2.getI()") == 5); +} + +class Unique_Ptr_Test_Base_Class +{ + public: + int getI() const {return 5;} +}; + +class Unique_Ptr_Test_Derived_Class : public Unique_Ptr_Test_Base_Class +{}; + +std::unique_ptr make_Unique_Ptr_Test_Derived_Class() +{ + return std::make_unique(); +} + +TEST_CASE("Call methods on base class through unique_ptr") +{ + chaiscript::ChaiScript_Basic chai(create_chaiscript_stdlib(),create_chaiscript_parser()); + + chai.add(chaiscript::var(std::make_unique()), "uptr"); + chai.add(chaiscript::fun(make_Unique_Ptr_Test_Derived_Class), "make_Unique_Ptr_Test_Derived_Class"); + chai.add(chaiscript::fun(&Unique_Ptr_Test_Base_Class::getI), "getI"); + chai.add(chaiscript::base_class()); + CHECK(chai.eval("uptr.getI()") == 5); + CHECK(chai.eval("var uptr2 = make_Unique_Ptr_Test_Derived_Class(); uptr2.getI()") == 5); }