%%% -*- erlang-indent-level: 2 -*-
%%%-------------------------------------------------------------------
%%% Author: Kostis Sagonas
%%%
%%% Tests for correct translation of booleans and their primitives.
%%%-------------------------------------------------------------------
-module(basic_boolean).
-export([test/0]).
test() ->
ok = test_boolean_ops(false, true),
ok = test_orelse_redundant(),
ok.
%%--------------------------------------------------------------------
test_boolean_ops(F, T) ->
true = T and T,
false = T and F,
false = F and T,
false = F and F,
true = T or T,
true = T or F,
true = F or T,
false = F or F,
true = T andalso T,
false = T andalso F,
false = F andalso T,
false = F andalso F,
true = T orelse T,
true = T orelse F,
true = F orelse T,
false = F orelse F,
ok.
%%--------------------------------------------------------------------
%% Redundant test in BEAM code will generate type warning.
test_orelse_redundant() ->
true = test_orelse(true, true, true),
ok.
test_orelse(A, B, C) ->
A andalso B orelse C.
%%--------------------------------------------------------------------