moved some headers out of detail/
[luabind.git] / test / test_scope.cpp
blob2a14c7c77ed85539236ab178942a1557905c697b
1 #include "test.h"
2 #include <luabind/functor.hpp>
4 namespace
6 LUABIND_ANONYMOUS_FIX int feedback = 0;
8 void f()
10 feedback = 123;
13 void f_(int a)
15 feedback = 124;
18 void f__(int a)
20 feedback = 125;
23 void g()
25 feedback = 2;
28 void g_(int)
30 feedback = 5;
33 void h()
35 feedback = 1;
38 struct test_class
40 test_class()
42 feedback = 321;
47 class test_class2
49 public:
50 test_class2(){};
51 void string_string( const std::string& s1, const std::string& s2)
53 // std::cerr<<s1<<" "<<s2<<std::endl;
57 bool test_scope()
59 using namespace luabind;
61 lua_State* L = lua_open();
62 lua_closer c(L);
64 open(L);
66 module(L)
68 class_<test_class2>("test_class2")
69 .def(constructor<>())
70 .def("string_string",&test_class2::string_string)
73 module(L, "test")
75 class_<test_class>("test_class")
76 .def(constructor<>())
78 def("inner_fun", &f)
80 .enum_("vals")
82 value("val1", 1),
83 value("val2", 2)
86 def("f", &f),
87 def("f", &f_),
89 namespace_("inner")
91 def("g", &g),
92 def("f", &f__)
95 namespace_("inner")
97 def("g", &g_)
102 module(L, "test")
104 namespace_("inner")
106 def("h", &h)
111 if (dostring(L, "test.f()")) return false;
112 if (feedback != 123) return false;
113 if (dostring(L, "test.f(3)")) return false;
114 if (feedback != 124) return false;
116 if (dostring(L, "test.test_class.inner_fun()")) return false;
117 if (feedback != 123) return false;
119 if (dostring(L, "a = test.test_class()")) return false;
120 if (feedback != 321) return false;
121 if (dostring(L, "b = test.test_class.val2")) return false;
122 if (dostring(L, "test.inner.g()")) return false;
123 if (feedback != 2) return false;
124 if (dostring(L, "test.inner.g(7)")) return false;
125 if (feedback != 5) return false;
126 if (dostring(L, "test.inner.f(4)")) return false;
127 if (feedback != 125) return false;
128 if (dostring(L, "test.inner.h()")) return false;
129 if (feedback != 1) return false;
132 return true;