From 328aef10d767872be1fc9a8773ee295ee4699582 Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Sun, 27 Mar 2016 18:24:38 -0600 Subject: [PATCH] Add failing test for non-const shared_ptr & --- src/test_module.cpp | 14 ++++++++++++++ unittests/shared_ptr_update.chai | 24 ++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 unittests/shared_ptr_update.chai diff --git a/src/test_module.cpp b/src/test_module.cpp index ebccf73..5109baa 100644 --- a/src/test_module.cpp +++ b/src/test_module.cpp @@ -114,6 +114,16 @@ std::shared_ptr null_factory() return std::shared_ptr(); } +void update_shared_ptr(std::shared_ptr &ptr) +{ + ptr = std::make_shared(); +} + +void nullify_shared_ptr(std::shared_ptr &ptr) +{ + ptr = nullptr; +} + std::string hello_world() { return "Hello World"; @@ -209,6 +219,10 @@ CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_test_mo m->add(chaiscript::type_conversion()); m->add(chaiscript::constructor(), "Type2"); + m->add(chaiscript::fun(&update_shared_ptr), "update_shared_ptr"); + m->add(chaiscript::fun(&nullify_shared_ptr), "nullify_shared_ptr"); + + return m; } diff --git a/unittests/shared_ptr_update.chai b/unittests/shared_ptr_update.chai new file mode 100644 index 0000000..6378be6 --- /dev/null +++ b/unittests/shared_ptr_update.chai @@ -0,0 +1,24 @@ +load_module("test_module") + +auto o := null_factory(); + +assert_true(o.is_var_null()); + +update_shared_ptr(o); + +assert_false(o.is_var_null()); +assert_true(o.base_only_func() == -9); + +nullify_shared_ptr(o); + +assert_true(o.is_var_null()); + +try { + o.func(); +} catch (e) { + exit(0); +} + +assert_true(false); + +