Mercurial > hg > orthanc
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 } |