From ca7d4ab734c90e0fe2231cce12c2415a5aed657b Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Thu, 2 Feb 2017 13:17:59 -0800 Subject: [PATCH] Add test for calling method of unique_ptr var --- unittests/compiled_tests.cpp | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/unittests/compiled_tests.cpp b/unittests/compiled_tests.cpp index 8bebc92..062cd13 100644 --- a/unittests/compiled_tests.cpp +++ b/unittests/compiled_tests.cpp @@ -1123,12 +1123,33 @@ TEST_CASE("Use unique_ptr") CHECK(chai.eval("iptr") == 2); chai.eval("derefi(iptr)"); CHECK(chai.eval("iptr") == 3); - - - } +class Unique_Ptr_Test_Class +{ + public: + Unique_Ptr_Test_Class() = default; + Unique_Ptr_Test_Class(const Unique_Ptr_Test_Class&) = default; + Unique_Ptr_Test_Class(Unique_Ptr_Test_Class &&) = default; + Unique_Ptr_Test_Class &operator=(const Unique_Ptr_Test_Class&) = default; + Unique_Ptr_Test_Class &operator=(Unique_Ptr_Test_Class&&) = default; + virtual ~Unique_Ptr_Test_Class() = default; + + int getI() const {return 5;} +}; + +TEST_CASE("Call methods 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(&Unique_Ptr_Test_Class::getI), "getI"); + CHECK(chai.eval("uptr.getI()") == 5); +} + + + class A { public: