]> git.puffer.fish Git - matthieu/frr.git/commitdiff
tests: Add test for calling Lua function
authorDonald Lee <dlqs@gmx.com>
Sun, 4 Jul 2021 15:13:32 +0000 (23:13 +0800)
committerDonald Lee <dlqs@gmx.com>
Sat, 17 Jul 2021 22:32:03 +0000 (06:32 +0800)
Signed-off-by: Donald Lee <dlqs@gmx.com>
tests/lib/script1.lua
tests/lib/test_frrscript.c

index e9ebc29bd9f16c1ce608bb45b6ffbef454b86a60..f7cd8a90b9defcddfdc858f9203716794f6a83b4 100644 (file)
@@ -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
index bd75cc5552ec6c55e5c5693ef3b146f9aa1b62e0..4d34b588323845300f772048fa0a6c21990b8e5e 100644 (file)
 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;
 }