erlang: round-out BIFs (+40 tests), full plan ticked at 530/530
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 10s

This commit is contained in:
2026-04-25 08:06:17 +00:00
parent a8cfd84f18
commit 44dc32aa54
5 changed files with 429 additions and 6 deletions

View File

@@ -1043,6 +1043,88 @@
(ev "T1 = ets:new(t13, [set]), T2 = ets:new(t14, [set]), ets:insert(T1, {x, 1}), ets:insert(T2, {x, 99}), [{x, A}] = ets:lookup(T1, x), [{x, B}] = ets:lookup(T2, x), A + B")
100)
;; ── more BIFs ─────────────────────────────────────────────────
(er-eval-test "abs neg" (ev "abs(-7)") 7)
(er-eval-test "abs pos" (ev "abs(42)") 42)
(er-eval-test "abs zero" (ev "abs(0)") 0)
(er-eval-test "min" (ev "min(3, 5)") 3)
(er-eval-test "min equal" (ev "min(7, 7)") 7)
(er-eval-test "max" (ev "max(3, 5)") 5)
(er-eval-test "max neg" (ev "max(-10, -2)") -2)
(er-eval-test "tuple_to_list head"
(nm (ev "hd(tuple_to_list({a, b, c}))")) "a")
(er-eval-test "tuple_to_list len"
(ev "length(tuple_to_list({1, 2, 3, 4, 5}))") 5)
(er-eval-test "list_to_tuple roundtrip"
(ev "tuple_size(list_to_tuple([10, 20, 30]))") 3)
(er-eval-test "integer_to_list" (ev "integer_to_list(42)") "42")
(er-eval-test "integer_to_list neg" (ev "integer_to_list(-99)") "-99")
(er-eval-test "list_to_integer" (ev "list_to_integer(\"123\")") 123)
(er-eval-test "list_to_integer roundtrip"
(ev "list_to_integer(integer_to_list(7))") 7)
(er-eval-test "is_function fun"
(nm (ev "F = fun (X) -> X end, is_function(F)")) "true")
(er-eval-test "is_function not"
(nm (ev "is_function(42)")) "false")
(er-eval-test "is_function arity match"
(nm (ev "F = fun (X, Y) -> X + Y end, is_function(F, 2)")) "true")
(er-eval-test "is_function arity mismatch"
(nm (ev "F = fun (X) -> X end, is_function(F, 5)")) "false")
;; lists module
(er-eval-test "lists:seq 1..5"
(ev "length(lists:seq(1, 5))") 5)
(er-eval-test "lists:seq head"
(ev "hd(lists:seq(10, 20))") 10)
(er-eval-test "lists:seq sum"
(ev "lists:sum(lists:seq(1, 100))") 5050)
(er-eval-test "lists:seq with step"
(ev "length(lists:seq(0, 20, 2))") 11)
(er-eval-test "lists:seq empty"
(get (ev "lists:seq(5, 1)") :tag) "nil")
(er-eval-test "lists:sum empty" (ev "lists:sum([])") 0)
(er-eval-test "lists:sum 5"
(ev "lists:sum([1, 2, 3, 4, 5])") 15)
(er-eval-test "lists:nth 1" (ev "lists:nth(1, [10, 20, 30])") 10)
(er-eval-test "lists:nth mid"
(nm (ev "lists:nth(2, [a, b, c])")) "b")
(er-eval-test "lists:last"
(nm (ev "lists:last([a, b, c, d])")) "d")
(er-eval-test "lists:last single" (ev "lists:last([42])") 42)
(er-eval-test "lists:member yes"
(nm (ev "lists:member(3, [1, 2, 3, 4])")) "true")
(er-eval-test "lists:member no"
(nm (ev "lists:member(99, [1, 2, 3])")) "false")
(er-eval-test "lists:append"
(ev "length(lists:append([1, 2], [3, 4, 5]))") 5)
(er-eval-test "lists:filter"
(ev "length(lists:filter(fun (X) -> X > 2 end, [1, 2, 3, 4, 5]))") 3)
(er-eval-test "lists:filter sum"
(ev "lists:sum(lists:filter(fun (X) -> X rem 2 =:= 0 end, lists:seq(1, 20)))") 110)
(er-eval-test "lists:any false"
(nm (ev "lists:any(fun (X) -> X > 100 end, [1, 2, 3])")) "false")
(er-eval-test "lists:any true"
(nm (ev "lists:any(fun (X) -> X > 2 end, [1, 2, 3])")) "true")
(er-eval-test "lists:all true"
(nm (ev "lists:all(fun (X) -> X > 0 end, [1, 2, 3])")) "true")
(er-eval-test "lists:all false"
(nm (ev "lists:all(fun (X) -> X > 1 end, [1, 2, 3])")) "false")
(er-eval-test "lists:duplicate len"
(ev "length(lists:duplicate(5, foo))") 5)
(er-eval-test "lists:duplicate val"
(nm (ev "hd(lists:duplicate(3, marker))")) "marker")
(define
er-eval-test-summary
(str "eval " er-eval-test-pass "/" er-eval-test-count))