]> git.mxchange.org Git - simgear.git/blob - simgear/nasal/cppbind/cppbind_test.cxx
Some basic C++/Nasal binding helpers
[simgear.git] / simgear / nasal / cppbind / cppbind_test.cxx
1 #include "NasalHash.hxx"
2
3 #include <cstring>
4 #include <iostream>
5
6 #define VERIFY(a) \
7   if( !(a) ) \
8   { \
9     std::cerr << "failed:" << #a << std::endl; \
10     return 1; \
11   }
12
13 int main(int argc, char* argv[])
14 {
15   naContext c = naNewContext();
16   naRef r;
17
18   using namespace nasal;
19
20   r = to_nasal(c, "Test");
21   VERIFY( strncmp("Test", naStr_data(r), naStr_len(r)) == 0 );
22
23   r = to_nasal(c, std::string("Test"));
24   VERIFY( strncmp("Test", naStr_data(r), naStr_len(r)) == 0 );
25
26   r = to_nasal(c, 42);
27   VERIFY( naNumValue(r).num == 42 );
28
29   r = to_nasal(c, 4.2);
30   VERIFY( naNumValue(r).num == 4.2 );
31
32   std::vector<int> vec;
33   r = to_nasal(c, vec);
34
35   Hash hash(c);
36   hash.set("vec", r);
37   hash.set("vec2", vec);
38   hash.set("name", "my-name");
39   hash.set("string", std::string("blub"));
40
41   r = to_nasal(c, hash);
42   VERIFY( naIsHash(r) );
43
44   Hash mod = hash.createHash("mod");
45   mod.set("parent", hash);
46
47   naFreeContext(c);
48
49   return 0;
50 }