From 4535b6113cf105287e060042b956251d4cbf4198 Mon Sep 17 00:00:00 2001 From: Donald Lee Date: Sun, 4 Jul 2021 23:13:32 +0800 Subject: [PATCH] tests: Add test for calling Lua function Signed-off-by: Donald Lee --- tests/lib/script1.lua | 21 ++++++++++++++++++++- tests/lib/test_frrscript.c | 20 ++++++++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/tests/lib/script1.lua b/tests/lib/script1.lua index e9ebc29bd9..f7cd8a90b9 100644 --- a/tests/lib/script1.lua +++ b/tests/lib/script1.lua @@ -1 +1,20 @@ -a = a + b +function foo(a, b) + a = a + b + return { + a = a, + b = b, + } +end + +function fact(n) + function helper(m) + if m == 0 then + return 1 + else + return m * helper(m - 1) + end + end + return { + n = helper(n) + } +end diff --git a/tests/lib/test_frrscript.c b/tests/lib/test_frrscript.c index bd75cc5552..4d34b58832 100644 --- a/tests/lib/test_frrscript.c +++ b/tests/lib/test_frrscript.c @@ -24,14 +24,30 @@ int main(int argc, char **argv) { frrscript_init("./lib"); + struct frrscript *fs = frrscript_new("script1"); + int result; - struct frrscript *fs = frrscript_load("script1", NULL); long long a = 100, b = 200; - int result = frrscript_call(fs, ("a", &a), ("b", &b)); + result = frrscript_load(fs, "foo", NULL); + assert(result == 0); + result = frrscript_call(fs, "foo", ("a", &a), ("b", &b)); assert(result == 0); assert(a == 300); assert(b == 200); + result = frrscript_load(fs, "does_not_exist", NULL); + assert(result == 1); + + result = frrscript_call(fs, "does_not_exist", ("a", &a), ("b", &b)); + assert(result == 1); + + frrscript_load(fs, "fact", NULL); + long long n = 5; + + result = frrscript_call(fs, "fact", ("n", &n)); + assert(result == 0); + assert(n == 120); + return 0; } -- 2.39.5