Add tests for new inheritance code.
[luabind.git] / test / test_dynamic_type.cpp
blob8b3155bd105dbba60fc51d6fa8a30173463d9f23
1 // Copyright Daniel Wallin 2009. Use, modification and distribution is
2 // subject to the Boost Software License, Version 1.0. (See accompanying
3 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5 #include "test.hpp"
6 #include <luabind/luabind.hpp>
8 struct Base
10 Base(int value)
11 : value(value)
14 virtual ~Base()
17 int g() const
19 return value;
22 int value;
25 struct Derived : Base
27 Derived()
28 : Base(2)
31 int f() const
33 return 1;
37 struct Unregistered : Base
39 Unregistered()
40 : Base(3)
44 std::auto_ptr<Base> make_derived()
46 return std::auto_ptr<Base>(new Derived);
49 std::auto_ptr<Base> make_unregistered()
51 return std::auto_ptr<Base>(new Unregistered);
54 void test_main(lua_State* L)
56 using namespace luabind;
58 module(L) [
59 class_<Base>("Base")
60 .def("g", &Base::g),
61 class_<Derived, Base>("Derived")
62 .def("f", &Derived::f),
63 def("make_derived", &make_derived),
64 def("make_unregistered", &make_unregistered)
67 DOSTRING(L,
68 "x = make_derived()\n"
69 "assert(x:f() == 1)\n"
72 DOSTRING(L,
73 "x = make_unregistered()\n"
74 "assert(x:g() == 3)\n"