From 2c2541750ca4b7b604070c75c18d84be833c97d5 Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Tue, 25 Jun 2019 22:48:07 +0100 Subject: stdlib namespace std -> gleam --- gen/src/gleam@any.erl | 43 +++++ gen/src/gleam@atom.erl | 13 ++ gen/src/gleam@bool.erl | 55 ++++++ gen/src/gleam@expect.erl | 25 +++ gen/src/gleam@float.erl | 22 +++ gen/src/gleam@http.erl | 6 + gen/src/gleam@int.erl | 28 +++ gen/src/gleam@iodata.erl | 61 +++++++ gen/src/gleam@list.erl | 369 +++++++++++++++++++++++++++++++++++++++ gen/src/gleam@map_dict.erl | 89 ++++++++++ gen/src/gleam@order.erl | 73 ++++++++ gen/src/gleam@result.erl | 67 +++++++ gen/src/gleam@string.erl | 28 +++ gen/src/gleam@tuple.erl | 28 +++ gen/src/std@any.erl | 41 ----- gen/src/std@atom.erl | 13 -- gen/src/std@bool.erl | 55 ------ gen/src/std@expect.erl | 25 --- gen/src/std@float.erl | 22 --- gen/src/std@http.erl | 6 - gen/src/std@int.erl | 28 --- gen/src/std@iodata.erl | 61 ------- gen/src/std@list.erl | 369 --------------------------------------- gen/src/std@map_dict.erl | 89 ---------- gen/src/std@order.erl | 73 -------- gen/src/std@result.erl | 67 ------- gen/src/std@string.erl | 28 --- gen/src/std@tuple.erl | 28 --- gen/test/gleam@any_test.erl | 118 +++++++++++++ gen/test/gleam@atom_test.erl | 24 +++ gen/test/gleam@bool_test.erl | 30 ++++ gen/test/gleam@float_test.erl | 42 +++++ gen/test/gleam@http_test.erl | 6 + gen/test/gleam@int_test.erl | 29 +++ gen/test/gleam@iodata_test.erl | 58 ++++++ gen/test/gleam@list_test.erl | 208 ++++++++++++++++++++++ gen/test/gleam@map_dict_test.erl | 151 ++++++++++++++++ gen/test/gleam@order_test.erl | 47 +++++ gen/test/gleam@result_test.erl | 47 +++++ gen/test/gleam@string_test.erl | 34 ++++ gen/test/gleam@tuple_test.erl | 23 +++ gen/test/std@any_test.erl | 110 ------------ gen/test/std@atom_test.erl | 24 --- gen/test/std@bool_test.erl | 30 ---- gen/test/std@float_test.erl | 42 ----- gen/test/std@http_test.erl | 6 - gen/test/std@int_test.erl | 29 --- gen/test/std@iodata_test.erl | 57 ------ gen/test/std@list_test.erl | 196 --------------------- gen/test/std@map_dict_test.erl | 133 -------------- gen/test/std@order_test.erl | 47 ----- gen/test/std@result_test.erl | 47 ----- gen/test/std@string_test.erl | 33 ---- gen/test/std@tuple_test.erl | 23 --- 54 files changed, 1724 insertions(+), 1682 deletions(-) create mode 100644 gen/src/gleam@any.erl create mode 100644 gen/src/gleam@atom.erl create mode 100644 gen/src/gleam@bool.erl create mode 100644 gen/src/gleam@expect.erl create mode 100644 gen/src/gleam@float.erl create mode 100644 gen/src/gleam@http.erl create mode 100644 gen/src/gleam@int.erl create mode 100644 gen/src/gleam@iodata.erl create mode 100644 gen/src/gleam@list.erl create mode 100644 gen/src/gleam@map_dict.erl create mode 100644 gen/src/gleam@order.erl create mode 100644 gen/src/gleam@result.erl create mode 100644 gen/src/gleam@string.erl create mode 100644 gen/src/gleam@tuple.erl delete mode 100644 gen/src/std@any.erl delete mode 100644 gen/src/std@atom.erl delete mode 100644 gen/src/std@bool.erl delete mode 100644 gen/src/std@expect.erl delete mode 100644 gen/src/std@float.erl delete mode 100644 gen/src/std@http.erl delete mode 100644 gen/src/std@int.erl delete mode 100644 gen/src/std@iodata.erl delete mode 100644 gen/src/std@list.erl delete mode 100644 gen/src/std@map_dict.erl delete mode 100644 gen/src/std@order.erl delete mode 100644 gen/src/std@result.erl delete mode 100644 gen/src/std@string.erl delete mode 100644 gen/src/std@tuple.erl create mode 100644 gen/test/gleam@any_test.erl create mode 100644 gen/test/gleam@atom_test.erl create mode 100644 gen/test/gleam@bool_test.erl create mode 100644 gen/test/gleam@float_test.erl create mode 100644 gen/test/gleam@http_test.erl create mode 100644 gen/test/gleam@int_test.erl create mode 100644 gen/test/gleam@iodata_test.erl create mode 100644 gen/test/gleam@list_test.erl create mode 100644 gen/test/gleam@map_dict_test.erl create mode 100644 gen/test/gleam@order_test.erl create mode 100644 gen/test/gleam@result_test.erl create mode 100644 gen/test/gleam@string_test.erl create mode 100644 gen/test/gleam@tuple_test.erl delete mode 100644 gen/test/std@any_test.erl delete mode 100644 gen/test/std@atom_test.erl delete mode 100644 gen/test/std@bool_test.erl delete mode 100644 gen/test/std@float_test.erl delete mode 100644 gen/test/std@http_test.erl delete mode 100644 gen/test/std@int_test.erl delete mode 100644 gen/test/std@iodata_test.erl delete mode 100644 gen/test/std@list_test.erl delete mode 100644 gen/test/std@map_dict_test.erl delete mode 100644 gen/test/std@order_test.erl delete mode 100644 gen/test/std@result_test.erl delete mode 100644 gen/test/std@string_test.erl delete mode 100644 gen/test/std@tuple_test.erl (limited to 'gen') diff --git a/gen/src/gleam@any.erl b/gen/src/gleam@any.erl new file mode 100644 index 0000000..a81a836 --- /dev/null +++ b/gen/src/gleam@any.erl @@ -0,0 +1,43 @@ +-module(gleam@any). +-compile(no_auto_import). + +-export([from/1, unsafe_coerce/1, string/1, int/1, float/1, atom/1, bool/1, thunk/1, list/2, tuple/1, field/2]). + +from(A) -> + gleam__stdlib:identity(A). + +unsafe_coerce(A) -> + gleam__stdlib:identity(A). + +string(A) -> + gleam__stdlib:decode_string(A). + +int(A) -> + gleam__stdlib:decode_int(A). + +float(A) -> + gleam__stdlib:decode_float(A). + +atom(A) -> + gleam__stdlib:decode_atom(A). + +bool(A) -> + gleam__stdlib:decode_bool(A). + +thunk(A) -> + gleam__stdlib:decode_thunk(A). + +list_any(A) -> + gleam__stdlib:decode_list(A). + +list(Any, Decode) -> + gleam@result:then(list_any(Any), + fun(Capture1) -> + gleam@list:traverse(Capture1, Decode) + end). + +tuple(A) -> + gleam__stdlib:decode_tuple(A). + +field(A, B) -> + gleam__stdlib:decode_field(A, B). diff --git a/gen/src/gleam@atom.erl b/gen/src/gleam@atom.erl new file mode 100644 index 0000000..83392aa --- /dev/null +++ b/gen/src/gleam@atom.erl @@ -0,0 +1,13 @@ +-module(gleam@atom). +-compile(no_auto_import). + +-export([from_string/1, create_from_string/1, to_string/1]). + +from_string(A) -> + gleam__stdlib:atom_from_string(A). + +create_from_string(A) -> + gleam__stdlib:atom_create_from_string(A). + +to_string(A) -> + gleam__stdlib:atom_to_string(A). diff --git a/gen/src/gleam@bool.erl b/gen/src/gleam@bool.erl new file mode 100644 index 0000000..6714261 --- /dev/null +++ b/gen/src/gleam@bool.erl @@ -0,0 +1,55 @@ +-module(gleam@bool). +-compile(no_auto_import). + +-export([negate/1, compare/2, max/2, min/2, to_int/1]). + +negate(Bool) -> + case Bool of + true -> + false; + + false -> + true + end. + +compare(A, B) -> + case {A, B} of + {true, true} -> + eq; + + {true, false} -> + gt; + + {false, false} -> + eq; + + {false, true} -> + lt + end. + +max(A, B) -> + case A of + true -> + true; + + false -> + B + end. + +min(A, B) -> + case A of + false -> + false; + + true -> + B + end. + +to_int(Bool) -> + case Bool of + false -> + 0; + + true -> + 1 + end. diff --git a/gen/src/gleam@expect.erl b/gen/src/gleam@expect.erl new file mode 100644 index 0000000..72a4389 --- /dev/null +++ b/gen/src/gleam@expect.erl @@ -0,0 +1,25 @@ +-module(gleam@expect). +-compile(no_auto_import). + +-export([equal/2, not_equal/2, true/1, false/1, is_ok/1, is_error/1, fail/0]). + +equal(A, B) -> + gleam__stdlib:expect_equal(A, B). + +not_equal(A, B) -> + gleam__stdlib:expect_not_equal(A, B). + +true(A) -> + gleam__stdlib:expect_true(A). + +false(A) -> + gleam__stdlib:expect_false(A). + +is_ok(A) -> + gleam__stdlib:expect_is_ok(A). + +is_error(A) -> + gleam__stdlib:expect_is_error(A). + +fail() -> + true(false). diff --git a/gen/src/gleam@float.erl b/gen/src/gleam@float.erl new file mode 100644 index 0000000..0d8ec08 --- /dev/null +++ b/gen/src/gleam@float.erl @@ -0,0 +1,22 @@ +-module(gleam@float). +-compile(no_auto_import). + +-export([parse/1, to_string/1, ceiling/1, floor/1, round/1, truncate/1]). + +parse(A) -> + gleam__stdlib:parse_float(A). + +to_string(F) -> + gleam@iodata:to_string(gleam@iodata:from_float(F)). + +ceiling(A) -> + math:ceil(A). + +floor(A) -> + math:floor(A). + +round(A) -> + erlang:round(A). + +truncate(A) -> + erlang:trunc(A). diff --git a/gen/src/gleam@http.erl b/gen/src/gleam@http.erl new file mode 100644 index 0000000..8863ae6 --- /dev/null +++ b/gen/src/gleam@http.erl @@ -0,0 +1,6 @@ +-module(gleam@http). +-compile(no_auto_import). + +-export([]). + + diff --git a/gen/src/gleam@int.erl b/gen/src/gleam@int.erl new file mode 100644 index 0000000..49641a6 --- /dev/null +++ b/gen/src/gleam@int.erl @@ -0,0 +1,28 @@ +-module(gleam@int). +-compile(no_auto_import). + +-export([parse/1, to_string/1, to_base_string/2, compare/2]). + +parse(A) -> + gleam__stdlib:parse_int(A). + +to_string(A) -> + erlang:integer_to_binary(A). + +to_base_string(A, B) -> + erlang:integer_to_binary(A, B). + +compare(A, B) -> + case A =:= B of + true -> + eq; + + false -> + case A < B of + true -> + lt; + + false -> + gt + end + end. diff --git a/gen/src/gleam@iodata.erl b/gen/src/gleam@iodata.erl new file mode 100644 index 0000000..cf7942e --- /dev/null +++ b/gen/src/gleam@iodata.erl @@ -0,0 +1,61 @@ +-module(gleam@iodata). +-compile(no_auto_import). + +-export([prepend/2, append/2, prepend_iodata/2, append_iodata/2, from_strings/1, concat/1, new/1, to_string/1, byte_size/1, from_float/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, is_equal/2, is_empty/1]). + +prepend(A, B) -> + gleam__stdlib:iodata_prepend(A, B). + +append(A, B) -> + gleam__stdlib:iodata_append(A, B). + +prepend_iodata(A, B) -> + gleam__stdlib:iodata_prepend(A, B). + +append_iodata(A, B) -> + gleam__stdlib:iodata_append(A, B). + +from_strings(A) -> + gleam__stdlib:identity(A). + +concat(A) -> + gleam__stdlib:identity(A). + +new(A) -> + gleam__stdlib:identity(A). + +to_string(A) -> + erlang:iolist_to_binary(A). + +byte_size(A) -> + erlang:iolist_size(A). + +from_float(A) -> + io_lib_format:fwrite_g(A). + +lowercase(A) -> + string:lowercase(A). + +uppercase(A) -> + string:uppercase(A). + +reverse(A) -> + string:reverse(A). + +erl_split(A, B, C) -> + string:split(A, B, C). + +split(Iodata, On) -> + erl_split(Iodata, On, all). + +erl_replace(A, B, C, D) -> + string:replace(A, B, C, D). + +replace(Iodata, Pattern, Replacement) -> + erl_replace(Iodata, Pattern, Replacement, all). + +is_equal(A, B) -> + string:equal(A, B). + +is_empty(A) -> + string:is_empty(A). diff --git a/gen/src/gleam@list.erl b/gen/src/gleam@list.erl new file mode 100644 index 0000000..548e983 --- /dev/null +++ b/gen/src/gleam@list.erl @@ -0,0 +1,369 @@ +-module(gleam@list). +-compile(no_auto_import). + +-export([length/1, reverse/1, is_empty/1, contains/2, head/1, tail/1, filter/2, map/2, index_map/2, traverse/2, drop/2, take/2, new/0, append/2, flatten/1, fold/3, fold_right/3, find/2, all/2, any/2, zip/2, strict_zip/2, intersperse/2, at/2, unique/1, sort/1, range/2, repeat/2, split/2, split_while/2]). + +length(A) -> + erlang:length(A). + +reverse(A) -> + lists:reverse(A). + +is_empty(List) -> + List =:= []. + +contains(List, Elem) -> + case List of + [] -> + false; + + [Head | Rest] -> + Head =:= Elem orelse contains(Rest, Elem) + end. + +head(List) -> + case List of + [] -> + {error, empty}; + + [X | _] -> + {ok, X} + end. + +tail(List) -> + case List of + [] -> + {error, empty}; + + [_ | Xs] -> + {ok, Xs} + end. + +do_filter(List, Fun, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + NewAcc = case Fun(X) of + true -> + [X | Acc]; + + false -> + Acc + end, + do_filter(Xs, Fun, NewAcc) + end. + +filter(List, Fun) -> + do_filter(List, Fun, []). + +do_map(List, Fun, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + do_map(Xs, Fun, [Fun(X) | Acc]) + end. + +map(List, Fun) -> + do_map(List, Fun, []). + +do_index_map(List, Fun, Index, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + do_index_map(Xs, Fun, Index + 1, [Fun(Index, X) | Acc]) + end. + +index_map(List, Fun) -> + do_index_map(List, Fun, 0, []). + +do_traverse(List, Fun, Acc) -> + case List of + [] -> + {ok, reverse(Acc)}; + + [X | Xs] -> + case Fun(X) of + {ok, Y} -> + do_traverse(Xs, Fun, [Y | Acc]); + + {error, Error} -> + {error, Error} + end + end. + +traverse(List, Fun) -> + do_traverse(List, Fun, []). + +drop(List, N) -> + case N =< 0 of + true -> + List; + + false -> + case List of + [] -> + []; + + [_ | Xs] -> + drop(Xs, N - 1) + end + end. + +do_take(List, N, Acc) -> + case N =< 0 of + true -> + reverse(Acc); + + false -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + do_take(Xs, N - 1, [X | Acc]) + end + end. + +take(List, N) -> + do_take(List, N, []). + +new() -> + []. + +append(A, B) -> + lists:append(A, B). + +do_flatten(Lists, Acc) -> + case Lists of + [] -> + Acc; + + [L | Rest] -> + do_flatten(Rest, append(Acc, L)) + end. + +flatten(Lists) -> + do_flatten(Lists, []). + +fold(List, Acc, Fun) -> + case List of + [] -> + Acc; + + [X | Rest] -> + fold(Rest, Fun(X, Acc), Fun) + end. + +fold_right(List, Acc, Fun) -> + case List of + [] -> + Acc; + + [X | Rest] -> + Fun(X, fold_right(Rest, Acc, Fun)) + end. + +find(Haystack, F) -> + case Haystack of + [] -> + {error, not_found}; + + [X | Rest] -> + case F(X) of + {ok, X1} -> + {ok, X1}; + + _ -> + find(Rest, F) + end + end. + +all(List, F) -> + case List of + [] -> + true; + + [X | Rest] -> + case F(X) of + true -> + all(Rest, F); + + _ -> + false + end + end. + +any(List, F) -> + case List of + [] -> + false; + + [X | Rest] -> + case F(X) of + false -> + any(Rest, F); + + _ -> + true + end + end. + +zip(L1, L2) -> + case {L1, L2} of + {[], _} -> + []; + + {_, []} -> + []; + + {[X1 | Rest1], [X2 | Rest2]} -> + [{X1, X2} | zip(Rest1, Rest2)] + end. + +strict_zip(L1, L2) -> + case length(L1) =:= length(L2) of + true -> + {ok, zip(L1, L2)}; + + false -> + {error, length_mismatch} + end. + +intersperse(List, Elem) -> + case List of + [] -> + []; + + [X] -> + [X]; + + [X1 | Rest] -> + [X1, Elem | intersperse(Rest, Elem)] + end. + +at(List, I) -> + case I < 0 of + true -> + {error, not_found}; + + false -> + case List of + [] -> + {error, not_found}; + + [X | Rest] -> + case I =:= 0 of + true -> + {ok, X}; + + false -> + at(Rest, I - 1) + end + end + end. + +unique(List) -> + case List of + [] -> + []; + + [X | Rest] -> + [X | unique(filter(Rest, fun(Y) -> Y /= X end))] + end. + +merge_sort(A, B) -> + case {A, B} of + {[], _} -> + B; + + {_, []} -> + A; + + {[Ax | Ar], [Bx | Br]} -> + case Ax < Bx of + true -> + [Ax | merge_sort(Ar, B)]; + + false -> + [Bx | merge_sort(A, Br)] + end + end. + +sort(List) -> + ListLength = length(List), + case ListLength < 2 of + true -> + List; + + false -> + SplitLength = ListLength div 2, + AList = take(List, SplitLength), + BList = drop(List, SplitLength), + merge_sort(sort(AList), sort(BList)) + end. + +range(Start, Stop) -> + case gleam@int:compare(Start, Stop) of + eq -> + []; + + gt -> + [Start | range(Start - 1, Stop)]; + + lt -> + [Start | range(Start + 1, Stop)] + end. + +do_repeat(A, Times, Acc) -> + case Times =< 0 of + true -> + Acc; + + false -> + do_repeat(A, Times - 1, [A | Acc]) + end. + +repeat(A, Times) -> + do_repeat(A, Times, []). + +do_split(List, N, Taken) -> + case N =< 0 of + true -> + {reverse(Taken), List}; + + false -> + case List of + [] -> + {reverse(Taken), []}; + + [X | Xs] -> + do_split(Xs, N - 1, [X | Taken]) + end + end. + +split(List, N) -> + do_split(List, N, []). + +do_split_while(List, F, Acc) -> + case List of + [] -> + {reverse(Acc), []}; + + [X | Xs] -> + case F(X) of + false -> + {reverse(Acc), List}; + + _ -> + do_split_while(Xs, F, [X | Acc]) + end + end. + +split_while(List, F) -> + do_split_while(List, F, []). diff --git a/gen/src/gleam@map_dict.erl b/gen/src/gleam@map_dict.erl new file mode 100644 index 0000000..77eaf79 --- /dev/null +++ b/gen/src/gleam@map_dict.erl @@ -0,0 +1,89 @@ +-module(gleam@map_dict). +-compile(no_auto_import). + +-export([size/1, to_list/1, from_list/1, has_key/2, new/0, fetch/2, put/3, map_values/2, keys/1, values/1, filter/2, take/2, merge/2, delete/2, drop/2, update/3, fold/3]). + +size(A) -> + maps:size(A). + +to_list(A) -> + maps:to_list(A). + +from_list(A) -> + maps:from_list(A). + +is_key(A, B) -> + maps:is_key(A, B). + +has_key(Map, Key) -> + is_key(Key, Map). + +new() -> + maps:new(). + +fetch(A, B) -> + gleam__stdlib:map_fetch(A, B). + +erl_put(A, B, C) -> + maps:put(A, B, C). + +put(Map, Key, Value) -> + erl_put(Key, Value, Map). + +erl_map_values(A, B) -> + maps:map(A, B). + +map_values(Map, Fun) -> + erl_map_values(Fun, Map). + +keys(A) -> + maps:keys(A). + +values(A) -> + maps:values(A). + +erl_filter(A, B) -> + maps:filter(A, B). + +filter(Map, Fun) -> + erl_filter(Fun, Map). + +erl_take(A, B) -> + maps:with(A, B). + +take(Map, Keys) -> + erl_take(Keys, Map). + +merge(A, B) -> + maps:merge(A, B). + +erl_delete(A, B) -> + maps:remove(A, B). + +delete(Map, Key) -> + erl_delete(Key, Map). + +drop(Map, Keys) -> + gleam@list:fold(Keys, Map, fun(Key, Acc) -> delete(Acc, Key) end). + +update(Dict, Key, F) -> + case fetch(Dict, Key) of + {ok, Value} -> + put(Dict, Key, F({ok, Value})); + + {error, _} -> + put(Dict, Key, F({error, not_found})) + end. + +do_fold(List, Acc, F) -> + case List of + [] -> + Acc; + + [{K, V} | Tail] -> + do_fold(Tail, F(K, V, Acc), F) + end. + +fold(Dict, Acc, F) -> + Kvs = to_list(Dict), + do_fold(Kvs, Acc, F). diff --git a/gen/src/gleam@order.erl b/gen/src/gleam@order.erl new file mode 100644 index 0000000..9e259ed --- /dev/null +++ b/gen/src/gleam@order.erl @@ -0,0 +1,73 @@ +-module(gleam@order). +-compile(no_auto_import). + +-export([reverse/1, to_int/1, compare/2, max/2, min/2]). + +reverse(Order) -> + case Order of + lt -> + gt; + + eq -> + eq; + + gt -> + lt + end. + +to_int(Order) -> + case Order of + lt -> + -1; + + eq -> + 0; + + gt -> + 1 + end. + +compare(A, B) -> + case {A, B} of + {lt, lt} -> + eq; + + {lt, _} -> + lt; + + {eq, eq} -> + eq; + + {gt, gt} -> + eq; + + {eq, gt} -> + lt; + + _ -> + gt + end. + +max(A, B) -> + case {A, B} of + {gt, _} -> + gt; + + {eq, lt} -> + eq; + + _ -> + B + end. + +min(A, B) -> + case {A, B} of + {lt, _} -> + lt; + + {eq, gt} -> + eq; + + _ -> + B + end. diff --git a/gen/src/gleam@result.erl b/gen/src/gleam@result.erl new file mode 100644 index 0000000..77c5a57 --- /dev/null +++ b/gen/src/gleam@result.erl @@ -0,0 +1,67 @@ +-module(gleam@result). +-compile(no_auto_import). + +-export([is_ok/1, is_error/1, map/2, map_error/2, flatten/1, then/2, unwrap/2]). + +is_ok(Result) -> + case Result of + {error, _} -> + false; + + {ok, _} -> + true + end. + +is_error(Result) -> + case Result of + {ok, _} -> + false; + + {error, _} -> + true + end. + +map(Result, Fun) -> + case Result of + {ok, X} -> + {ok, Fun(X)}; + + {error, E} -> + {error, E} + end. + +map_error(Result, Fun) -> + case Result of + {ok, _} -> + Result; + + {error, Error} -> + {error, Fun(Error)} + end. + +flatten(Result) -> + case Result of + {ok, X} -> + X; + + {error, Error} -> + {error, Error} + end. + +then(Result, Fun) -> + case Result of + {ok, X} -> + Fun(X); + + {error, E} -> + {error, E} + end. + +unwrap(Result, Default) -> + case Result of + {ok, V} -> + V; + + {error, _} -> + Default + end. diff --git a/gen/src/gleam@string.erl b/gen/src/gleam@string.erl new file mode 100644 index 0000000..144d866 --- /dev/null +++ b/gen/src/gleam@string.erl @@ -0,0 +1,28 @@ +-module(gleam@string). +-compile(no_auto_import). + +-export([length/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, append/2]). + +length(A) -> + string:length(A). + +lowercase(A) -> + string:lowercase(A). + +uppercase(A) -> + string:uppercase(A). + +reverse(String) -> + gleam@iodata:to_string(gleam@iodata:reverse(gleam@iodata:new(String))). + +split(String, On) -> + gleam@list:map(gleam@iodata:split(gleam@iodata:new(String), On), + fun gleam@iodata:to_string/1). + +replace(String, Pattern, With) -> + gleam@iodata:to_string(gleam@iodata:replace(gleam@iodata:new(String), + Pattern, + With)). + +append(S1, S2) -> + gleam@iodata:to_string(gleam@iodata:append(gleam@iodata:new(S1), S2)). diff --git a/gen/src/gleam@tuple.erl b/gen/src/gleam@tuple.erl new file mode 100644 index 0000000..1e236bf --- /dev/null +++ b/gen/src/gleam@tuple.erl @@ -0,0 +1,28 @@ +-module(gleam@tuple). +-compile(no_auto_import). + +-export([new/2, first/1, second/1, swap/1, fetch/2]). + +new(A, B) -> + {A, B}. + +first(Tup) -> + {A, _} = Tup, + A. + +second(Tup) -> + {_, A} = Tup, + A. + +swap(Tup) -> + {A, B} = Tup, + {B, A}. + +fetch(Haystack, Needle) -> + gleam@list:find(Haystack, fun(Tuple) -> case first(Tuple) =:= Needle of + true -> + {ok, second(Tuple)}; + + false -> + {error, []} + end end). diff --git a/gen/src/std@any.erl b/gen/src/std@any.erl deleted file mode 100644 index 5a1a844..0000000 --- a/gen/src/std@any.erl +++ /dev/null @@ -1,41 +0,0 @@ --module(std@any). --compile(no_auto_import). - --export([from/1, unsafe_coerce/1, string/1, int/1, float/1, atom/1, bool/1, thunk/1, list/2, tuple/1, field/2]). - -from(A) -> - gleam__stdlib:identity(A). - -unsafe_coerce(A) -> - gleam__stdlib:identity(A). - -string(A) -> - gleam__stdlib:decode_string(A). - -int(A) -> - gleam__stdlib:decode_int(A). - -float(A) -> - gleam__stdlib:decode_float(A). - -atom(A) -> - gleam__stdlib:decode_atom(A). - -bool(A) -> - gleam__stdlib:decode_bool(A). - -thunk(A) -> - gleam__stdlib:decode_thunk(A). - -list_any(A) -> - gleam__stdlib:decode_list(A). - -list(Any, Decode) -> - std@result:then(list_any(Any), - fun(Capture1) -> std@list:traverse(Capture1, Decode) end). - -tuple(A) -> - gleam__stdlib:decode_tuple(A). - -field(A, B) -> - gleam__stdlib:decode_field(A, B). diff --git a/gen/src/std@atom.erl b/gen/src/std@atom.erl deleted file mode 100644 index a964101..0000000 --- a/gen/src/std@atom.erl +++ /dev/null @@ -1,13 +0,0 @@ --module(std@atom). --compile(no_auto_import). - --export([from_string/1, create_from_string/1, to_string/1]). - -from_string(A) -> - gleam__stdlib:atom_from_string(A). - -create_from_string(A) -> - gleam__stdlib:atom_create_from_string(A). - -to_string(A) -> - gleam__stdlib:atom_to_string(A). diff --git a/gen/src/std@bool.erl b/gen/src/std@bool.erl deleted file mode 100644 index c77a2d8..0000000 --- a/gen/src/std@bool.erl +++ /dev/null @@ -1,55 +0,0 @@ --module(std@bool). --compile(no_auto_import). - --export([negate/1, compare/2, max/2, min/2, to_int/1]). - -negate(Bool) -> - case Bool of - true -> - false; - - false -> - true - end. - -compare(A, B) -> - case {A, B} of - {true, true} -> - eq; - - {true, false} -> - gt; - - {false, false} -> - eq; - - {false, true} -> - lt - end. - -max(A, B) -> - case A of - true -> - true; - - false -> - B - end. - -min(A, B) -> - case A of - false -> - false; - - true -> - B - end. - -to_int(Bool) -> - case Bool of - false -> - 0; - - true -> - 1 - end. diff --git a/gen/src/std@expect.erl b/gen/src/std@expect.erl deleted file mode 100644 index 30b3156..0000000 --- a/gen/src/std@expect.erl +++ /dev/null @@ -1,25 +0,0 @@ --module(std@expect). --compile(no_auto_import). - --export([equal/2, not_equal/2, true/1, false/1, is_ok/1, is_error/1, fail/0]). - -equal(A, B) -> - gleam__stdlib:expect_equal(A, B). - -not_equal(A, B) -> - gleam__stdlib:expect_not_equal(A, B). - -true(A) -> - gleam__stdlib:expect_true(A). - -false(A) -> - gleam__stdlib:expect_false(A). - -is_ok(A) -> - gleam__stdlib:expect_is_ok(A). - -is_error(A) -> - gleam__stdlib:expect_is_error(A). - -fail() -> - true(false). diff --git a/gen/src/std@float.erl b/gen/src/std@float.erl deleted file mode 100644 index c627707..0000000 --- a/gen/src/std@float.erl +++ /dev/null @@ -1,22 +0,0 @@ --module(std@float). --compile(no_auto_import). - --export([parse/1, to_string/1, ceiling/1, floor/1, round/1, truncate/1]). - -parse(A) -> - gleam__stdlib:parse_float(A). - -to_string(F) -> - std@iodata:to_string(std@iodata:from_float(F)). - -ceiling(A) -> - math:ceil(A). - -floor(A) -> - math:floor(A). - -round(A) -> - erlang:round(A). - -truncate(A) -> - erlang:trunc(A). diff --git a/gen/src/std@http.erl b/gen/src/std@http.erl deleted file mode 100644 index c141e95..0000000 --- a/gen/src/std@http.erl +++ /dev/null @@ -1,6 +0,0 @@ --module(std@http). --compile(no_auto_import). - --export([]). - - diff --git a/gen/src/std@int.erl b/gen/src/std@int.erl deleted file mode 100644 index 9942040..0000000 --- a/gen/src/std@int.erl +++ /dev/null @@ -1,28 +0,0 @@ --module(std@int). --compile(no_auto_import). - --export([parse/1, to_string/1, to_base_string/2, compare/2]). - -parse(A) -> - gleam__stdlib:parse_int(A). - -to_string(A) -> - erlang:integer_to_binary(A). - -to_base_string(A, B) -> - erlang:integer_to_binary(A, B). - -compare(A, B) -> - case A =:= B of - true -> - eq; - - false -> - case A < B of - true -> - lt; - - false -> - gt - end - end. diff --git a/gen/src/std@iodata.erl b/gen/src/std@iodata.erl deleted file mode 100644 index e115bbc..0000000 --- a/gen/src/std@iodata.erl +++ /dev/null @@ -1,61 +0,0 @@ --module(std@iodata). --compile(no_auto_import). - --export([prepend/2, append/2, prepend_iodata/2, append_iodata/2, from_strings/1, concat/1, new/1, to_string/1, byte_size/1, from_float/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, is_equal/2, is_empty/1]). - -prepend(A, B) -> - gleam__stdlib:iodata_prepend(A, B). - -append(A, B) -> - gleam__stdlib:iodata_append(A, B). - -prepend_iodata(A, B) -> - gleam__stdlib:iodata_prepend(A, B). - -append_iodata(A, B) -> - gleam__stdlib:iodata_append(A, B). - -from_strings(A) -> - gleam__stdlib:identity(A). - -concat(A) -> - gleam__stdlib:identity(A). - -new(A) -> - gleam__stdlib:identity(A). - -to_string(A) -> - erlang:iolist_to_binary(A). - -byte_size(A) -> - erlang:iolist_size(A). - -from_float(A) -> - io_lib_format:fwrite_g(A). - -lowercase(A) -> - string:lowercase(A). - -uppercase(A) -> - string:uppercase(A). - -reverse(A) -> - string:reverse(A). - -erl_split(A, B, C) -> - string:split(A, B, C). - -split(Iodata, On) -> - erl_split(Iodata, On, all). - -erl_replace(A, B, C, D) -> - string:replace(A, B, C, D). - -replace(Iodata, Pattern, Replacement) -> - erl_replace(Iodata, Pattern, Replacement, all). - -is_equal(A, B) -> - string:equal(A, B). - -is_empty(A) -> - string:is_empty(A). diff --git a/gen/src/std@list.erl b/gen/src/std@list.erl deleted file mode 100644 index db2efae..0000000 --- a/gen/src/std@list.erl +++ /dev/null @@ -1,369 +0,0 @@ --module(std@list). --compile(no_auto_import). - --export([length/1, reverse/1, is_empty/1, contains/2, head/1, tail/1, filter/2, map/2, index_map/2, traverse/2, drop/2, take/2, new/0, append/2, flatten/1, fold/3, fold_right/3, find/2, all/2, any/2, zip/2, strict_zip/2, intersperse/2, at/2, unique/1, sort/1, range/2, repeat/2, split/2, split_while/2]). - -length(A) -> - erlang:length(A). - -reverse(A) -> - lists:reverse(A). - -is_empty(List) -> - List =:= []. - -contains(List, Elem) -> - case List of - [] -> - false; - - [Head | Rest] -> - Head =:= Elem orelse contains(Rest, Elem) - end. - -head(List) -> - case List of - [] -> - {error, empty}; - - [X | _] -> - {ok, X} - end. - -tail(List) -> - case List of - [] -> - {error, empty}; - - [_ | Xs] -> - {ok, Xs} - end. - -do_filter(List, Fun, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - NewAcc = case Fun(X) of - true -> - [X | Acc]; - - false -> - Acc - end, - do_filter(Xs, Fun, NewAcc) - end. - -filter(List, Fun) -> - do_filter(List, Fun, []). - -do_map(List, Fun, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - do_map(Xs, Fun, [Fun(X) | Acc]) - end. - -map(List, Fun) -> - do_map(List, Fun, []). - -do_index_map(List, Fun, Index, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - do_index_map(Xs, Fun, Index + 1, [Fun(Index, X) | Acc]) - end. - -index_map(List, Fun) -> - do_index_map(List, Fun, 0, []). - -do_traverse(List, Fun, Acc) -> - case List of - [] -> - {ok, reverse(Acc)}; - - [X | Xs] -> - case Fun(X) of - {ok, Y} -> - do_traverse(Xs, Fun, [Y | Acc]); - - {error, Error} -> - {error, Error} - end - end. - -traverse(List, Fun) -> - do_traverse(List, Fun, []). - -drop(List, N) -> - case N =< 0 of - true -> - List; - - false -> - case List of - [] -> - []; - - [_ | Xs] -> - drop(Xs, N - 1) - end - end. - -do_take(List, N, Acc) -> - case N =< 0 of - true -> - reverse(Acc); - - false -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - do_take(Xs, N - 1, [X | Acc]) - end - end. - -take(List, N) -> - do_take(List, N, []). - -new() -> - []. - -append(A, B) -> - lists:append(A, B). - -do_flatten(Lists, Acc) -> - case Lists of - [] -> - Acc; - - [L | Rest] -> - do_flatten(Rest, append(Acc, L)) - end. - -flatten(Lists) -> - do_flatten(Lists, []). - -fold(List, Acc, Fun) -> - case List of - [] -> - Acc; - - [X | Rest] -> - fold(Rest, Fun(X, Acc), Fun) - end. - -fold_right(List, Acc, Fun) -> - case List of - [] -> - Acc; - - [X | Rest] -> - Fun(X, fold_right(Rest, Acc, Fun)) - end. - -find(Haystack, F) -> - case Haystack of - [] -> - {error, not_found}; - - [X | Rest] -> - case F(X) of - {ok, X1} -> - {ok, X1}; - - _ -> - find(Rest, F) - end - end. - -all(List, F) -> - case List of - [] -> - true; - - [X | Rest] -> - case F(X) of - true -> - all(Rest, F); - - _ -> - false - end - end. - -any(List, F) -> - case List of - [] -> - false; - - [X | Rest] -> - case F(X) of - false -> - any(Rest, F); - - _ -> - true - end - end. - -zip(L1, L2) -> - case {L1, L2} of - {[], _} -> - []; - - {_, []} -> - []; - - {[X1 | Rest1], [X2 | Rest2]} -> - [{X1, X2} | zip(Rest1, Rest2)] - end. - -strict_zip(L1, L2) -> - case length(L1) =:= length(L2) of - true -> - {ok, zip(L1, L2)}; - - false -> - {error, length_mismatch} - end. - -intersperse(List, Elem) -> - case List of - [] -> - []; - - [X] -> - [X]; - - [X1 | Rest] -> - [X1, Elem | intersperse(Rest, Elem)] - end. - -at(List, I) -> - case I < 0 of - true -> - {error, not_found}; - - false -> - case List of - [] -> - {error, not_found}; - - [X | Rest] -> - case I =:= 0 of - true -> - {ok, X}; - - false -> - at(Rest, I - 1) - end - end - end. - -unique(List) -> - case List of - [] -> - []; - - [X | Rest] -> - [X | unique(filter(Rest, fun(Y) -> Y /= X end))] - end. - -merge_sort(A, B) -> - case {A, B} of - {[], _} -> - B; - - {_, []} -> - A; - - {[Ax | Ar], [Bx | Br]} -> - case Ax < Bx of - true -> - [Ax | merge_sort(Ar, B)]; - - false -> - [Bx | merge_sort(A, Br)] - end - end. - -sort(List) -> - ListLength = length(List), - case ListLength < 2 of - true -> - List; - - false -> - SplitLength = ListLength div 2, - AList = take(List, SplitLength), - BList = drop(List, SplitLength), - merge_sort(sort(AList), sort(BList)) - end. - -range(Start, Stop) -> - case std@int:compare(Start, Stop) of - eq -> - []; - - gt -> - [Start | range(Start - 1, Stop)]; - - lt -> - [Start | range(Start + 1, Stop)] - end. - -do_repeat(A, Times, Acc) -> - case Times =< 0 of - true -> - Acc; - - false -> - do_repeat(A, Times - 1, [A | Acc]) - end. - -repeat(A, Times) -> - do_repeat(A, Times, []). - -do_split(List, N, Taken) -> - case N =< 0 of - true -> - {reverse(Taken), List}; - - false -> - case List of - [] -> - {reverse(Taken), []}; - - [X | Xs] -> - do_split(Xs, N - 1, [X | Taken]) - end - end. - -split(List, N) -> - do_split(List, N, []). - -do_split_while(List, F, Acc) -> - case List of - [] -> - {reverse(Acc), []}; - - [X | Xs] -> - case F(X) of - false -> - {reverse(Acc), List}; - - _ -> - do_split_while(Xs, F, [X | Acc]) - end - end. - -split_while(List, F) -> - do_split_while(List, F, []). diff --git a/gen/src/std@map_dict.erl b/gen/src/std@map_dict.erl deleted file mode 100644 index b736096..0000000 --- a/gen/src/std@map_dict.erl +++ /dev/null @@ -1,89 +0,0 @@ --module(std@map_dict). --compile(no_auto_import). - --export([size/1, to_list/1, from_list/1, has_key/2, new/0, fetch/2, put/3, map_values/2, keys/1, values/1, filter/2, take/2, merge/2, delete/2, drop/2, update/3, fold/3]). - -size(A) -> - maps:size(A). - -to_list(A) -> - maps:to_list(A). - -from_list(A) -> - maps:from_list(A). - -is_key(A, B) -> - maps:is_key(A, B). - -has_key(Map, Key) -> - is_key(Key, Map). - -new() -> - maps:new(). - -fetch(A, B) -> - gleam__stdlib:map_fetch(A, B). - -erl_put(A, B, C) -> - maps:put(A, B, C). - -put(Map, Key, Value) -> - erl_put(Key, Value, Map). - -erl_map_values(A, B) -> - maps:map(A, B). - -map_values(Map, Fun) -> - erl_map_values(Fun, Map). - -keys(A) -> - maps:keys(A). - -values(A) -> - maps:values(A). - -erl_filter(A, B) -> - maps:filter(A, B). - -filter(Map, Fun) -> - erl_filter(Fun, Map). - -erl_take(A, B) -> - maps:with(A, B). - -take(Map, Keys) -> - erl_take(Keys, Map). - -merge(A, B) -> - maps:merge(A, B). - -erl_delete(A, B) -> - maps:remove(A, B). - -delete(Map, Key) -> - erl_delete(Key, Map). - -drop(Map, Keys) -> - std@list:fold(Keys, Map, fun(Key, Acc) -> delete(Acc, Key) end). - -update(Dict, Key, F) -> - case fetch(Dict, Key) of - {ok, Value} -> - put(Dict, Key, F({ok, Value})); - - {error, _} -> - put(Dict, Key, F({error, not_found})) - end. - -do_fold(List, Acc, F) -> - case List of - [] -> - Acc; - - [{K, V} | Tail] -> - do_fold(Tail, F(K, V, Acc), F) - end. - -fold(Dict, Acc, F) -> - Kvs = to_list(Dict), - do_fold(Kvs, Acc, F). diff --git a/gen/src/std@order.erl b/gen/src/std@order.erl deleted file mode 100644 index 3a816d5..0000000 --- a/gen/src/std@order.erl +++ /dev/null @@ -1,73 +0,0 @@ --module(std@order). --compile(no_auto_import). - --export([reverse/1, to_int/1, compare/2, max/2, min/2]). - -reverse(Order) -> - case Order of - lt -> - gt; - - eq -> - eq; - - gt -> - lt - end. - -to_int(Order) -> - case Order of - lt -> - -1; - - eq -> - 0; - - gt -> - 1 - end. - -compare(A, B) -> - case {A, B} of - {lt, lt} -> - eq; - - {lt, _} -> - lt; - - {eq, eq} -> - eq; - - {gt, gt} -> - eq; - - {eq, gt} -> - lt; - - _ -> - gt - end. - -max(A, B) -> - case {A, B} of - {gt, _} -> - gt; - - {eq, lt} -> - eq; - - _ -> - B - end. - -min(A, B) -> - case {A, B} of - {lt, _} -> - lt; - - {eq, gt} -> - eq; - - _ -> - B - end. diff --git a/gen/src/std@result.erl b/gen/src/std@result.erl deleted file mode 100644 index eccddfd..0000000 --- a/gen/src/std@result.erl +++ /dev/null @@ -1,67 +0,0 @@ --module(std@result). --compile(no_auto_import). - --export([is_ok/1, is_error/1, map/2, map_error/2, flatten/1, then/2, unwrap/2]). - -is_ok(Result) -> - case Result of - {error, _} -> - false; - - {ok, _} -> - true - end. - -is_error(Result) -> - case Result of - {ok, _} -> - false; - - {error, _} -> - true - end. - -map(Result, Fun) -> - case Result of - {ok, X} -> - {ok, Fun(X)}; - - {error, E} -> - {error, E} - end. - -map_error(Result, Fun) -> - case Result of - {ok, _} -> - Result; - - {error, Error} -> - {error, Fun(Error)} - end. - -flatten(Result) -> - case Result of - {ok, X} -> - X; - - {error, Error} -> - {error, Error} - end. - -then(Result, Fun) -> - case Result of - {ok, X} -> - Fun(X); - - {error, E} -> - {error, E} - end. - -unwrap(Result, Default) -> - case Result of - {ok, V} -> - V; - - {error, _} -> - Default - end. diff --git a/gen/src/std@string.erl b/gen/src/std@string.erl deleted file mode 100644 index a86cfac..0000000 --- a/gen/src/std@string.erl +++ /dev/null @@ -1,28 +0,0 @@ --module(std@string). --compile(no_auto_import). - --export([length/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, append/2]). - -length(A) -> - string:length(A). - -lowercase(A) -> - string:lowercase(A). - -uppercase(A) -> - string:uppercase(A). - -reverse(String) -> - std@iodata:to_string(std@iodata:reverse(std@iodata:new(String))). - -split(String, On) -> - std@list:map(std@iodata:split(std@iodata:new(String), On), - fun std@iodata:to_string/1). - -replace(String, Pattern, With) -> - std@iodata:to_string(std@iodata:replace(std@iodata:new(String), - Pattern, - With)). - -append(S1, S2) -> - std@iodata:to_string(std@iodata:append(std@iodata:new(S1), S2)). diff --git a/gen/src/std@tuple.erl b/gen/src/std@tuple.erl deleted file mode 100644 index 0c9e89d..0000000 --- a/gen/src/std@tuple.erl +++ /dev/null @@ -1,28 +0,0 @@ --module(std@tuple). --compile(no_auto_import). - --export([new/2, first/1, second/1, swap/1, fetch/2]). - -new(A, B) -> - {A, B}. - -first(Tup) -> - {A, _} = Tup, - A. - -second(Tup) -> - {_, A} = Tup, - A. - -swap(Tup) -> - {A, B} = Tup, - {B, A}. - -fetch(Haystack, Needle) -> - std@list:find(Haystack, fun(Tuple) -> case first(Tuple) =:= Needle of - true -> - {ok, second(Tuple)}; - - false -> - {error, []} - end end). diff --git a/gen/test/gleam@any_test.erl b/gen/test/gleam@any_test.erl new file mode 100644 index 0000000..db6973f --- /dev/null +++ b/gen/test/gleam@any_test.erl @@ -0,0 +1,118 @@ +-module(gleam@any_test). +-compile(no_auto_import). + +-export([string_test/0, int_test/0, float_test/0, thunk_test/0, bool_test/0, atom_test/0, list_test/0, tuple_test/0, field_test/0]). + +string_test() -> + gleam@expect:equal(gleam@any:string(gleam@any:from(<<"">>)), {ok, <<"">>}), + gleam@expect:equal(gleam@any:string(gleam@any:from(<<"Hello">>)), + {ok, <<"Hello">>}), + gleam@expect:equal(gleam@any:string(gleam@any:from(1)), + {error, <<"Expected a String, got `1`">>}), + gleam@expect:equal(gleam@any:string(gleam@any:from([])), + {error, <<"Expected a String, got `[]`">>}). + +int_test() -> + gleam@expect:equal(gleam@any:int(gleam@any:from(1)), {ok, 1}), + gleam@expect:equal(gleam@any:int(gleam@any:from(2)), {ok, 2}), + gleam@expect:equal(gleam@any:int(gleam@any:from(1.0)), + {error, <<"Expected an Int, got `1.0`">>}), + gleam@expect:equal(gleam@any:int(gleam@any:from([])), + {error, <<"Expected an Int, got `[]`">>}). + +float_test() -> + gleam@expect:equal(gleam@any:float(gleam@any:from(1.0)), {ok, 1.0}), + gleam@expect:equal(gleam@any:float(gleam@any:from(2.2)), {ok, 2.2}), + gleam@expect:equal(gleam@any:float(gleam@any:from(1)), + {error, <<"Expected a Float, got `1`">>}), + gleam@expect:equal(gleam@any:float(gleam@any:from([])), + {error, <<"Expected a Float, got `[]`">>}). + +thunk_test() -> + gleam@expect:is_ok(gleam@any:thunk(gleam@any:from(fun() -> 1 end))), + gleam@expect:equal(gleam@result:map(gleam@any:thunk(gleam@any:from(fun() -> + 1 + end)), + fun(F) -> F() end), + {ok, gleam@any:from(1)}), + gleam@expect:is_error(gleam@any:thunk(gleam@any:from(fun(X) -> X end))), + gleam@expect:is_error(gleam@any:thunk(gleam@any:from(1))), + gleam@expect:is_error(gleam@any:thunk(gleam@any:from([]))). + +bool_test() -> + gleam@expect:equal(gleam@any:bool(gleam@any:from(true)), {ok, true}), + gleam@expect:equal(gleam@any:bool(gleam@any:from(false)), {ok, false}), + gleam@expect:equal(gleam@any:bool(gleam@any:from(1)), + {error, <<"Expected a Bool, got `1`">>}), + gleam@expect:equal(gleam@any:bool(gleam@any:from([])), + {error, <<"Expected a Bool, got `[]`">>}). + +atom_test() -> + gleam@expect:equal(gleam@any:atom(gleam@any:from(gleam@atom:create_from_string(<<"">>))), + {ok, gleam@atom:create_from_string(<<"">>)}), + gleam@expect:equal(gleam@any:atom(gleam@any:from(gleam@atom:create_from_string(<<"ok">>))), + {ok, gleam@atom:create_from_string(<<"ok">>)}), + gleam@expect:is_error(gleam@any:atom(gleam@any:from(1))), + gleam@expect:is_error(gleam@any:atom(gleam@any:from([]))). + +list_test() -> + gleam@expect:equal(gleam@any:list(gleam@any:from([]), + fun gleam@any:string/1), + {ok, []}), + gleam@expect:equal(gleam@any:list(gleam@any:from([]), fun gleam@any:int/1), + {ok, []}), + gleam@expect:equal(gleam@any:list(gleam@any:from([1, 2, 3]), + fun gleam@any:int/1), + {ok, [1, 2, 3]}), + gleam@expect:equal(gleam@any:list(gleam@any:from([[1], [2], [3]]), + fun(Capture1) -> + gleam@any:list(Capture1, + fun gleam@any:int/1) + end), + {ok, [[1], [2], [3]]}), + gleam@expect:is_error(gleam@any:list(gleam@any:from(1), + fun gleam@any:string/1)), + gleam@expect:is_error(gleam@any:list(gleam@any:from(1.0), + fun gleam@any:int/1)), + gleam@expect:is_error(gleam@any:list(gleam@any:from([<<"">>]), + fun gleam@any:int/1)), + gleam@expect:is_error(gleam@any:list(gleam@any:from([gleam@any:from(1), + gleam@any:from(<<"not an int">>)]), + fun gleam@any:int/1)). + +tuple_test() -> + gleam@expect:equal(gleam@any:tuple(gleam@any:from({1, []})), + {ok, {gleam@any:from(1), gleam@any:from([])}}), + gleam@expect:equal(gleam@any:tuple(gleam@any:from({<<"ok">>, <<"ok">>})), + {ok, + {gleam@any:from(<<"ok">>), gleam@any:from(<<"ok">>)}}), + gleam@expect:is_error(gleam@any:tuple(gleam@any:from({1}))), + gleam@expect:is_error(gleam@any:tuple(gleam@any:from({1, 2, 3}))), + gleam@expect:equal(gleam@result:then(gleam@result:then(gleam@any:tuple(gleam@any:from({1, + 2.0})), + fun(X) -> + gleam@result:map(gleam@any:int(gleam@tuple:first(X)), + fun(F) -> + {F, + gleam@tuple:second(X)} + end) + end), + fun(X) -> + gleam@result:map(gleam@any:float(gleam@tuple:second(X)), + fun(F) -> + {gleam@tuple:first(X), + F} + end) + end), + {ok, {1, 2.0}}). + +field_test() -> + {ok, OkAtom} = gleam@atom:from_string(<<"ok">>), + gleam@expect:equal(gleam@any:field(gleam@any:from(#{}#{ok => 1}), OkAtom), + {ok, gleam@any:from(1)}), + gleam@expect:equal(gleam@any:field(gleam@any:from(#{}#{ok => 3}#{earlier => 2}), + OkAtom), + {ok, gleam@any:from(3)}), + gleam@expect:is_error(gleam@any:field(gleam@any:from(#{}), OkAtom)), + gleam@expect:is_error(gleam@any:field(gleam@any:from(1), OkAtom)), + gleam@expect:is_error(gleam@any:field(gleam@any:from([]), [])). diff --git a/gen/test/gleam@atom_test.erl b/gen/test/gleam@atom_test.erl new file mode 100644 index 0000000..d9c429c --- /dev/null +++ b/gen/test/gleam@atom_test.erl @@ -0,0 +1,24 @@ +-module(gleam@atom_test). +-compile(no_auto_import). + +-export([from_string_test/0, create_from_string_test/0, to_string_test/0]). + +from_string_test() -> + gleam@expect:is_ok(gleam@atom:from_string(<<"ok">>)), + gleam@expect:is_ok(gleam@atom:from_string(<<"expect">>)), + gleam@expect:is_error(gleam@atom:from_string(<<"this is not an atom we have seen before">>)). + +create_from_string_test() -> + gleam@expect:equal({ok, gleam@atom:create_from_string(<<"ok">>)}, + gleam@atom:from_string(<<"ok">>)), + gleam@expect:equal({ok, gleam@atom:create_from_string(<<"expect">>)}, + gleam@atom:from_string(<<"expect">>)), + gleam@expect:equal({ok, + gleam@atom:create_from_string(<<"this is another atom we have not seen before">>)}, + gleam@atom:from_string(<<"this is another atom we have not seen before">>)). + +to_string_test() -> + gleam@expect:equal(gleam@atom:to_string(gleam@atom:create_from_string(<<"ok">>)), + <<"ok">>), + gleam@expect:equal(gleam@atom:to_string(gleam@atom:create_from_string(<<"expect">>)), + <<"expect">>). diff --git a/gen/test/gleam@bool_test.erl b/gen/test/gleam@bool_test.erl new file mode 100644 index 0000000..2a47516 --- /dev/null +++ b/gen/test/gleam@bool_test.erl @@ -0,0 +1,30 @@ +-module(gleam@bool_test). +-compile(no_auto_import). + +-export([negate_test/0, compare_test/0, max_test/0, min_test/0, to_int_test/0]). + +negate_test() -> + gleam@expect:false(gleam@bool:negate(true)), + gleam@expect:true(gleam@bool:negate(false)). + +compare_test() -> + gleam@expect:equal(gleam@bool:compare(true, true), eq), + gleam@expect:equal(gleam@bool:compare(true, false), gt), + gleam@expect:equal(gleam@bool:compare(false, false), eq), + gleam@expect:equal(gleam@bool:compare(false, true), lt). + +max_test() -> + gleam@expect:equal(gleam@bool:max(true, true), true), + gleam@expect:equal(gleam@bool:max(true, false), true), + gleam@expect:equal(gleam@bool:max(false, false), false), + gleam@expect:equal(gleam@bool:max(false, true), true). + +min_test() -> + gleam@expect:equal(gleam@bool:min(true, true), true), + gleam@expect:equal(gleam@bool:min(true, false), false), + gleam@expect:equal(gleam@bool:min(false, false), false), + gleam@expect:equal(gleam@bool:min(false, true), false). + +to_int_test() -> + gleam@expect:equal(gleam@bool:to_int(true), 1), + gleam@expect:equal(gleam@bool:to_int(false), 0). diff --git a/gen/test/gleam@float_test.erl b/gen/test/gleam@float_test.erl new file mode 100644 index 0000000..ea19c5e --- /dev/null +++ b/gen/test/gleam@float_test.erl @@ -0,0 +1,42 @@ +-module(gleam@float_test). +-compile(no_auto_import). + +-export([parse_test/0, to_string_test/0, ceiling_test/0, floor_test/0, round_test/0, truncate_test/0]). + +parse_test() -> + gleam@expect:equal(gleam@float:parse(<<"1.23">>), {ok, 1.23}), + gleam@expect:equal(gleam@float:parse(<<"5.0">>), {ok, 5.0}), + gleam@expect:equal(gleam@float:parse(<<"0.123456789">>), {ok, 0.123456789}), + gleam@expect:is_error(gleam@float:parse(<<"">>)), + gleam@expect:is_error(gleam@float:parse(<<"what">>)), + gleam@expect:is_error(gleam@float:parse(<<"1">>)). + +to_string_test() -> + gleam@expect:equal(gleam@float:to_string(123.0), <<"123.0">>), + gleam@expect:equal(gleam@float:to_string(-8.1), <<"-8.1">>). + +ceiling_test() -> + gleam@expect:equal(gleam@float:ceiling(8.1), 9.0), + gleam@expect:equal(gleam@float:ceiling(-8.1), -8.0), + gleam@expect:equal(gleam@float:ceiling(-8.0), -8.0). + +floor_test() -> + gleam@expect:equal(gleam@float:floor(8.1), 8.0), + gleam@expect:equal(gleam@float:floor(-8.1), -9.0), + gleam@expect:equal(gleam@float:floor(-8.0), -8.0). + +round_test() -> + gleam@expect:equal(gleam@float:round(8.1), 8), + gleam@expect:equal(gleam@float:round(8.4), 8), + gleam@expect:equal(gleam@float:round(8.499), 8), + gleam@expect:equal(gleam@float:round(8.5), 9), + gleam@expect:equal(gleam@float:round(-8.1), -8), + gleam@expect:equal(gleam@float:round(-7.5), -8). + +truncate_test() -> + gleam@expect:equal(gleam@float:truncate(8.1), 8), + gleam@expect:equal(gleam@float:truncate(8.4), 8), + gleam@expect:equal(gleam@float:truncate(8.499), 8), + gleam@expect:equal(gleam@float:truncate(8.5), 8), + gleam@expect:equal(gleam@float:truncate(-8.1), -8), + gleam@expect:equal(gleam@float:truncate(-7.5), -7). diff --git a/gen/test/gleam@http_test.erl b/gen/test/gleam@http_test.erl new file mode 100644 index 0000000..6f54e78 --- /dev/null +++ b/gen/test/gleam@http_test.erl @@ -0,0 +1,6 @@ +-module(gleam@http_test). +-compile(no_auto_import). + +-export([]). + + diff --git a/gen/test/gleam@int_test.erl b/gen/test/gleam@int_test.erl new file mode 100644 index 0000000..1f13f1a --- /dev/null +++ b/gen/test/gleam@int_test.erl @@ -0,0 +1,29 @@ +-module(gleam@int_test). +-compile(no_auto_import). + +-export([to_string/0, parse/0, to_base_string/0, compare_test/0]). + +to_string() -> + gleam@expect:equal(gleam@int:to_string(123), <<"123">>), + gleam@expect:equal(gleam@int:to_string(-123), <<"-123">>), + gleam@expect:equal(gleam@int:to_string(123), <<"123">>). + +parse() -> + gleam@expect:equal(gleam@int:parse(<<"123">>), {ok, 123}), + gleam@expect:equal(gleam@int:parse(<<"-123">>), {ok, -123}), + gleam@expect:equal(gleam@int:parse(<<"0123">>), {ok, 123}), + gleam@expect:is_error(gleam@int:parse(<<"">>)), + gleam@expect:is_error(gleam@int:parse(<<"what">>)), + gleam@expect:is_error(gleam@int:parse(<<"1.23">>)). + +to_base_string() -> + gleam@expect:equal(gleam@int:to_base_string(100, 16), <<"64">>), + gleam@expect:equal(gleam@int:to_base_string(-100, 16), <<"-64">>). + +compare_test() -> + gleam@expect:equal(gleam@int:compare(0, 0), eq), + gleam@expect:equal(gleam@int:compare(1, 1), eq), + gleam@expect:equal(gleam@int:compare(0, 1), lt), + gleam@expect:equal(gleam@int:compare(-2, -1), lt), + gleam@expect:equal(gleam@int:compare(2, 1), gt), + gleam@expect:equal(gleam@int:compare(-1, -2), gt). diff --git a/gen/test/gleam@iodata_test.erl b/gen/test/gleam@iodata_test.erl new file mode 100644 index 0000000..621266c --- /dev/null +++ b/gen/test/gleam@iodata_test.erl @@ -0,0 +1,58 @@ +-module(gleam@iodata_test). +-compile(no_auto_import). + +-export([iodata_test/0, lowercase_test/0, uppercase_test/0, split_test/0, is_equal_test/0, is_empty_test/0]). + +iodata_test() -> + Data = gleam@iodata:prepend(gleam@iodata:append(gleam@iodata:append(gleam@iodata:new(<<"ello">>), + <<",">>), + <<" world!">>), + <<"H">>), + gleam@expect:equal(gleam@iodata:to_string(Data), <<"Hello, world!">>), + gleam@expect:equal(gleam@iodata:byte_size(Data), 13), + Data1 = gleam@iodata:prepend_iodata(gleam@iodata:append_iodata(gleam@iodata:append_iodata(gleam@iodata:new(<<"ello">>), + gleam@iodata:new(<<",">>)), + gleam@iodata:concat([gleam@iodata:new(<<" wo">>), + gleam@iodata:new(<<"rld!">>)])), + gleam@iodata:new(<<"H">>)), + gleam@expect:equal(gleam@iodata:to_string(Data1), <<"Hello, world!">>), + gleam@expect:equal(gleam@iodata:byte_size(Data1), 13). + +lowercase_test() -> + gleam@expect:equal(gleam@iodata:to_string(gleam@iodata:lowercase(gleam@iodata:from_strings([<<"Gleam">>, + <<"Gleam">>]))), + <<"gleamgleam">>). + +uppercase_test() -> + gleam@expect:equal(gleam@iodata:to_string(gleam@iodata:uppercase(gleam@iodata:from_strings([<<"Gleam">>, + <<"Gleam">>]))), + <<"GLEAMGLEAM">>). + +split_test() -> + gleam@expect:equal(gleam@iodata:split(gleam@iodata:new(<<"Gleam,Erlang,Elixir">>), + <<",">>), + [gleam@iodata:new(<<"Gleam">>), + gleam@iodata:new(<<"Erlang">>), + gleam@iodata:new(<<"Elixir">>)]), + gleam@expect:equal(gleam@iodata:split(gleam@iodata:from_strings([<<"Gleam, Erl">>, + <<"ang,Elixir">>]), + <<", ">>), + [gleam@iodata:new(<<"Gleam">>), + gleam@iodata:from_strings([<<"Erl">>, + <<"ang,Elixir">>])]). + +is_equal_test() -> + gleam@expect:true(gleam@iodata:is_equal(gleam@iodata:new(<<"12">>), + gleam@iodata:from_strings([<<"1">>, + <<"2">>]))), + gleam@expect:true(gleam@iodata:is_equal(gleam@iodata:new(<<"12">>), + gleam@iodata:new(<<"12">>))), + gleam@expect:false(gleam@iodata:is_equal(gleam@iodata:new(<<"12">>), + gleam@iodata:new(<<"2">>))). + +is_empty_test() -> + gleam@expect:true(gleam@iodata:is_empty(gleam@iodata:new(<<"">>))), + gleam@expect:false(gleam@iodata:is_empty(gleam@iodata:new(<<"12">>))), + gleam@expect:true(gleam@iodata:is_empty(gleam@iodata:from_strings([]))), + gleam@expect:true(gleam@iodata:is_empty(gleam@iodata:from_strings([<<"">>, + <<"">>]))). diff --git a/gen/test/gleam@list_test.erl b/gen/test/gleam@list_test.erl new file mode 100644 index 0000000..eda42d4 --- /dev/null +++ b/gen/test/gleam@list_test.erl @@ -0,0 +1,208 @@ +-module(gleam@list_test). +-compile(no_auto_import). + +-export([length_test/0, reverse_test/0, is_empty_test/0, contains_test/0, head_test/0, tail_test/0, filter_test/0, map_test/0, traverse_test/0, drop_test/0, take_test/0, new_test/0, append_test/0, flatten_test/0, fold_test/0, fold_right_test/0, find_test/0, all_test/0, any_test/0, zip_test/0, strict_zip_test/0, intersperse_test/0, at_test/0, unique_test/0, sort_test/0, index_map_test/0, range_test/0, repeat_test/0, split_test/0, split_while_test/0]). + +length_test() -> + gleam@expect:equal(gleam@list:length([]), 0), + gleam@expect:equal(gleam@list:length([1]), 1), + gleam@expect:equal(gleam@list:length([1, 1]), 2), + gleam@expect:equal(gleam@list:length([1, 1, 1]), 3). + +reverse_test() -> + gleam@expect:equal(gleam@list:reverse([]), []), + gleam@expect:equal(gleam@list:reverse([1, 2, 3, 4, 5]), [5, 4, 3, 2, 1]). + +is_empty_test() -> + gleam@expect:true(gleam@list:is_empty([])), + gleam@expect:false(gleam@list:is_empty([1])). + +contains_test() -> + gleam@expect:true(gleam@list:contains([0, 4, 5, 1], 1)), + gleam@expect:false(gleam@list:contains([0, 4, 5, 7], 1)), + gleam@expect:false(gleam@list:contains([], 1)). + +head_test() -> + gleam@expect:equal(gleam@list:head([0, 4, 5, 7]), {ok, 0}), + gleam@expect:is_error(gleam@list:head([])). + +tail_test() -> + gleam@expect:equal(gleam@list:tail([0, 4, 5, 7]), {ok, [4, 5, 7]}), + gleam@expect:equal(gleam@list:tail([0]), {ok, []}), + gleam@expect:is_error(gleam@list:tail([])). + +filter_test() -> + gleam@expect:equal(gleam@list:filter([], fun(_) -> true end), []), + gleam@expect:equal(gleam@list:filter([0, 4, 5, 7, 3], fun(_) -> true end), + [0, 4, 5, 7, 3]), + gleam@expect:equal(gleam@list:filter([0, 4, 5, 7, 3], fun(X) -> X > 4 end), + [5, 7]), + gleam@expect:equal(gleam@list:filter([0, 4, 5, 7, 3], fun(X) -> X < 4 end), + [0, 3]). + +map_test() -> + gleam@expect:equal(gleam@list:map([], fun(X) -> X * 2 end), []), + gleam@expect:equal(gleam@list:map([0, 4, 5, 7, 3], fun(X) -> X * 2 end), + [0, 8, 10, 14, 6]). + +traverse_test() -> + Fun = fun(X) -> case X =:= 6 orelse X =:= 5 orelse X =:= 4 of + true -> + {ok, X * 2}; + + false -> + {error, X} + end end, + gleam@expect:equal(gleam@list:traverse([5, 6, 5, 6], Fun), + {ok, [10, 12, 10, 12]}), + gleam@expect:equal(gleam@list:traverse([4, 6, 5, 7, 3], Fun), {error, 7}). + +drop_test() -> + gleam@expect:equal(gleam@list:drop([], 5), []), + gleam@expect:equal(gleam@list:drop([1, 2, 3, 4, 5, 6, 7, 8], 5), [6, 7, 8]). + +take_test() -> + gleam@expect:equal(gleam@list:take([], 5), []), + gleam@expect:equal(gleam@list:take([1, 2, 3, 4, 5, 6, 7, 8], 5), + [1, 2, 3, 4, 5]). + +new_test() -> + gleam@expect:equal(gleam@list:new(), []). + +append_test() -> + gleam@expect:equal(gleam@list:append([1], [2, 3]), [1, 2, 3]). + +flatten_test() -> + gleam@expect:equal(gleam@list:flatten([]), []), + gleam@expect:equal(gleam@list:flatten([[]]), []), + gleam@expect:equal(gleam@list:flatten([[], [], []]), []), + gleam@expect:equal(gleam@list:flatten([[1, 2], [], [3, 4]]), [1, 2, 3, 4]). + +fold_test() -> + gleam@expect:equal(gleam@list:fold([1, 2, 3], + [], + fun(X, Acc) -> [X | Acc] end), + [3, 2, 1]). + +fold_right_test() -> + gleam@expect:equal(gleam@list:fold_right([1, 2, 3], + [], + fun(X, Acc) -> [X | Acc] end), + [1, 2, 3]). + +find_test() -> + F = fun(X) -> case X of + 2 -> + {ok, 4}; + + _ -> + {error, 0} + end end, + gleam@expect:equal(gleam@list:find([1, 2, 3], F), {ok, 4}), + gleam@expect:equal(gleam@list:find([1, 3, 2], F), {ok, 4}), + gleam@expect:is_error(gleam@list:find([1, 3], F)). + +all_test() -> + gleam@expect:equal(gleam@list:all([1, 2, 3, 4, 5], fun(X) -> X > 0 end), + true), + gleam@expect:equal(gleam@list:all([1, 2, 3, 4, 5], fun(X) -> X < 0 end), + false), + gleam@expect:equal(gleam@list:all([], fun(_) -> false end), true). + +any_test() -> + gleam@expect:equal(gleam@list:any([1, 2, 3, 4, 5], fun(X) -> X =:= 2 end), + true), + gleam@expect:equal(gleam@list:any([1, 2, 3, 4, 5], fun(X) -> X < 0 end), + false), + gleam@expect:equal(gleam@list:any([], fun(_) -> false end), false). + +zip_test() -> + gleam@expect:equal(gleam@list:zip([], [1, 2, 3]), []), + gleam@expect:equal(gleam@list:zip([1, 2], []), []), + gleam@expect:equal(gleam@list:zip([1, 2, 3], [4, 5, 6]), + [{1, 4}, {2, 5}, {3, 6}]), + gleam@expect:equal(gleam@list:zip([5, 6], [1, 2, 3]), [{5, 1}, {6, 2}]), + gleam@expect:equal(gleam@list:zip([5, 6, 7], [1, 2]), [{5, 1}, {6, 2}]). + +strict_zip_test() -> + gleam@expect:is_error(gleam@list:strict_zip([], [1, 2, 3])), + gleam@expect:is_error(gleam@list:strict_zip([1, 2], [])), + gleam@expect:equal(gleam@list:strict_zip([1, 2, 3], [4, 5, 6]), + {ok, [{1, 4}, {2, 5}, {3, 6}]}), + gleam@expect:is_error(gleam@list:strict_zip([5, 6], [1, 2, 3])), + gleam@expect:is_error(gleam@list:strict_zip([5, 6, 7], [1, 2])). + +intersperse_test() -> + gleam@expect:equal(gleam@list:intersperse([1, 2, 3], 4), [1, 4, 2, 4, 3]), + gleam@expect:equal(gleam@list:intersperse([], 2), []). + +at_test() -> + gleam@expect:equal(gleam@list:at([1, 2, 3], 2), {ok, 3}), + gleam@expect:is_error(gleam@list:at([1, 2, 3], 5)), + gleam@expect:is_error(gleam@list:at([], 0)), + gleam@expect:is_error(gleam@list:at([1, 2, 3, 4, 5, 6], -1)). + +unique_test() -> + gleam@expect:equal(gleam@list:unique([1, 1, 2, 3, 4, 4, 4, 5, 6]), + [1, 2, 3, 4, 5, 6]), + gleam@expect:equal(gleam@list:unique([7, 1, 45, 6, 2, 47, 2, 7, 5]), + [7, 1, 45, 6, 2, 47, 5]), + gleam@expect:equal(gleam@list:unique([3, 4, 5]), [3, 4, 5]), + gleam@expect:equal(gleam@list:unique([]), []). + +sort_test() -> + gleam@expect:equal(gleam@list:sort([4, 3, 6, 5, 4]), [3, 4, 4, 5, 6]), + gleam@expect:equal(gleam@list:sort([]), []), + gleam@expect:equal(gleam@list:sort([{1, 2}, {4, 5}, {3, 2}]), + [{1, 2}, {3, 2}, {4, 5}]). + +index_map_test() -> + gleam@expect:equal(gleam@list:index_map([3, 4, 5], fun(I, X) -> {I, X} end), + [{0, 3}, {1, 4}, {2, 5}]), + F = fun(I, X) -> gleam@string:append(X, gleam@int:to_string(I)) end, + gleam@expect:equal(gleam@list:index_map([<<"a">>, <<"b">>, <<"c">>], F), + [<<"a0">>, <<"b1">>, <<"c2">>]). + +range_test() -> + gleam@expect:equal(gleam@list:range(0, 0), []), + gleam@expect:equal(gleam@list:range(1, 1), []), + gleam@expect:equal(gleam@list:range(-1, -1), []), + gleam@expect:equal(gleam@list:range(0, 1), [0]), + gleam@expect:equal(gleam@list:range(0, 5), [0, 1, 2, 3, 4]), + gleam@expect:equal(gleam@list:range(1, -5), [1, 0, -1, -2, -3, -4]). + +repeat_test() -> + gleam@expect:equal(gleam@list:repeat(1, -10), []), + gleam@expect:equal(gleam@list:repeat(1, 0), []), + gleam@expect:equal(gleam@list:repeat(2, 3), [2, 2, 2]), + gleam@expect:equal(gleam@list:repeat(<<"x">>, 5), + [<<"x">>, <<"x">>, <<"x">>, <<"x">>, <<"x">>]). + +split_test() -> + gleam@expect:equal(gleam@list:split([], 0), {[], []}), + gleam@expect:equal(gleam@list:split([0, 1, 2, 3, 4], 0), + {[], [0, 1, 2, 3, 4]}), + gleam@expect:equal(gleam@list:split([0, 1, 2, 3, 4], -2), + {[], [0, 1, 2, 3, 4]}), + gleam@expect:equal(gleam@list:split([0, 1, 2, 3, 4], 1), + {[0], [1, 2, 3, 4]}), + gleam@expect:equal(gleam@list:split([0, 1, 2, 3, 4], 3), + {[0, 1, 2], [3, 4]}), + gleam@expect:equal(gleam@list:split([0, 1, 2, 3, 4], 9), + {[0, 1, 2, 3, 4], []}). + +split_while_test() -> + gleam@expect:equal(gleam@list:split_while([], fun(X) -> X =< 5 end), + {[], []}), + gleam@expect:equal(gleam@list:split_while([1, 2, 3, 4, 5], + fun(X) -> X =< 5 end), + {[1, 2, 3, 4, 5], []}), + gleam@expect:equal(gleam@list:split_while([1, 2, 3, 4, 5], + fun(X) -> X =:= 2 end), + {[], [1, 2, 3, 4, 5]}), + gleam@expect:equal(gleam@list:split_while([1, 2, 3, 4, 5], + fun(X) -> X =< 3 end), + {[1, 2, 3], [4, 5]}), + gleam@expect:equal(gleam@list:split_while([1, 2, 3, 4, 5], + fun(X) -> X =< -3 end), + {[], [1, 2, 3, 4, 5]}). diff --git a/gen/test/gleam@map_dict_test.erl b/gen/test/gleam@map_dict_test.erl new file mode 100644 index 0000000..f19f735 --- /dev/null +++ b/gen/test/gleam@map_dict_test.erl @@ -0,0 +1,151 @@ +-module(gleam@map_dict_test). +-compile(no_auto_import). + +-export([from_list_test/0, has_key_test/0, new_test/0, fetch_test/0, put_test/0, map_values_test/0, keys_test/0, values_test/0, take_test/0, drop_test/0, merge_test/0, delete_test/0, update_test/0, fold_test/0]). + +from_list_test() -> + gleam@expect:equal(gleam@map_dict:size(gleam@map_dict:from_list([{4, 0}, + {1, 0}])), + 2). + +has_key_test() -> + gleam@expect:false(gleam@map_dict:has_key(gleam@map_dict:from_list([]), 1)), + gleam@expect:true(gleam@map_dict:has_key(gleam@map_dict:from_list([{1, 0}]), + 1)), + gleam@expect:true(gleam@map_dict:has_key(gleam@map_dict:from_list([{4, 0}, + {1, 0}]), + 1)), + gleam@expect:false(gleam@map_dict:has_key(gleam@map_dict:from_list([{4, 0}, + {1, 0}]), + 0)). + +new_test() -> + gleam@expect:equal(gleam@map_dict:size(gleam@map_dict:new()), 0), + gleam@expect:equal(gleam@map_dict:to_list(gleam@map_dict:new()), []). + +fetch_test() -> + Proplist = [{4, 0}, {1, 1}], + M = gleam@map_dict:from_list(Proplist), + gleam@expect:equal(gleam@map_dict:fetch(M, 4), {ok, 0}), + gleam@expect:equal(gleam@map_dict:fetch(M, 1), {ok, 1}), + gleam@expect:is_error(gleam@map_dict:fetch(M, 2)). + +put_test() -> + gleam@expect:equal(gleam@map_dict:put(gleam@map_dict:put(gleam@map_dict:put(gleam@map_dict:new(), + <<"a">>, + 0), + <<"b">>, + 1), + <<"c">>, + 2), + gleam@map_dict:from_list([{<<"a">>, 0}, + {<<"b">>, 1}, + {<<"c">>, 2}])). + +map_values_test() -> + gleam@expect:equal(gleam@map_dict:map_values(gleam@map_dict:from_list([{1, + 0}, + {2, + 1}, + {3, + 2}]), + fun(K, V) -> K + V end), + gleam@map_dict:from_list([{1, 1}, {2, 3}, {3, 5}])). + +keys_test() -> + gleam@expect:equal(gleam@map_dict:keys(gleam@map_dict:from_list([{<<"a">>, + 0}, + {<<"b">>, + 1}, + {<<"c">>, + 2}])), + [<<"a">>, <<"b">>, <<"c">>]). + +values_test() -> + gleam@expect:equal(gleam@map_dict:values(gleam@map_dict:from_list([{<<"a">>, + 0}, + {<<"b">>, + 1}, + {<<"c">>, + 2}])), + [0, 1, 2]). + +take_test() -> + gleam@expect:equal(gleam@map_dict:take(gleam@map_dict:from_list([{<<"a">>, + 0}, + {<<"b">>, + 1}, + {<<"c">>, + 2}]), + [<<"a">>, <<"b">>, <<"d">>]), + gleam@map_dict:from_list([{<<"a">>, 0}, {<<"b">>, 1}])). + +drop_test() -> + gleam@expect:equal(gleam@map_dict:drop(gleam@map_dict:from_list([{<<"a">>, + 0}, + {<<"b">>, + 1}, + {<<"c">>, + 2}]), + [<<"a">>, <<"b">>, <<"d">>]), + gleam@map_dict:from_list([{<<"c">>, 2}])). + +merge_test() -> + A = gleam@map_dict:from_list([{<<"a">>, 2}, {<<"c">>, 4}, {<<"d">>, 3}]), + B = gleam@map_dict:from_list([{<<"a">>, 0}, {<<"b">>, 1}, {<<"c">>, 2}]), + gleam@expect:equal(gleam@map_dict:merge(A, B), + gleam@map_dict:from_list([{<<"a">>, 0}, + {<<"b">>, 1}, + {<<"c">>, 2}, + {<<"d">>, 3}])), + gleam@expect:equal(gleam@map_dict:merge(B, A), + gleam@map_dict:from_list([{<<"a">>, 2}, + {<<"b">>, 1}, + {<<"c">>, 4}, + {<<"d">>, 3}])). + +delete_test() -> + gleam@expect:equal(gleam@map_dict:delete(gleam@map_dict:delete(gleam@map_dict:from_list([{<<"a">>, + 0}, + {<<"b">>, + 1}, + {<<"c">>, + 2}]), + <<"a">>), + <<"d">>), + gleam@map_dict:from_list([{<<"b">>, 1}, {<<"c">>, 2}])). + +update_test() -> + Dict = gleam@map_dict:from_list([{<<"a">>, 0}, {<<"b">>, 1}, {<<"c">>, 2}]), + IncOrZero = fun(X) -> case X of + {ok, I} -> + I + 1; + + {error, _} -> + 0 + end end, + gleam@expect:equal(gleam@map_dict:update(Dict, <<"a">>, IncOrZero), + gleam@map_dict:from_list([{<<"a">>, 1}, + {<<"b">>, 1}, + {<<"c">>, 2}])), + gleam@expect:equal(gleam@map_dict:update(Dict, <<"b">>, IncOrZero), + gleam@map_dict:from_list([{<<"a">>, 0}, + {<<"b">>, 2}, + {<<"c">>, 2}])), + gleam@expect:equal(gleam@map_dict:update(Dict, <<"z">>, IncOrZero), + gleam@map_dict:from_list([{<<"a">>, 0}, + {<<"b">>, 1}, + {<<"c">>, 2}, + {<<"z">>, 0}])). + +fold_test() -> + Dict = gleam@map_dict:from_list([{<<"a">>, 0}, + {<<"b">>, 1}, + {<<"c">>, 2}, + {<<"d">>, 3}]), + Add = fun(_, V, Acc) -> V + Acc end, + gleam@expect:equal(gleam@map_dict:fold(Dict, 0, Add), 6), + Concat = fun(K, _, Acc) -> gleam@string:append(Acc, K) end, + gleam@expect:equal(gleam@map_dict:fold(Dict, <<"">>, Concat), <<"abcd">>), + gleam@expect:equal(gleam@map_dict:fold(gleam@map_dict:from_list([]), 0, Add), + 0). diff --git a/gen/test/gleam@order_test.erl b/gen/test/gleam@order_test.erl new file mode 100644 index 0000000..d9525c6 --- /dev/null +++ b/gen/test/gleam@order_test.erl @@ -0,0 +1,47 @@ +-module(gleam@order_test). +-compile(no_auto_import). + +-export([reverse_test/0, to_int_test/0, compare_test/0, max_test/0, min_test/0]). + +reverse_test() -> + gleam@expect:equal(gleam@order:reverse(lt), gt), + gleam@expect:equal(gleam@order:reverse(eq), eq), + gleam@expect:equal(gleam@order:reverse(gt), lt). + +to_int_test() -> + gleam@expect:equal(gleam@order:to_int(lt), -1), + gleam@expect:equal(gleam@order:to_int(eq), 0), + gleam@expect:equal(gleam@order:to_int(gt), 1). + +compare_test() -> + gleam@expect:equal(gleam@order:compare(lt, lt), eq), + gleam@expect:equal(gleam@order:compare(lt, eq), lt), + gleam@expect:equal(gleam@order:compare(lt, gt), lt), + gleam@expect:equal(gleam@order:compare(eq, lt), gt), + gleam@expect:equal(gleam@order:compare(eq, eq), eq), + gleam@expect:equal(gleam@order:compare(eq, gt), lt), + gleam@expect:equal(gleam@order:compare(gt, lt), gt), + gleam@expect:equal(gleam@order:compare(gt, eq), gt), + gleam@expect:equal(gleam@order:compare(gt, gt), eq). + +max_test() -> + gleam@expect:equal(gleam@order:max(lt, lt), lt), + gleam@expect:equal(gleam@order:max(lt, eq), eq), + gleam@expect:equal(gleam@order:max(lt, gt), gt), + gleam@expect:equal(gleam@order:max(eq, lt), eq), + gleam@expect:equal(gleam@order:max(eq, eq), eq), + gleam@expect:equal(gleam@order:max(eq, gt), gt), + gleam@expect:equal(gleam@order:max(gt, lt), gt), + gleam@expect:equal(gleam@order:max(gt, eq), gt), + gleam@expect:equal(gleam@order:max(gt, gt), gt). + +min_test() -> + gleam@expect:equal(gleam@order:min(lt, lt), lt), + gleam@expect:equal(gleam@order:min(lt, eq), lt), + gleam@expect:equal(gleam@order:min(lt, gt), lt), + gleam@expect:equal(gleam@order:min(eq, lt), lt), + gleam@expect:equal(gleam@order:min(eq, eq), eq), + gleam@expect:equal(gleam@order:min(eq, gt), eq), + gleam@expect:equal(gleam@order:min(gt, lt), lt), + gleam@expect:equal(gleam@order:min(gt, eq), eq), + gleam@expect:equal(gleam@order:min(gt, gt), gt). diff --git a/gen/test/gleam@result_test.erl b/gen/test/gleam@result_test.erl new file mode 100644 index 0000000..e246694 --- /dev/null +++ b/gen/test/gleam@result_test.erl @@ -0,0 +1,47 @@ +-module(gleam@result_test). +-compile(no_auto_import). + +-export([is_ok_test/0, is_error_test/0, map_test/0, map_error_test/0, flatten_test/0, then_test/0, unwrap_test/0]). + +is_ok_test() -> + gleam@expect:true(gleam@result:is_ok({ok, 1})), + gleam@expect:false(gleam@result:is_ok({error, 1})). + +is_error_test() -> + gleam@expect:false(gleam@result:is_error({ok, 1})), + gleam@expect:true(gleam@result:is_error({error, 1})). + +map_test() -> + gleam@expect:equal(gleam@result:map({ok, 1}, fun(X) -> X + 1 end), {ok, 2}), + gleam@expect:equal(gleam@result:map({ok, 1}, fun(_) -> <<"2">> end), + {ok, <<"2">>}), + gleam@expect:equal(gleam@result:map({error, 1}, fun(X) -> X + 1 end), + {error, 1}). + +map_error_test() -> + gleam@expect:equal(gleam@result:map_error({ok, 1}, fun(X) -> X + 1 end), + {ok, 1}), + gleam@expect:equal(gleam@result:map_error({error, 1}, fun(X) -> X + 1 end), + {error, 2}). + +flatten_test() -> + gleam@expect:equal(gleam@result:flatten({ok, {ok, 1}}), {ok, 1}), + gleam@expect:equal(gleam@result:flatten({ok, {error, 1}}), {error, 1}), + gleam@expect:equal(gleam@result:flatten({error, 1}), {error, 1}), + gleam@expect:equal(gleam@result:flatten({error, {error, 1}}), + {error, {error, 1}}). + +then_test() -> + gleam@expect:equal(gleam@result:then({error, 1}, fun(X) -> {ok, X + 1} end), + {error, 1}), + gleam@expect:equal(gleam@result:then({ok, 1}, fun(X) -> {ok, X + 1} end), + {ok, 2}), + gleam@expect:equal(gleam@result:then({ok, 1}, + fun(_) -> {ok, <<"type change">>} end), + {ok, <<"type change">>}), + gleam@expect:equal(gleam@result:then({ok, 1}, fun(_) -> {error, 1} end), + {error, 1}). + +unwrap_test() -> + gleam@expect:equal(gleam@result:unwrap({ok, 1}, 50), 1), + gleam@expect:equal(gleam@result:unwrap({error, <<"nope">>}, 50), 50). diff --git a/gen/test/gleam@string_test.erl b/gen/test/gleam@string_test.erl new file mode 100644 index 0000000..5d1d912 --- /dev/null +++ b/gen/test/gleam@string_test.erl @@ -0,0 +1,34 @@ +-module(gleam@string_test). +-compile(no_auto_import). + +-export([length_test/0, lowercase_test/0, uppercase_test/0, reverse_test/0, split_test/0, replace_test/0, append_test/0]). + +length_test() -> + gleam@expect:equal(gleam@string:length(<<"ß↑e̊">>), 3), + gleam@expect:equal(gleam@string:length(<<"Gleam">>), 5), + gleam@expect:equal(gleam@string:length(<<"">>), 0). + +lowercase_test() -> + gleam@expect:equal(gleam@string:lowercase(<<"Gleam">>), <<"gleam">>). + +uppercase_test() -> + gleam@expect:equal(gleam@string:uppercase(<<"Gleam">>), <<"GLEAM">>). + +reverse_test() -> + gleam@expect:equal(gleam@string:reverse(<<"Gleam">>), <<"maelG">>). + +split_test() -> + gleam@expect:equal(gleam@string:split(<<"Gleam,Erlang,Elixir">>, <<",">>), + [<<"Gleam">>, <<"Erlang">>, <<"Elixir">>]), + gleam@expect:equal(gleam@string:split(<<"Gleam, Erlang,Elixir">>, <<", ">>), + [<<"Gleam">>, <<"Erlang,Elixir">>]). + +replace_test() -> + gleam@expect:equal(gleam@string:replace(<<"Gleam,Erlang,Elixir">>, + <<",">>, + <<"++">>), + <<"Gleam++Erlang++Elixir">>). + +append_test() -> + gleam@expect:equal(gleam@string:append(<<"Test">>, <<" Me">>), + <<"Test Me">>). diff --git a/gen/test/gleam@tuple_test.erl b/gen/test/gleam@tuple_test.erl new file mode 100644 index 0000000..c705c74 --- /dev/null +++ b/gen/test/gleam@tuple_test.erl @@ -0,0 +1,23 @@ +-module(gleam@tuple_test). +-compile(no_auto_import). + +-export([new_test/0, first_test/0, second_test/0, swap_test/0, fetch_test/0]). + +new_test() -> + gleam@expect:equal(gleam@tuple:new(1, 2), {1, 2}), + gleam@expect:equal(gleam@tuple:new(2, <<"3">>), {2, <<"3">>}). + +first_test() -> + gleam@expect:equal(gleam@tuple:first({1, 2}), 1). + +second_test() -> + gleam@expect:equal(gleam@tuple:second({1, 2}), 2). + +swap_test() -> + gleam@expect:equal(gleam@tuple:swap({1, <<"2">>}), {<<"2">>, 1}). + +fetch_test() -> + Proplist = [{0, <<"1">>}, {1, <<"2">>}], + gleam@expect:equal(gleam@tuple:fetch(Proplist, 0), {ok, <<"1">>}), + gleam@expect:equal(gleam@tuple:fetch(Proplist, 1), {ok, <<"2">>}), + gleam@expect:is_error(gleam@tuple:fetch(Proplist, 2)). diff --git a/gen/test/std@any_test.erl b/gen/test/std@any_test.erl deleted file mode 100644 index 3164919..0000000 --- a/gen/test/std@any_test.erl +++ /dev/null @@ -1,110 +0,0 @@ --module(std@any_test). --compile(no_auto_import). - --export([string_test/0, int_test/0, float_test/0, thunk_test/0, bool_test/0, atom_test/0, list_test/0, tuple_test/0, field_test/0]). - -string_test() -> - std@expect:equal(std@any:string(std@any:from(<<"">>)), {ok, <<"">>}), - std@expect:equal(std@any:string(std@any:from(<<"Hello">>)), - {ok, <<"Hello">>}), - std@expect:equal(std@any:string(std@any:from(1)), - {error, <<"Expected a String, got `1`">>}), - std@expect:equal(std@any:string(std@any:from([])), - {error, <<"Expected a String, got `[]`">>}). - -int_test() -> - std@expect:equal(std@any:int(std@any:from(1)), {ok, 1}), - std@expect:equal(std@any:int(std@any:from(2)), {ok, 2}), - std@expect:equal(std@any:int(std@any:from(1.0)), - {error, <<"Expected an Int, got `1.0`">>}), - std@expect:equal(std@any:int(std@any:from([])), - {error, <<"Expected an Int, got `[]`">>}). - -float_test() -> - std@expect:equal(std@any:float(std@any:from(1.0)), {ok, 1.0}), - std@expect:equal(std@any:float(std@any:from(2.2)), {ok, 2.2}), - std@expect:equal(std@any:float(std@any:from(1)), - {error, <<"Expected a Float, got `1`">>}), - std@expect:equal(std@any:float(std@any:from([])), - {error, <<"Expected a Float, got `[]`">>}). - -thunk_test() -> - std@expect:is_ok(std@any:thunk(std@any:from(fun() -> 1 end))), - std@expect:equal(std@result:map(std@any:thunk(std@any:from(fun() -> 1 end)), - fun(F) -> F() end), - {ok, std@any:from(1)}), - std@expect:is_error(std@any:thunk(std@any:from(fun(X) -> X end))), - std@expect:is_error(std@any:thunk(std@any:from(1))), - std@expect:is_error(std@any:thunk(std@any:from([]))). - -bool_test() -> - std@expect:equal(std@any:bool(std@any:from(true)), {ok, true}), - std@expect:equal(std@any:bool(std@any:from(false)), {ok, false}), - std@expect:equal(std@any:bool(std@any:from(1)), - {error, <<"Expected a Bool, got `1`">>}), - std@expect:equal(std@any:bool(std@any:from([])), - {error, <<"Expected a Bool, got `[]`">>}). - -atom_test() -> - std@expect:equal(std@any:atom(std@any:from(std@atom:create_from_string(<<"">>))), - {ok, std@atom:create_from_string(<<"">>)}), - std@expect:equal(std@any:atom(std@any:from(std@atom:create_from_string(<<"ok">>))), - {ok, std@atom:create_from_string(<<"ok">>)}), - std@expect:is_error(std@any:atom(std@any:from(1))), - std@expect:is_error(std@any:atom(std@any:from([]))). - -list_test() -> - std@expect:equal(std@any:list(std@any:from([]), fun std@any:string/1), - {ok, []}), - std@expect:equal(std@any:list(std@any:from([]), fun std@any:int/1), - {ok, []}), - std@expect:equal(std@any:list(std@any:from([1, 2, 3]), fun std@any:int/1), - {ok, [1, 2, 3]}), - std@expect:equal(std@any:list(std@any:from([[1], [2], [3]]), - fun(Capture1) -> - std@any:list(Capture1, fun std@any:int/1) - end), - {ok, [[1], [2], [3]]}), - std@expect:is_error(std@any:list(std@any:from(1), fun std@any:string/1)), - std@expect:is_error(std@any:list(std@any:from(1.0), fun std@any:int/1)), - std@expect:is_error(std@any:list(std@any:from([<<"">>]), - fun std@any:int/1)), - std@expect:is_error(std@any:list(std@any:from([std@any:from(1), - std@any:from(<<"not an int">>)]), - fun std@any:int/1)). - -tuple_test() -> - std@expect:equal(std@any:tuple(std@any:from({1, []})), - {ok, {std@any:from(1), std@any:from([])}}), - std@expect:equal(std@any:tuple(std@any:from({<<"ok">>, <<"ok">>})), - {ok, {std@any:from(<<"ok">>), std@any:from(<<"ok">>)}}), - std@expect:is_error(std@any:tuple(std@any:from({1}))), - std@expect:is_error(std@any:tuple(std@any:from({1, 2, 3}))), - std@expect:equal(std@result:then(std@result:then(std@any:tuple(std@any:from({1, - 2.0})), - fun(X) -> - std@result:map(std@any:int(std@tuple:first(X)), - fun(F) -> - {F, - std@tuple:second(X)} - end) - end), - fun(X) -> - std@result:map(std@any:float(std@tuple:second(X)), - fun(F) -> - {std@tuple:first(X), - F} - end) - end), - {ok, {1, 2.0}}). - -field_test() -> - {ok, OkAtom} = std@atom:from_string(<<"ok">>), - std@expect:equal(std@any:field(std@any:from(#{}#{ok => 1}), OkAtom), - {ok, std@any:from(1)}), - std@expect:equal(std@any:field(std@any:from(#{}#{ok => 3}#{earlier => 2}), - OkAtom), - {ok, std@any:from(3)}), - std@expect:is_error(std@any:field(std@any:from(#{}), OkAtom)), - std@expect:is_error(std@any:field(std@any:from(1), OkAtom)), - std@expect:is_error(std@any:field(std@any:from([]), [])). diff --git a/gen/test/std@atom_test.erl b/gen/test/std@atom_test.erl deleted file mode 100644 index 20629d9..0000000 --- a/gen/test/std@atom_test.erl +++ /dev/null @@ -1,24 +0,0 @@ --module(std@atom_test). --compile(no_auto_import). - --export([from_string_test/0, create_from_string_test/0, to_string_test/0]). - -from_string_test() -> - std@expect:is_ok(std@atom:from_string(<<"ok">>)), - std@expect:is_ok(std@atom:from_string(<<"expect">>)), - std@expect:is_error(std@atom:from_string(<<"this is not an atom we have seen before">>)). - -create_from_string_test() -> - std@expect:equal({ok, std@atom:create_from_string(<<"ok">>)}, - std@atom:from_string(<<"ok">>)), - std@expect:equal({ok, std@atom:create_from_string(<<"expect">>)}, - std@atom:from_string(<<"expect">>)), - std@expect:equal({ok, - std@atom:create_from_string(<<"this is another atom we have not seen before">>)}, - std@atom:from_string(<<"this is another atom we have not seen before">>)). - -to_string_test() -> - std@expect:equal(std@atom:to_string(std@atom:create_from_string(<<"ok">>)), - <<"ok">>), - std@expect:equal(std@atom:to_string(std@atom:create_from_string(<<"expect">>)), - <<"expect">>). diff --git a/gen/test/std@bool_test.erl b/gen/test/std@bool_test.erl deleted file mode 100644 index 0679cb1..0000000 --- a/gen/test/std@bool_test.erl +++ /dev/null @@ -1,30 +0,0 @@ --module(std@bool_test). --compile(no_auto_import). - --export([negate_test/0, compare_test/0, max_test/0, min_test/0, to_int_test/0]). - -negate_test() -> - std@expect:false(std@bool:negate(true)), - std@expect:true(std@bool:negate(false)). - -compare_test() -> - std@expect:equal(std@bool:compare(true, true), eq), - std@expect:equal(std@bool:compare(true, false), gt), - std@expect:equal(std@bool:compare(false, false), eq), - std@expect:equal(std@bool:compare(false, true), lt). - -max_test() -> - std@expect:equal(std@bool:max(true, true), true), - std@expect:equal(std@bool:max(true, false), true), - std@expect:equal(std@bool:max(false, false), false), - std@expect:equal(std@bool:max(false, true), true). - -min_test() -> - std@expect:equal(std@bool:min(true, true), true), - std@expect:equal(std@bool:min(true, false), false), - std@expect:equal(std@bool:min(false, false), false), - std@expect:equal(std@bool:min(false, true), false). - -to_int_test() -> - std@expect:equal(std@bool:to_int(true), 1), - std@expect:equal(std@bool:to_int(false), 0). diff --git a/gen/test/std@float_test.erl b/gen/test/std@float_test.erl deleted file mode 100644 index 9136643..0000000 --- a/gen/test/std@float_test.erl +++ /dev/null @@ -1,42 +0,0 @@ --module(std@float_test). --compile(no_auto_import). - --export([parse_test/0, to_string_test/0, ceiling_test/0, floor_test/0, round_test/0, truncate_test/0]). - -parse_test() -> - std@expect:equal(std@float:parse(<<"1.23">>), {ok, 1.23}), - std@expect:equal(std@float:parse(<<"5.0">>), {ok, 5.0}), - std@expect:equal(std@float:parse(<<"0.123456789">>), {ok, 0.123456789}), - std@expect:is_error(std@float:parse(<<"">>)), - std@expect:is_error(std@float:parse(<<"what">>)), - std@expect:is_error(std@float:parse(<<"1">>)). - -to_string_test() -> - std@expect:equal(std@float:to_string(123.0), <<"123.0">>), - std@expect:equal(std@float:to_string(-8.1), <<"-8.1">>). - -ceiling_test() -> - std@expect:equal(std@float:ceiling(8.1), 9.0), - std@expect:equal(std@float:ceiling(-8.1), -8.0), - std@expect:equal(std@float:ceiling(-8.0), -8.0). - -floor_test() -> - std@expect:equal(std@float:floor(8.1), 8.0), - std@expect:equal(std@float:floor(-8.1), -9.0), - std@expect:equal(std@float:floor(-8.0), -8.0). - -round_test() -> - std@expect:equal(std@float:round(8.1), 8), - std@expect:equal(std@float:round(8.4), 8), - std@expect:equal(std@float:round(8.499), 8), - std@expect:equal(std@float:round(8.5), 9), - std@expect:equal(std@float:round(-8.1), -8), - std@expect:equal(std@float:round(-7.5), -8). - -truncate_test() -> - std@expect:equal(std@float:truncate(8.1), 8), - std@expect:equal(std@float:truncate(8.4), 8), - std@expect:equal(std@float:truncate(8.499), 8), - std@expect:equal(std@float:truncate(8.5), 8), - std@expect:equal(std@float:truncate(-8.1), -8), - std@expect:equal(std@float:truncate(-7.5), -7). diff --git a/gen/test/std@http_test.erl b/gen/test/std@http_test.erl deleted file mode 100644 index 14e2b40..0000000 --- a/gen/test/std@http_test.erl +++ /dev/null @@ -1,6 +0,0 @@ --module(std@http_test). --compile(no_auto_import). - --export([]). - - diff --git a/gen/test/std@int_test.erl b/gen/test/std@int_test.erl deleted file mode 100644 index 9aa68f3..0000000 --- a/gen/test/std@int_test.erl +++ /dev/null @@ -1,29 +0,0 @@ --module(std@int_test). --compile(no_auto_import). - --export([to_string/0, parse/0, to_base_string/0, compare_test/0]). - -to_string() -> - std@expect:equal(std@int:to_string(123), <<"123">>), - std@expect:equal(std@int:to_string(-123), <<"-123">>), - std@expect:equal(std@int:to_string(123), <<"123">>). - -parse() -> - std@expect:equal(std@int:parse(<<"123">>), {ok, 123}), - std@expect:equal(std@int:parse(<<"-123">>), {ok, -123}), - std@expect:equal(std@int:parse(<<"0123">>), {ok, 123}), - std@expect:is_error(std@int:parse(<<"">>)), - std@expect:is_error(std@int:parse(<<"what">>)), - std@expect:is_error(std@int:parse(<<"1.23">>)). - -to_base_string() -> - std@expect:equal(std@int:to_base_string(100, 16), <<"64">>), - std@expect:equal(std@int:to_base_string(-100, 16), <<"-64">>). - -compare_test() -> - std@expect:equal(std@int:compare(0, 0), eq), - std@expect:equal(std@int:compare(1, 1), eq), - std@expect:equal(std@int:compare(0, 1), lt), - std@expect:equal(std@int:compare(-2, -1), lt), - std@expect:equal(std@int:compare(2, 1), gt), - std@expect:equal(std@int:compare(-1, -2), gt). diff --git a/gen/test/std@iodata_test.erl b/gen/test/std@iodata_test.erl deleted file mode 100644 index cdfe81f..0000000 --- a/gen/test/std@iodata_test.erl +++ /dev/null @@ -1,57 +0,0 @@ --module(std@iodata_test). --compile(no_auto_import). - --export([iodata_test/0, lowercase_test/0, uppercase_test/0, split_test/0, is_equal_test/0, is_empty_test/0]). - -iodata_test() -> - Data = std@iodata:prepend(std@iodata:append(std@iodata:append(std@iodata:new(<<"ello">>), - <<",">>), - <<" world!">>), - <<"H">>), - std@expect:equal(std@iodata:to_string(Data), <<"Hello, world!">>), - std@expect:equal(std@iodata:byte_size(Data), 13), - Data1 = std@iodata:prepend_iodata(std@iodata:append_iodata(std@iodata:append_iodata(std@iodata:new(<<"ello">>), - std@iodata:new(<<",">>)), - std@iodata:concat([std@iodata:new(<<" wo">>), - std@iodata:new(<<"rld!">>)])), - std@iodata:new(<<"H">>)), - std@expect:equal(std@iodata:to_string(Data1), <<"Hello, world!">>), - std@expect:equal(std@iodata:byte_size(Data1), 13). - -lowercase_test() -> - std@expect:equal(std@iodata:to_string(std@iodata:lowercase(std@iodata:from_strings([<<"Gleam">>, - <<"Gleam">>]))), - <<"gleamgleam">>). - -uppercase_test() -> - std@expect:equal(std@iodata:to_string(std@iodata:uppercase(std@iodata:from_strings([<<"Gleam">>, - <<"Gleam">>]))), - <<"GLEAMGLEAM">>). - -split_test() -> - std@expect:equal(std@iodata:split(std@iodata:new(<<"Gleam,Erlang,Elixir">>), - <<",">>), - [std@iodata:new(<<"Gleam">>), - std@iodata:new(<<"Erlang">>), - std@iodata:new(<<"Elixir">>)]), - std@expect:equal(std@iodata:split(std@iodata:from_strings([<<"Gleam, Erl">>, - <<"ang,Elixir">>]), - <<", ">>), - [std@iodata:new(<<"Gleam">>), - std@iodata:from_strings([<<"Erl">>, <<"ang,Elixir">>])]). - -is_equal_test() -> - std@expect:true(std@iodata:is_equal(std@iodata:new(<<"12">>), - std@iodata:from_strings([<<"1">>, - <<"2">>]))), - std@expect:true(std@iodata:is_equal(std@iodata:new(<<"12">>), - std@iodata:new(<<"12">>))), - std@expect:false(std@iodata:is_equal(std@iodata:new(<<"12">>), - std@iodata:new(<<"2">>))). - -is_empty_test() -> - std@expect:true(std@iodata:is_empty(std@iodata:new(<<"">>))), - std@expect:false(std@iodata:is_empty(std@iodata:new(<<"12">>))), - std@expect:true(std@iodata:is_empty(std@iodata:from_strings([]))), - std@expect:true(std@iodata:is_empty(std@iodata:from_strings([<<"">>, - <<"">>]))). diff --git a/gen/test/std@list_test.erl b/gen/test/std@list_test.erl deleted file mode 100644 index d5dc281..0000000 --- a/gen/test/std@list_test.erl +++ /dev/null @@ -1,196 +0,0 @@ --module(std@list_test). --compile(no_auto_import). - --export([length_test/0, reverse_test/0, is_empty_test/0, contains_test/0, head_test/0, tail_test/0, filter_test/0, map_test/0, traverse_test/0, drop_test/0, take_test/0, new_test/0, append_test/0, flatten_test/0, fold_test/0, fold_right_test/0, find_test/0, all_test/0, any_test/0, zip_test/0, strict_zip_test/0, intersperse_test/0, at_test/0, unique_test/0, sort_test/0, index_map_test/0, range_test/0, repeat_test/0, split_test/0, split_while_test/0]). - -length_test() -> - std@expect:equal(std@list:length([]), 0), - std@expect:equal(std@list:length([1]), 1), - std@expect:equal(std@list:length([1, 1]), 2), - std@expect:equal(std@list:length([1, 1, 1]), 3). - -reverse_test() -> - std@expect:equal(std@list:reverse([]), []), - std@expect:equal(std@list:reverse([1, 2, 3, 4, 5]), [5, 4, 3, 2, 1]). - -is_empty_test() -> - std@expect:true(std@list:is_empty([])), - std@expect:false(std@list:is_empty([1])). - -contains_test() -> - std@expect:true(std@list:contains([0, 4, 5, 1], 1)), - std@expect:false(std@list:contains([0, 4, 5, 7], 1)), - std@expect:false(std@list:contains([], 1)). - -head_test() -> - std@expect:equal(std@list:head([0, 4, 5, 7]), {ok, 0}), - std@expect:is_error(std@list:head([])). - -tail_test() -> - std@expect:equal(std@list:tail([0, 4, 5, 7]), {ok, [4, 5, 7]}), - std@expect:equal(std@list:tail([0]), {ok, []}), - std@expect:is_error(std@list:tail([])). - -filter_test() -> - std@expect:equal(std@list:filter([], fun(_) -> true end), []), - std@expect:equal(std@list:filter([0, 4, 5, 7, 3], fun(_) -> true end), - [0, 4, 5, 7, 3]), - std@expect:equal(std@list:filter([0, 4, 5, 7, 3], fun(X) -> X > 4 end), - [5, 7]), - std@expect:equal(std@list:filter([0, 4, 5, 7, 3], fun(X) -> X < 4 end), - [0, 3]). - -map_test() -> - std@expect:equal(std@list:map([], fun(X) -> X * 2 end), []), - std@expect:equal(std@list:map([0, 4, 5, 7, 3], fun(X) -> X * 2 end), - [0, 8, 10, 14, 6]). - -traverse_test() -> - Fun = fun(X) -> case X =:= 6 orelse X =:= 5 orelse X =:= 4 of - true -> - {ok, X * 2}; - - false -> - {error, X} - end end, - std@expect:equal(std@list:traverse([5, 6, 5, 6], Fun), - {ok, [10, 12, 10, 12]}), - std@expect:equal(std@list:traverse([4, 6, 5, 7, 3], Fun), {error, 7}). - -drop_test() -> - std@expect:equal(std@list:drop([], 5), []), - std@expect:equal(std@list:drop([1, 2, 3, 4, 5, 6, 7, 8], 5), [6, 7, 8]). - -take_test() -> - std@expect:equal(std@list:take([], 5), []), - std@expect:equal(std@list:take([1, 2, 3, 4, 5, 6, 7, 8], 5), - [1, 2, 3, 4, 5]). - -new_test() -> - std@expect:equal(std@list:new(), []). - -append_test() -> - std@expect:equal(std@list:append([1], [2, 3]), [1, 2, 3]). - -flatten_test() -> - std@expect:equal(std@list:flatten([]), []), - std@expect:equal(std@list:flatten([[]]), []), - std@expect:equal(std@list:flatten([[], [], []]), []), - std@expect:equal(std@list:flatten([[1, 2], [], [3, 4]]), [1, 2, 3, 4]). - -fold_test() -> - std@expect:equal(std@list:fold([1, 2, 3], [], fun(X, Acc) -> [X | Acc] end), - [3, 2, 1]). - -fold_right_test() -> - std@expect:equal(std@list:fold_right([1, 2, 3], - [], - fun(X, Acc) -> [X | Acc] end), - [1, 2, 3]). - -find_test() -> - F = fun(X) -> case X of - 2 -> - {ok, 4}; - - _ -> - {error, 0} - end end, - std@expect:equal(std@list:find([1, 2, 3], F), {ok, 4}), - std@expect:equal(std@list:find([1, 3, 2], F), {ok, 4}), - std@expect:is_error(std@list:find([1, 3], F)). - -all_test() -> - std@expect:equal(std@list:all([1, 2, 3, 4, 5], fun(X) -> X > 0 end), true), - std@expect:equal(std@list:all([1, 2, 3, 4, 5], fun(X) -> X < 0 end), false), - std@expect:equal(std@list:all([], fun(_) -> false end), true). - -any_test() -> - std@expect:equal(std@list:any([1, 2, 3, 4, 5], fun(X) -> X =:= 2 end), - true), - std@expect:equal(std@list:any([1, 2, 3, 4, 5], fun(X) -> X < 0 end), false), - std@expect:equal(std@list:any([], fun(_) -> false end), false). - -zip_test() -> - std@expect:equal(std@list:zip([], [1, 2, 3]), []), - std@expect:equal(std@list:zip([1, 2], []), []), - std@expect:equal(std@list:zip([1, 2, 3], [4, 5, 6]), - [{1, 4}, {2, 5}, {3, 6}]), - std@expect:equal(std@list:zip([5, 6], [1, 2, 3]), [{5, 1}, {6, 2}]), - std@expect:equal(std@list:zip([5, 6, 7], [1, 2]), [{5, 1}, {6, 2}]). - -strict_zip_test() -> - std@expect:is_error(std@list:strict_zip([], [1, 2, 3])), - std@expect:is_error(std@list:strict_zip([1, 2], [])), - std@expect:equal(std@list:strict_zip([1, 2, 3], [4, 5, 6]), - {ok, [{1, 4}, {2, 5}, {3, 6}]}), - std@expect:is_error(std@list:strict_zip([5, 6], [1, 2, 3])), - std@expect:is_error(std@list:strict_zip([5, 6, 7], [1, 2])). - -intersperse_test() -> - std@expect:equal(std@list:intersperse([1, 2, 3], 4), [1, 4, 2, 4, 3]), - std@expect:equal(std@list:intersperse([], 2), []). - -at_test() -> - std@expect:equal(std@list:at([1, 2, 3], 2), {ok, 3}), - std@expect:is_error(std@list:at([1, 2, 3], 5)), - std@expect:is_error(std@list:at([], 0)), - std@expect:is_error(std@list:at([1, 2, 3, 4, 5, 6], -1)). - -unique_test() -> - std@expect:equal(std@list:unique([1, 1, 2, 3, 4, 4, 4, 5, 6]), - [1, 2, 3, 4, 5, 6]), - std@expect:equal(std@list:unique([7, 1, 45, 6, 2, 47, 2, 7, 5]), - [7, 1, 45, 6, 2, 47, 5]), - std@expect:equal(std@list:unique([3, 4, 5]), [3, 4, 5]), - std@expect:equal(std@list:unique([]), []). - -sort_test() -> - std@expect:equal(std@list:sort([4, 3, 6, 5, 4]), [3, 4, 4, 5, 6]), - std@expect:equal(std@list:sort([]), []), - std@expect:equal(std@list:sort([{1, 2}, {4, 5}, {3, 2}]), - [{1, 2}, {3, 2}, {4, 5}]). - -index_map_test() -> - std@expect:equal(std@list:index_map([3, 4, 5], fun(I, X) -> {I, X} end), - [{0, 3}, {1, 4}, {2, 5}]), - F = fun(I, X) -> std@string:append(X, std@int:to_string(I)) end, - std@expect:equal(std@list:index_map([<<"a">>, <<"b">>, <<"c">>], F), - [<<"a0">>, <<"b1">>, <<"c2">>]). - -range_test() -> - std@expect:equal(std@list:range(0, 0), []), - std@expect:equal(std@list:range(1, 1), []), - std@expect:equal(std@list:range(-1, -1), []), - std@expect:equal(std@list:range(0, 1), [0]), - std@expect:equal(std@list:range(0, 5), [0, 1, 2, 3, 4]), - std@expect:equal(std@list:range(1, -5), [1, 0, -1, -2, -3, -4]). - -repeat_test() -> - std@expect:equal(std@list:repeat(1, -10), []), - std@expect:equal(std@list:repeat(1, 0), []), - std@expect:equal(std@list:repeat(2, 3), [2, 2, 2]), - std@expect:equal(std@list:repeat(<<"x">>, 5), - [<<"x">>, <<"x">>, <<"x">>, <<"x">>, <<"x">>]). - -split_test() -> - std@expect:equal(std@list:split([], 0), {[], []}), - std@expect:equal(std@list:split([0, 1, 2, 3, 4], 0), {[], [0, 1, 2, 3, 4]}), - std@expect:equal(std@list:split([0, 1, 2, 3, 4], -2), - {[], [0, 1, 2, 3, 4]}), - std@expect:equal(std@list:split([0, 1, 2, 3, 4], 1), {[0], [1, 2, 3, 4]}), - std@expect:equal(std@list:split([0, 1, 2, 3, 4], 3), {[0, 1, 2], [3, 4]}), - std@expect:equal(std@list:split([0, 1, 2, 3, 4], 9), {[0, 1, 2, 3, 4], []}). - -split_while_test() -> - std@expect:equal(std@list:split_while([], fun(X) -> X =< 5 end), {[], []}), - std@expect:equal(std@list:split_while([1, 2, 3, 4, 5], fun(X) -> X =< 5 end), - {[1, 2, 3, 4, 5], []}), - std@expect:equal(std@list:split_while([1, 2, 3, 4, 5], - fun(X) -> X =:= 2 end), - {[], [1, 2, 3, 4, 5]}), - std@expect:equal(std@list:split_while([1, 2, 3, 4, 5], fun(X) -> X =< 3 end), - {[1, 2, 3], [4, 5]}), - std@expect:equal(std@list:split_while([1, 2, 3, 4, 5], - fun(X) -> X =< -3 end), - {[], [1, 2, 3, 4, 5]}). diff --git a/gen/test/std@map_dict_test.erl b/gen/test/std@map_dict_test.erl deleted file mode 100644 index dc9b85f..0000000 --- a/gen/test/std@map_dict_test.erl +++ /dev/null @@ -1,133 +0,0 @@ --module(std@map_dict_test). --compile(no_auto_import). - --export([from_list_test/0, has_key_test/0, new_test/0, fetch_test/0, put_test/0, map_values_test/0, keys_test/0, values_test/0, take_test/0, drop_test/0, merge_test/0, delete_test/0, update_test/0, fold_test/0]). - -from_list_test() -> - std@expect:equal(std@map_dict:size(std@map_dict:from_list([{4, 0}, {1, 0}])), - 2). - -has_key_test() -> - std@expect:false(std@map_dict:has_key(std@map_dict:from_list([]), 1)), - std@expect:true(std@map_dict:has_key(std@map_dict:from_list([{1, 0}]), 1)), - std@expect:true(std@map_dict:has_key(std@map_dict:from_list([{4, 0}, - {1, 0}]), - 1)), - std@expect:false(std@map_dict:has_key(std@map_dict:from_list([{4, 0}, - {1, 0}]), - 0)). - -new_test() -> - std@expect:equal(std@map_dict:size(std@map_dict:new()), 0), - std@expect:equal(std@map_dict:to_list(std@map_dict:new()), []). - -fetch_test() -> - Proplist = [{4, 0}, {1, 1}], - M = std@map_dict:from_list(Proplist), - std@expect:equal(std@map_dict:fetch(M, 4), {ok, 0}), - std@expect:equal(std@map_dict:fetch(M, 1), {ok, 1}), - std@expect:is_error(std@map_dict:fetch(M, 2)). - -put_test() -> - std@expect:equal(std@map_dict:put(std@map_dict:put(std@map_dict:put(std@map_dict:new(), - <<"a">>, - 0), - <<"b">>, - 1), - <<"c">>, - 2), - std@map_dict:from_list([{<<"a">>, 0}, - {<<"b">>, 1}, - {<<"c">>, 2}])). - -map_values_test() -> - std@expect:equal(std@map_dict:map_values(std@map_dict:from_list([{1, 0}, - {2, 1}, - {3, 2}]), - fun(K, V) -> K + V end), - std@map_dict:from_list([{1, 1}, {2, 3}, {3, 5}])). - -keys_test() -> - std@expect:equal(std@map_dict:keys(std@map_dict:from_list([{<<"a">>, 0}, - {<<"b">>, 1}, - {<<"c">>, 2}])), - [<<"a">>, <<"b">>, <<"c">>]). - -values_test() -> - std@expect:equal(std@map_dict:values(std@map_dict:from_list([{<<"a">>, 0}, - {<<"b">>, 1}, - {<<"c">>, 2}])), - [0, 1, 2]). - -take_test() -> - std@expect:equal(std@map_dict:take(std@map_dict:from_list([{<<"a">>, 0}, - {<<"b">>, 1}, - {<<"c">>, 2}]), - [<<"a">>, <<"b">>, <<"d">>]), - std@map_dict:from_list([{<<"a">>, 0}, {<<"b">>, 1}])). - -drop_test() -> - std@expect:equal(std@map_dict:drop(std@map_dict:from_list([{<<"a">>, 0}, - {<<"b">>, 1}, - {<<"c">>, 2}]), - [<<"a">>, <<"b">>, <<"d">>]), - std@map_dict:from_list([{<<"c">>, 2}])). - -merge_test() -> - A = std@map_dict:from_list([{<<"a">>, 2}, {<<"c">>, 4}, {<<"d">>, 3}]), - B = std@map_dict:from_list([{<<"a">>, 0}, {<<"b">>, 1}, {<<"c">>, 2}]), - std@expect:equal(std@map_dict:merge(A, B), - std@map_dict:from_list([{<<"a">>, 0}, - {<<"b">>, 1}, - {<<"c">>, 2}, - {<<"d">>, 3}])), - std@expect:equal(std@map_dict:merge(B, A), - std@map_dict:from_list([{<<"a">>, 2}, - {<<"b">>, 1}, - {<<"c">>, 4}, - {<<"d">>, 3}])). - -delete_test() -> - std@expect:equal(std@map_dict:delete(std@map_dict:delete(std@map_dict:from_list([{<<"a">>, - 0}, - {<<"b">>, - 1}, - {<<"c">>, - 2}]), - <<"a">>), - <<"d">>), - std@map_dict:from_list([{<<"b">>, 1}, {<<"c">>, 2}])). - -update_test() -> - Dict = std@map_dict:from_list([{<<"a">>, 0}, {<<"b">>, 1}, {<<"c">>, 2}]), - IncOrZero = fun(X) -> case X of - {ok, I} -> - I + 1; - - {error, _} -> - 0 - end end, - std@expect:equal(std@map_dict:update(Dict, <<"a">>, IncOrZero), - std@map_dict:from_list([{<<"a">>, 1}, - {<<"b">>, 1}, - {<<"c">>, 2}])), - std@expect:equal(std@map_dict:update(Dict, <<"b">>, IncOrZero), - std@map_dict:from_list([{<<"a">>, 0}, - {<<"b">>, 2}, - {<<"c">>, 2}])), - std@expect:equal(std@map_dict:update(Dict, <<"z">>, IncOrZero), - std@map_dict:from_list([{<<"a">>, 0}, - {<<"b">>, 1}, - {<<"c">>, 2}, - {<<"z">>, 0}])). - -fold_test() -> - Dict = std@map_dict:from_list([{<<"a">>, 0}, - {<<"b">>, 1}, - {<<"c">>, 2}, - {<<"d">>, 3}]), - Add = fun(_, V, Acc) -> V + Acc end, - std@expect:equal(std@map_dict:fold(Dict, 0, Add), 6), - Concat = fun(K, _, Acc) -> std@string:append(Acc, K) end, - std@expect:equal(std@map_dict:fold(Dict, <<"">>, Concat), <<"abcd">>), - std@expect:equal(std@map_dict:fold(std@map_dict:from_list([]), 0, Add), 0). diff --git a/gen/test/std@order_test.erl b/gen/test/std@order_test.erl deleted file mode 100644 index f702ff9..0000000 --- a/gen/test/std@order_test.erl +++ /dev/null @@ -1,47 +0,0 @@ --module(std@order_test). --compile(no_auto_import). - --export([reverse_test/0, to_int_test/0, compare_test/0, max_test/0, min_test/0]). - -reverse_test() -> - std@expect:equal(std@order:reverse(lt), gt), - std@expect:equal(std@order:reverse(eq), eq), - std@expect:equal(std@order:reverse(gt), lt). - -to_int_test() -> - std@expect:equal(std@order:to_int(lt), -1), - std@expect:equal(std@order:to_int(eq), 0), - std@expect:equal(std@order:to_int(gt), 1). - -compare_test() -> - std@expect:equal(std@order:compare(lt, lt), eq), - std@expect:equal(std@order:compare(lt, eq), lt), - std@expect:equal(std@order:compare(lt, gt), lt), - std@expect:equal(std@order:compare(eq, lt), gt), - std@expect:equal(std@order:compare(eq, eq), eq), - std@expect:equal(std@order:compare(eq, gt), lt), - std@expect:equal(std@order:compare(gt, lt), gt), - std@expect:equal(std@order:compare(gt, eq), gt), - std@expect:equal(std@order:compare(gt, gt), eq). - -max_test() -> - std@expect:equal(std@order:max(lt, lt), lt), - std@expect:equal(std@order:max(lt, eq), eq), - std@expect:equal(std@order:max(lt, gt), gt), - std@expect:equal(std@order:max(eq, lt), eq), - std@expect:equal(std@order:max(eq, eq), eq), - std@expect:equal(std@order:max(eq, gt), gt), - std@expect:equal(std@order:max(gt, lt), gt), - std@expect:equal(std@order:max(gt, eq), gt), - std@expect:equal(std@order:max(gt, gt), gt). - -min_test() -> - std@expect:equal(std@order:min(lt, lt), lt), - std@expect:equal(std@order:min(lt, eq), lt), - std@expect:equal(std@order:min(lt, gt), lt), - std@expect:equal(std@order:min(eq, lt), lt), - std@expect:equal(std@order:min(eq, eq), eq), - std@expect:equal(std@order:min(eq, gt), eq), - std@expect:equal(std@order:min(gt, lt), lt), - std@expect:equal(std@order:min(gt, eq), eq), - std@expect:equal(std@order:min(gt, gt), gt). diff --git a/gen/test/std@result_test.erl b/gen/test/std@result_test.erl deleted file mode 100644 index 941f1ee..0000000 --- a/gen/test/std@result_test.erl +++ /dev/null @@ -1,47 +0,0 @@ --module(std@result_test). --compile(no_auto_import). - --export([is_ok_test/0, is_error_test/0, map_test/0, map_error_test/0, flatten_test/0, then_test/0, unwrap_test/0]). - -is_ok_test() -> - std@expect:true(std@result:is_ok({ok, 1})), - std@expect:false(std@result:is_ok({error, 1})). - -is_error_test() -> - std@expect:false(std@result:is_error({ok, 1})), - std@expect:true(std@result:is_error({error, 1})). - -map_test() -> - std@expect:equal(std@result:map({ok, 1}, fun(X) -> X + 1 end), {ok, 2}), - std@expect:equal(std@result:map({ok, 1}, fun(_) -> <<"2">> end), - {ok, <<"2">>}), - std@expect:equal(std@result:map({error, 1}, fun(X) -> X + 1 end), - {error, 1}). - -map_error_test() -> - std@expect:equal(std@result:map_error({ok, 1}, fun(X) -> X + 1 end), - {ok, 1}), - std@expect:equal(std@result:map_error({error, 1}, fun(X) -> X + 1 end), - {error, 2}). - -flatten_test() -> - std@expect:equal(std@result:flatten({ok, {ok, 1}}), {ok, 1}), - std@expect:equal(std@result:flatten({ok, {error, 1}}), {error, 1}), - std@expect:equal(std@result:flatten({error, 1}), {error, 1}), - std@expect:equal(std@result:flatten({error, {error, 1}}), - {error, {error, 1}}). - -then_test() -> - std@expect:equal(std@result:then({error, 1}, fun(X) -> {ok, X + 1} end), - {error, 1}), - std@expect:equal(std@result:then({ok, 1}, fun(X) -> {ok, X + 1} end), - {ok, 2}), - std@expect:equal(std@result:then({ok, 1}, - fun(_) -> {ok, <<"type change">>} end), - {ok, <<"type change">>}), - std@expect:equal(std@result:then({ok, 1}, fun(_) -> {error, 1} end), - {error, 1}). - -unwrap_test() -> - std@expect:equal(std@result:unwrap({ok, 1}, 50), 1), - std@expect:equal(std@result:unwrap({error, <<"nope">>}, 50), 50). diff --git a/gen/test/std@string_test.erl b/gen/test/std@string_test.erl deleted file mode 100644 index b0cc46e..0000000 --- a/gen/test/std@string_test.erl +++ /dev/null @@ -1,33 +0,0 @@ --module(std@string_test). --compile(no_auto_import). - --export([length_test/0, lowercase_test/0, uppercase_test/0, reverse_test/0, split_test/0, replace_test/0, append_test/0]). - -length_test() -> - std@expect:equal(std@string:length(<<"ß↑e̊">>), 3), - std@expect:equal(std@string:length(<<"Gleam">>), 5), - std@expect:equal(std@string:length(<<"">>), 0). - -lowercase_test() -> - std@expect:equal(std@string:lowercase(<<"Gleam">>), <<"gleam">>). - -uppercase_test() -> - std@expect:equal(std@string:uppercase(<<"Gleam">>), <<"GLEAM">>). - -reverse_test() -> - std@expect:equal(std@string:reverse(<<"Gleam">>), <<"maelG">>). - -split_test() -> - std@expect:equal(std@string:split(<<"Gleam,Erlang,Elixir">>, <<",">>), - [<<"Gleam">>, <<"Erlang">>, <<"Elixir">>]), - std@expect:equal(std@string:split(<<"Gleam, Erlang,Elixir">>, <<", ">>), - [<<"Gleam">>, <<"Erlang,Elixir">>]). - -replace_test() -> - std@expect:equal(std@string:replace(<<"Gleam,Erlang,Elixir">>, - <<",">>, - <<"++">>), - <<"Gleam++Erlang++Elixir">>). - -append_test() -> - std@expect:equal(std@string:append(<<"Test">>, <<" Me">>), <<"Test Me">>). diff --git a/gen/test/std@tuple_test.erl b/gen/test/std@tuple_test.erl deleted file mode 100644 index a401daf..0000000 --- a/gen/test/std@tuple_test.erl +++ /dev/null @@ -1,23 +0,0 @@ --module(std@tuple_test). --compile(no_auto_import). - --export([new_test/0, first_test/0, second_test/0, swap_test/0, fetch_test/0]). - -new_test() -> - std@expect:equal(std@tuple:new(1, 2), {1, 2}), - std@expect:equal(std@tuple:new(2, <<"3">>), {2, <<"3">>}). - -first_test() -> - std@expect:equal(std@tuple:first({1, 2}), 1). - -second_test() -> - std@expect:equal(std@tuple:second({1, 2}), 2). - -swap_test() -> - std@expect:equal(std@tuple:swap({1, <<"2">>}), {<<"2">>, 1}). - -fetch_test() -> - Proplist = [{0, <<"1">>}, {1, <<"2">>}], - std@expect:equal(std@tuple:fetch(Proplist, 0), {ok, <<"1">>}), - std@expect:equal(std@tuple:fetch(Proplist, 1), {ok, <<"2">>}), - std@expect:is_error(std@tuple:fetch(Proplist, 2)). -- cgit v1.2.3