1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
%%% -*- erlang-indent-level: 2 -*-
%%%-------------------------------------------------------------------
%%% Author: Kostis Sagonas
%%%
%%% Contains tests for handling of BIFs in guards and body calls.
%%%-------------------------------------------------------------------
-module(basic_bifs).
-export([test/0]).
test() ->
ok = test_element(),
ok = test_binary_part().
%%--------------------------------------------------------------------
test_element() ->
true = elem({a, b}),
false = elem({a, c}),
other = elem(gazonk),
ok.
elem(T) when element(1, T) == a -> element(2, T) == b;
elem(_) -> other.
%%--------------------------------------------------------------------
%% Checks that 2-ary and 3-ary BIFs can be compiled to native code.
test_binary_part() ->
Bin = <<1,2,3,4,5,6,7,8,9,10>>,
BinPart = bp3(Bin),
<<7,8>> = bp2(BinPart),
ok.
bp2(Bin) ->
binary_part(Bin, {1, 2}).
bp3(Bin) ->
binary_part(Bin, byte_size(Bin), -5).
%%--------------------------------------------------------------------
|