comparison UnitTests/Lua.cpp @ 397:941ea46e9e26 lua-scripting

lua filter of new instances
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 02 May 2013 16:34:00 +0200
parents 7dec4f3c922c
children
comparison
equal deleted inserted replaced
394:9784f19f7e1b 397:941ea46e9e26
3 #include "../Core/Lua/LuaFunctionCall.h" 3 #include "../Core/Lua/LuaFunctionCall.h"
4 4
5 5
6 TEST(Lua, Simple) 6 TEST(Lua, Simple)
7 { 7 {
8 try 8 Orthanc::LuaContext lua;
9 lua.Execute(Orthanc::EmbeddedResources::LUA_TOOLBOX);
10 lua.Execute("a={}");
11 lua.Execute("a['x'] = 10");
12 lua.Execute("a['y'] = {}");
13 lua.Execute("a['y'][1] = 20");
14 lua.Execute("a['y'][2] = 20");
15 lua.Execute("PrintRecursive(a)");
16
17 lua.Execute("function f(a) print(a.bool) return a.bool,20,30,40,50,60 end");
18
19 Json::Value v, vv, o;
20 //v["a"] = "b";
21 v.append("hello");
22 v.append("world");
23 v.append("42");
24 vv.append("sub");
25 vv.append("set");
26 v.append(vv);
27 o = Json::objectValue;
28 o["x"] = 10;
29 o["y"] = 20;
30 o["z"] = 20.5f;
31 v.append(o);
32
9 { 33 {
10 Orthanc::LuaContext lua; 34 Orthanc::LuaFunctionCall f(lua, "PrintRecursive");
11 lua.Execute(Orthanc::EmbeddedResources::LUA_TOOLBOX); 35 f.PushJSON(v);
12 lua.Execute("a={}"); 36 f.Execute();
13 lua.Execute("a['x'] = 10"); 37 }
14 lua.Execute("a['y'] = {}");
15 lua.Execute("a['y'][1] = 20");
16 lua.Execute("a['y'][2] = 20");
17 lua.Execute("rPrint(a)");
18 38
19 lua.Execute("function f(a) print(a.bool) return a.bool,20,30,40,50,60 end"); 39 {
40 Orthanc::LuaFunctionCall f(lua, "f");
41 f.PushJSON(o);
42 ASSERT_THROW(f.ExecutePredicate(), Orthanc::LuaException);
43 }
20 44
21 Json::Value v, vv, o; 45 o["bool"] = false;
22 //v["a"] = "b";
23 v.append("hello");
24 v.append("world");
25 v.append("42");
26 vv.append("coucou");
27 vv.append("toi");
28 v.append(vv);
29 o = Json::objectValue;
30 o["x"] = 10;
31 o["y"] = 20;
32 o["z"] = 20.5f;
33 v.append(o);
34 46
35 { 47 {
36 Orthanc::LuaFunctionCall f(lua, "rPrint"); 48 Orthanc::LuaFunctionCall f(lua, "f");
37 f.PushJSON(v); 49 f.PushJSON(o);
38 f.Execute(); 50 ASSERT_FALSE(f.ExecutePredicate());
39 } 51 }
40 52
41 { 53 o["bool"] = true;
42 Orthanc::LuaFunctionCall f(lua, "f");
43 f.PushJSON(o);
44 ASSERT_THROW(f.ExecutePredicate(), Orthanc::LuaException);
45 }
46 54
47 o["bool"] = false;
48
49 {
50 Orthanc::LuaFunctionCall f(lua, "f");
51 f.PushJSON(o);
52 ASSERT_FALSE(f.ExecutePredicate());
53 }
54
55 o["bool"] = true;
56
57 {
58 Orthanc::LuaFunctionCall f(lua, "f");
59 f.PushJSON(o);
60 ASSERT_TRUE(f.ExecutePredicate());
61 }
62
63 }
64 catch (Orthanc::LuaException e)
65 { 55 {
66 std::cerr << "EXCEPTION: [" << e.What() << "]" << std::endl; 56 Orthanc::LuaFunctionCall f(lua, "f");
57 f.PushJSON(o);
58 ASSERT_TRUE(f.ExecutePredicate());
67 } 59 }
68 } 60 }
61
62
63 TEST(Lua, Existing)
64 {
65 Orthanc::LuaContext lua;
66 lua.Execute("a={}");
67 lua.Execute("function f() end");
68
69 ASSERT_TRUE(lua.IsExistingFunction("f"));
70 ASSERT_FALSE(lua.IsExistingFunction("a"));
71 ASSERT_FALSE(lua.IsExistingFunction("Dummy"));
72 }