diff options
Diffstat (limited to 'tests/syntax-tests/source/Erlang/bat_erlang.erl')
-rw-r--r-- | tests/syntax-tests/source/Erlang/bat_erlang.erl | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/syntax-tests/source/Erlang/bat_erlang.erl b/tests/syntax-tests/source/Erlang/bat_erlang.erl new file mode 100644 index 00000000..77d3fffb --- /dev/null +++ b/tests/syntax-tests/source/Erlang/bat_erlang.erl @@ -0,0 +1,72 @@ +-module(bat_erlang). + +-export([main/0]). + +-record(test, { + name :: list(), + data :: binary() +}). + +-define(TESTMACRO, "testmacro"). + +-spec main() -> ok. +main() -> + %% Handling Lists and Numbers + List = [1, 2, 3, 4, $6, 2#00111], + _Sum = lists:sum(List), + _ = [(N * N) + N / N - N || N <- List, N > 2], + [_Head, _SecondHead | _Tail] = List, + _ = [1, atom, [list], <<"binary">>, {tuple, tuple}, #{map => key}, #test{name = "record"}], + + %% Handling Binaries + BinHelloWorld = <<"Hello World">>, + <<X || <<X:1/binary>> <= BinHelloWorld >>, + <<0,0,0,0,0,0,0,151>> = <<151:64/signed-integer>>, + + %% Handling Boolean and Atoms + true = true andalso true, + true = false orelse true, + _ = true =:= true, + _ = false =/= true, + _ = 'HELLO' /= hello, + _ = hello == world, + + %% Handling Maps and Records + TestMap = #{a => 1, b => 2, c => 3}, + #{a := _Value, c := _} = TestMap, + _ = TestMap#{d => 4}, + Record = #test{name = ?TESTMACRO}, + _ = Record#test.name, + + %% Conditionals + case TestMap of + #{b := B} -> + B; + _ -> + ok + end, + if + erlang:is_map(TestMap) -> + map; + true -> + test_function(1) + end, + + %% Messaging + Self = erlang:self(), + Self ! hello_world, + receive + hello_world -> + ok; + _ -> + io:format("unknown message") + after 1000 -> + timeout + end, + ok. + +test_function(N) when erlang:is_integer(N) -> integer; +test_function([_|_]) -> list; +test_function(<<_/binary>>) -> binary; +test_function(_) -> + undefined. |