Skip to content

Commit 78d63e3

Browse files
authored
chore: add tests for userdata (#74)
1 parent 8142867 commit 78d63e3

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

test/luerl_test.exs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,37 @@ defmodule LuerlTest do
9191
state
9292
)
9393
end
94+
95+
test "userdata can be returned from functions" do
96+
random = Enum.random(1..100)
97+
98+
get_random = fn _args, state ->
99+
{data, state} = :luerl.encode(%{random: {:userdata, random}}, state)
100+
101+
{[data, {:userdata, random}], state}
102+
end
103+
104+
return_random = fn [data], state ->
105+
case data do
106+
{:userdata, value} ->
107+
{[value], state}
108+
109+
table ->
110+
[{"random", {:userdata, random}}] = :luerl.decode(table, state)
111+
{[random], state}
112+
end
113+
end
114+
115+
assert {:ok, state} = :luerl.set_table_keys_dec(["get_random"], get_random, :luerl.init())
116+
assert {:ok, state} = :luerl.set_table_keys_dec(["return_random"], return_random, state)
117+
118+
assert {:ok, [^random, ^random], _state} =
119+
:luerl.do(
120+
"""
121+
local table, userdata = get_random()
122+
return return_random(table), return_random(userdata)
123+
""",
124+
state
125+
)
126+
end
94127
end

0 commit comments

Comments
 (0)