new test for read_file/1, /2

This commit is contained in:
alisdair sullivan 2011-02-07 23:43:15 -08:00
parent c4a2545db3
commit 8ed4b1a405

View file

@ -547,21 +547,33 @@ jsx_decoder_test_() ->
jsx_decoder_gen([]) -> []; jsx_decoder_gen([]) -> [];
jsx_decoder_gen(Tests) -> jsx_decoder_gen(Tests, [utf8, utf16, {utf16, little}, utf32, {utf32, little}]). jsx_decoder_gen(Tests) ->
jsx_decoder_gen(Tests, [utf8,
utf16,
{utf16, little},
utf32,
{utf32, little}
]).
jsx_decoder_gen([_Test|Rest], []) -> jsx_decoder_gen([_Test|Rest], []) ->
jsx_decoder_gen(Rest); jsx_decoder_gen(Rest);
jsx_decoder_gen([Test|_] = Tests, [Encoding|Encodings]) -> jsx_decoder_gen([Test|_] = Tests, [Encoding|Encodings]) ->
Name = lists:flatten(proplists:get_value(name, Test) ++ " :: " ++ io_lib:format("~p", [Encoding])), Name = lists:flatten(proplists:get_value(name, Test) ++ " :: " ++
JSON = unicode:characters_to_binary(proplists:get_value(json, Test), unicode, Encoding), io_lib:format("~p", [Encoding])
),
JSON = unicode:characters_to_binary(proplists:get_value(json, Test),
unicode,
Encoding
),
JSX = proplists:get_value(jsx, Test), JSX = proplists:get_value(jsx, Test),
Flags = proplists:get_value(jsx_flags, Test, []), Flags = proplists:get_value(jsx_flags, Test, []),
{generator, {generator,
fun() -> fun() ->
[{Name, ?_assert(decode(JSON, Flags) =:= JSX)} [{Name, ?_assert(decode(JSON, Flags) =:= JSX)}
| {generator, | {generator,
fun() -> [{Name ++ " incremental", ?_assert(incremental_decode(JSON, Flags) =:= JSX)} fun() -> [{Name ++ " incremental", ?_assert(
| jsx_decoder_gen(Tests, Encodings)] incremental_decode(JSON, Flags) =:= JSX)
} | jsx_decoder_gen(Tests, Encodings)]
end end
} }
] ]
@ -577,7 +589,8 @@ load_tests(Path) ->
load_tests([], _Dir, Acc) -> load_tests([], _Dir, Acc) ->
lists:reverse(Acc); lists:reverse(Acc);
load_tests([Test|Rest], Dir, Acc) -> load_tests([Test|Rest], Dir, Acc) ->
%% should alert about badly formed tests eventually, but for now just skip over them %% should alert about badly formed tests eventually, but for now just skip
%% over them
case file:consult(Dir ++ "/" ++ Test) of case file:consult(Dir ++ "/" ++ Test) of
{ok, TestSpec} -> {ok, TestSpec} ->
try try
@ -633,7 +646,9 @@ incremental_decode_loop({event, Event, Next}, Rest, Acc) ->
multi_decode_test_() -> multi_decode_test_() ->
[ [
{"multiple values in a single stream", ?_assert(multi_decode(multi_json_body(), []) =:= multi_test_result())} {"multiple values in a single stream", ?_assert(
multi_decode(multi_json_body(), []) =:= multi_test_result()
)}
]. ].
@ -669,4 +684,13 @@ multi_test_result() ->
[{string, "hope this works"}] [{string, "hope this works"}]
]. ].
read_file_test_() ->
{setup,
fun() -> ok = file:write_file("test.json", <<"{}"/utf8>>) end,
fun(_) -> ok = file:delete("test.json") end,
[{"read a json binary off a file on disk", ?_assert(
read_file("test.json") =:= [{}]
)}]}.
-endif. -endif.