From 9e735a72ad2693b8f97020fb48cbefb23df52949 Mon Sep 17 00:00:00 2001 From: Andrew Thompson Date: Sun, 18 Sep 2011 00:51:58 -0400 Subject: [PATCH] Improve tests, fix some minor bugs --- src/lager_trunc_io.erl | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/lager_trunc_io.erl b/src/lager_trunc_io.erl index 8ae3380..0902f44 100644 --- a/src/lager_trunc_io.erl +++ b/src/lager_trunc_io.erl @@ -99,8 +99,13 @@ print(Term, Max) -> print(Term, Max, Options) when is_list(Options) -> %% need to convert the proplist to a record print(Term, Max, prepare_options(Options, #print_options{})); + +print(Term, _Max, #print_options{force_strings=true}) when not is_list(Term), not is_binary(Term), not is_atom(Term) -> + erlang:error(badarg); + print(_, Max, _Options) when Max < 0 -> {"...", 3}; print(_, _, #print_options{depth=0}) -> {"...", 3}; + print(Tuple, Max, Options) when is_tuple(Tuple) -> {TC, Len} = tuple_contents(Tuple, Max-2, Options), {[${, TC, $}], Len + 2}; @@ -201,7 +206,7 @@ list_body(X, Max, Options, _Tuple) -> %% improper list {[$|,List], Len + 1}. list_bodyc([], _Max, _Options, _Tuple) -> {[], 0}; -list_bodyc(_, Max, _Options, _Tuple) when Max < 4 -> {"...", 3}; +list_bodyc(_, Max, _Options, _Tuple) when Max < 4 -> {",...", 3}; list_bodyc([H|T], Max, #print_options{depth=Depth} = Options, Tuple) -> {List, Len} = print(H, Max, dec_depth(Options)), {Final, FLen} = list_bodyc(T, Max - Len - 1, Options, Tuple), @@ -221,6 +226,7 @@ list_bodyc(X, Max, Options, _Tuple) -> %% improper list %% [0,65,66] -> [0,65,66] %% [65,b,66] -> "A"[b,66] %% +alist_start([], _Max, #print_options{force_strings=true}) -> {"", 0}; alist_start([], _Max, _Options) -> {"[]", 2}; alist_start(_, Max, _Options) when Max < 4 -> {"...", 3}; alist_start(_, _Max, #print_options{depth=0}) -> {"[...]", 3}; @@ -371,6 +377,7 @@ format_test() -> atom_quoting_test() -> ?assertEqual("hello", lists:flatten(format("~p", [hello], 50))), ?assertEqual("'hello world'", lists:flatten(format("~p", ['hello world'], 50))), + ?assertEqual("'Hello world'", lists:flatten(format("~p", ['Hello world'], 50))), ?assertEqual("hello_world", lists:flatten(format("~p", ['hello_world'], 50))), ?assertEqual("'node@127.0.0.1'", lists:flatten(format("~p", ['node@127.0.0.1'], 50))), ?assertEqual("node@nohost", lists:flatten(format("~p", [node@nohost], 50))), @@ -399,8 +406,11 @@ quote_strip_test() -> ok. binary_printing_test() -> + ?assertEqual("<<>>", lists:flatten(format("~p", [<<>>], 50))), + ?assertEqual("<<..>>", lists:flatten(format("~p", [<<"hi">>], 0))), ?assertEqual("<<\"hello\">>", lists:flatten(format("~p", [<<$h, $e, $l, $l, $o>>], 50))), ?assertEqual("<<\"hello\">>", lists:flatten(format("~p", [<<"hello">>], 50))), + ?assertEqual("<<104,101,108,108,111>>", lists:flatten(format("~w", [<<"hello">>], 50))), ?assertEqual("<<1,2,3,4>>", lists:flatten(format("~p", [<<1, 2, 3, 4>>], 50))), ?assertEqual([1,2,3,4], lists:flatten(format("~s", [<<1, 2, 3, 4>>], 50))), ?assertEqual("hello", lists:flatten(format("~s", [<<"hello">>], 50))), @@ -408,16 +418,33 @@ binary_printing_test() -> ok. list_printing_test() -> + ?assertEqual("[]", lists:flatten(format("~p", [[]], 50))), + ?assertEqual("[]", lists:flatten(format("~w", [[]], 50))), + ?assertEqual("", lists:flatten(format("~s", [[]], 50))), + ?assertEqual("...", lists:flatten(format("~s", [[]], -1))), + ?assertEqual("[[]]", lists:flatten(format("~p", [[[]]], 50))), ?assertEqual("[13,11,10,8,5,4]", lists:flatten(format("~p", [[13,11,10,8,5,4]], 50))), + ?assertEqual("\"\rabc\"", lists:flatten(format("~p", [[13,$a, $b, $c]], 50))), ?assertEqual("[1,2,3|4]", lists:flatten(format("~p", [[1, 2, 3|4]], 50))), + ?assertEqual("[...]", lists:flatten(format("~p", [[1, 2, 3,4]], 4))), + ?assertEqual("[1,...]", lists:flatten(format("~p", [[1, 2, 3,4]], 6))), ?assertEqual("[1|4]", lists:flatten(format("~p", [[1|4]], 50))), + ?assertEqual("[1]", lists:flatten(format("~p", [[1]], 50))), ?assertError(badarg, lists:flatten(format("~s", [[1|4]], 50))), ?assertEqual("\"hello...\"", lists:flatten(format("~p", ["hello world"], 10))), ?assertEqual("hello w...", lists:flatten(format("~s", ["hello world"], 10))), ?assertEqual("hello world\r\n", lists:flatten(format("~s", ["hello world\r\n"], 50))), ?assertEqual("\rhello world\r\n", lists:flatten(format("~s", ["\rhello world\r\n"], 50))), ?assertEqual("...", lists:flatten(format("~s", ["\rhello world\r\n"], 3))), - ?assertEqual("[]", lists:flatten(format("~s", [[]], 50))), + ok. + +tuple_printing_test() -> + ?assertEqual("{}", lists:flatten(format("~p", [{}], 50))), + ?assertEqual("{}", lists:flatten(format("~w", [{}], 50))), + ?assertError(badarg, lists:flatten(format("~s", [{}], 50))), + ?assertEqual("{...}", lists:flatten(format("~p", [{foo}], 3))), + ?assertEqual("{foo,...}", lists:flatten(format("~p", [{foo,bar}], 6))), + ?assertEqual("{foo,bar}", lists:flatten(format("~p", [{foo,bar}], 9))), ok. unicode_test() ->