Add C++ test for user defined conversion

This commit is contained in:
Jason Turner
2014-10-28 20:23:19 -06:00
parent 7b42d5307a
commit e85be6eb3d
4 changed files with 52 additions and 10 deletions

View File

@@ -2,6 +2,8 @@
#include <chaiscript/chaiscript.hpp>
#include <string>
class TestBaseType
{
public:
@@ -22,6 +24,23 @@ class TestBaseType
TestBaseType &operator=(const TestBaseType &);
};
class Type2
{
public:
Type2(TestBaseType t_bt)
: m_bt(std::move(t_bt))
{
}
int get_val() const
{
return m_bt.val;
}
private:
TestBaseType m_bt;
};
enum TestEnum
{
TestValue1 = 1
@@ -95,6 +114,7 @@ CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_test_mo
m->add(chaiscript::user_type<TestBaseType>(), "TestBaseType");
m->add(chaiscript::user_type<TestDerivedType>(), "TestDerivedType");
m->add(chaiscript::user_type<TestMoreDerivedType>(), "TestMoreDerivedType");
m->add(chaiscript::user_type<Type2>(), "Type2");
m->add(chaiscript::constructor<TestBaseType ()>(), "TestBaseType");
// m->add(chaiscript::constructor<TestBaseType (int)>(), "TestBaseType");
@@ -135,7 +155,9 @@ CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_test_mo
m->add(chaiscript::fun(&to_int), "to_int");
m->add(chaiscript::fun(&TestBaseType::constMe), "constMe");
m->add(chaiscript::type_conversion<TestBaseType, Type2>([](const TestBaseType &t_bt) { return Type2(t_bt); }));
m->add(chaiscript::fun(&Type2::get_val), "get_val");
return m;
}