%%
%% %CopyrightBegin%
%%
%% Copyright Ericsson AB 1997-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
%%
%% %CopyrightEnd%
%%
-module(list_bif_SUITE).
-include_lib("test_server/include/test_server.hrl").
-export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1,
init_per_group/2,end_per_group/2,
init_per_testcase/2,end_per_testcase/2]).
-export([hd_test/1,tl_test/1,t_length/1,t_list_to_pid/1,
t_list_to_float/1,t_list_to_integer/1]).
suite() -> [{ct_hooks,[ts_install_cth]}].
all() ->
[hd_test, tl_test, t_length, t_list_to_pid,
t_list_to_float, t_list_to_integer].
groups() ->
[].
init_per_suite(Config) ->
Config.
end_per_suite(_Config) ->
ok.
init_per_group(_GroupName, Config) ->
Config.
end_per_group(_GroupName, Config) ->
Config.
init_per_testcase(_Case, Config) ->
?line Dog = test_server:timetrap(test_server:seconds(60)),
[{watchdog,Dog}|Config].
end_per_testcase(_Case, Config) ->
Dog = ?config(watchdog, Config),
test_server:timetrap_cancel(Dog),
ok.
t_list_to_integer(suite) ->
[];
t_list_to_integer(doc) ->
["tests list_to_integer and string:to_integer"];
t_list_to_integer(Config) when is_list(Config) ->
?line {'EXIT',{badarg,_}} = (catch list_to_integer("12373281903728109372810937209817320981321ABC")),
?line 12373281903728109372810937209817320981321 = (catch list_to_integer("12373281903728109372810937209817320981321")),
?line 12373 = (catch list_to_integer("12373")),
?line -12373 = (catch list_to_integer("-12373")),
?line 12373 = (catch list_to_integer("+12373")),
?line {'EXIT',{badarg,_}} = ( catch list_to_integer(abc)),
?line {'EXIT',{badarg,_}} = (catch list_to_integer("")),
?line {12373281903728109372810937209817320981321,"ABC"} = string:to_integer("12373281903728109372810937209817320981321ABC"),
?line {-12373281903728109372810937209817320981321,"ABC"} = string:to_integer("-12373281903728109372810937209817320981321ABC"),
?line {12,[345]} = string:to_integer([$1,$2,345]),
?line {12,[a]} = string:to_integer([$1,$2,a]),
?line {error,no_integer} = string:to_integer([$A]),
?line {error,not_a_list} = string:to_integer($A),
ok.
%% Test hd/1 with correct and incorrect arguments.
hd_test(Config) when is_list(Config) ->
?line $h = hd(id("hejsan")),
?line case catch hd(id($h)) of
{'EXIT', {badarg, _}} -> ok;
Res ->
Str=io_lib:format("hd/1 with incorrect args "++
"succeeded.~nResult: ~p", [Res]),
test_server:fail(Str)
end,
ok.
%% Test tl/1 with correct and incorrect arguments.
tl_test(Config) when is_list(Config) ->
?line "ejsan" = tl(id("hejsan")),
?line case catch tl(id(104)) of
{'EXIT', {badarg, _}} ->
ok;
Res ->
Str=io_lib:format("tl/1 with incorrect args "++
"succeeded.~nResult: ~p", [Res]),
test_server:fail(Str)
end,
ok.
%% Test length/1 with correct and incorrect arguments.
t_length(Config) when is_list(Config) ->
?line 0 = length(""),
?line 0 = length([]),
?line 1 = length([1]),
?line 2 = length([1,a]),
?line 2 = length("ab"),
?line 3 = length("abc"),
?line 4 = length(id([x|"abc"])),
?line 6 = length("hejsan"),
?line {'EXIT',{badarg,_}} = (catch length(id([a,b|c]))),
?line case catch length({tuple}) of
{'EXIT', {badarg, _}} ->
ok;
Res ->
Str = io_lib:format("length/1 with incorrect args "++
"succeeded.~nResult: ~p", [Res]),
?line test_server:fail(Str)
end,
ok.
%% Test list_to_pid/1 with correct and incorrect arguments.
t_list_to_pid(Config) when is_list(Config) ->
?line Me = self(),
?line MyListedPid = pid_to_list(Me),
?line Me = list_to_pid(MyListedPid),
?line case catch list_to_pid(id("Incorrect list")) of
{'EXIT', {badarg, _}} ->
ok;
Res ->
Str=io_lib:format("list_to_pid/1 with incorrect "++
"arg succeeded.~nResult: ~p",
[Res]),
test_server:fail(Str)
end,
ok.
%% Test list_to_float/1 with correct and incorrect arguments.
t_list_to_float(Config) when is_list(Config) ->
?line 5.89000 = list_to_float(id("5.89")),
?line 5.89898 = list_to_float(id("5.89898")),
?line case catch list_to_float(id("58")) of
{'EXIT', {badarg, _}} -> ok;
Res ->
Str=io_lib:format("list_to_float with incorrect "++
"arg succeeded.~nResult: ~p",
[Res]),
test_server:fail(Str)
end,
ok.
id(I) -> I.