anchor.diff:      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() ->
  
positive.code:     {[$|,List], Len + 1}.
  
  list_bodyc([], _Max, _Options, _Tuple) -> {[], 0};
  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),
  
negative.code:     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))),
  