Files
n8n-openai-adapter/lib/elixir/test/elixir/function_test.exs
T

84 lines
1.9 KiB
Elixir

Code.require_file("test_helper.exs", __DIR__)
defmodule DummyFunction do
def function_with_arity_0 do
true
end
def zero?(0), do: true
def zero?(_), do: false
end
defmodule FunctionTest do
use ExUnit.Case, async: true
doctest Function
import Function
@information_keys_for_named [:type, :module, :arity, :name, :env]
@information_keys_for_anonymous @information_keys_for_named ++
[:pid, :index, :new_index, :new_uniq, :uniq]
describe "capture/3" do
test "captures module functions with arity 0" do
f = capture(DummyFunction, :function_with_arity_0, 0)
assert is_function(f)
end
test "captures module functions with any arity" do
f = capture(DummyFunction, :zero?, 1)
assert is_function(f)
assert f.(0)
end
end
describe "info/1" do
test "returns info for named captured functions" do
f = &DummyFunction.zero?/1
expected = [module: DummyFunction, name: :zero?, arity: 1, env: [], type: :external]
result = info(f)
assert expected == result
end
test "returns info for anonymous functions" do
f = fn x -> x end
result = info(f)
for {key, _value} <- result do
assert key in @information_keys_for_anonymous
end
end
end
describe "info/2" do
test "returns info for every possible information key for named functions" do
f = &DummyFunction.zero?/1
for x <- @information_keys_for_named do
assert {^x, _} = info(f, x)
end
end
test "returns info for every possible information key for anonymous functions" do
f = &DummyFunction.zero?/1
for x <- @information_keys_for_anonymous do
assert {^x, _} = info(f, x)
end
assert {:arity, 1} = info(f, :arity)
end
end
describe "identity/1" do
test "returns whatever it gets passed" do
assert :hello = Function.identity(:hello)
end
end
end