summaryrefslogtreecommitdiff
path: root/src/couch_log/test/eunit/couch_log_trunc_io_fmt_test.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/couch_log/test/eunit/couch_log_trunc_io_fmt_test.erl')
-rw-r--r--src/couch_log/test/eunit/couch_log_trunc_io_fmt_test.erl92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/couch_log/test/eunit/couch_log_trunc_io_fmt_test.erl b/src/couch_log/test/eunit/couch_log_trunc_io_fmt_test.erl
new file mode 100644
index 000000000..77d555440
--- /dev/null
+++ b/src/couch_log/test/eunit/couch_log_trunc_io_fmt_test.erl
@@ -0,0 +1,92 @@
+% Licensed under the Apache License, Version 2.0 (the "License"); you may not
+% use this file except in compliance with the License. You may obtain a copy of
+% the License at
+%
+% http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+% License for the specific language governing permissions and limitations under
+% the License.
+
+-module(couch_log_trunc_io_fmt_test).
+
+
+-include_lib("eunit/include/eunit.hrl").
+
+
+format_test_() ->
+ lists:map(fun({Fmt, Args, Expect}) ->
+ Name = io_lib:format("~p", [Expect]),
+ {lists:flatten(Name),
+ ?_assertEqual(
+ Expect,
+ lists:flatten(couch_log_trunc_io_fmt:format(Fmt, Args, 1024))
+ )
+ }
+ end, cases()).
+
+
+
+chomp_test() ->
+ R1 = couch_log_trunc_io_fmt:format("\n", [], 1024, [{chomp, true}]),
+ ?assertEqual("", lists:flatten(R1)),
+ R2 = couch_log_trunc_io_fmt:format("~n", [], 1024, [{chomp, true}]),
+ ?assertEqual("", lists:flatten(R2)).
+
+
+cases() ->
+ [
+ {"", [], ""},
+ {"stuff\n\t", [], "stuff\n\t"},
+ {"~w", [foo], "foo"},
+ {"~p", [bar], "bar"},
+ {"~W", [{{{2}}}, 2], "{{...}}"},
+ {"~P", [{{{ohai}}}, 1], "{...}"},
+ {"~s", [[$s, [$t, [$u, [$f, [$f]]]]]], "stuff"},
+ {"~4s", ["stuff"], "stuf"},
+ {"~8s", ["stuff"], " stuff"},
+ {"~.8s", ["stuff"], "stuff "},
+ {"~10.4s", ["stuff"], " stuf"},
+ {"~10.6s", ["stuff"], " stuff "},
+ {"~10.5s", ["stuff"], " stuff"},
+ {"~10.10s", ["stuff"], " stuff"},
+ {"~r", [{reason, [{x, k, [c, d]}]}], "reason at x:k/2"},
+ {"~e", [1.0], "1.00000e+0"},
+ {"~f", [1.0], "1.000000"},
+ {"~f", [0.000323], "0.000323"},
+ {"~f", [31.4], "31.400000"},
+ {"~f", [-2.3], "-2.300000"},
+ {"~g", [1.0], "1.00000"},
+ {"~b", [-15], "-15"},
+ {"~b", [15], "15"},
+ {"~B", [15], "15"},
+ {"~.16b", [15], "f"},
+ {"~.16B", [15], "F"},
+ {"~.16b", [-15], "-f"},
+ {"~.16B", [-15], "-F"},
+ {"~.16x", [15, "16#"], "16#f"},
+ {"~.16x", [15, '16#'], "16#f"},
+ {"~.16x", [-15, "16#"], "-16#f"},
+ {"~.16X", [15, "16#"], "16#F"},
+ {"~.16X", [15, '16#'], "16#F"},
+ {"~.16X", [-15, "16#"], "-16#F"},
+ {"~.16#", [15], "16#F"},
+ {"~.16+", [15], "16#f"},
+ {"~c", [$z], "z"},
+ {"~tc", [$g], "g"},
+ {"~~", [], "\~"},
+ {"~n", [], "\n"},
+ {"~2n", [], "\n\n"},
+ {"~3n", [], "\n\n\n"},
+ {"~i", [ignored], ""},
+ {"~2.w", [1], " 1"},
+ {"~*w", [2, 1], " 1"},
+ {"~-2.w", [1], "1 "},
+ {"~2.0. w", [1], " "},
+ {"~2.1. w", [1], " 1"},
+ {"~2.0.|w", [1], "||"},
+ {"~2.1.|w", [1], "|1"},
+ {"~2.1.*w", [$q, 1], "q1"}
+ ].