From 55f1f183669f82fbd09e6d2ffa7cec4a73b941df Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Wed, 11 Aug 2010 19:27:33 -0700 Subject: [PATCH] tests working, finally --- rebar.config | 4 +++- src/jsx_test.erl | 24 ++++++++++++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/rebar.config b/rebar.config index fd69bc7..0aac6f7 100644 --- a/rebar.config +++ b/rebar.config @@ -1,4 +1,6 @@ -{eunit_compile_opts, [{d, test}]}. +%% edit eunit_test_path if you want to run your own tests, use "../" not "./" as +%% rebar changes to working dir to .eunit when running tests +{eunit_compile_opts, [{d, test}, {d, eunit_test_path, "../test/cases"}]}. %% uncomment to get verbose output from test suite {eunit_opts, [verbose]}. diff --git a/src/jsx_test.erl b/src/jsx_test.erl index 7386c57..74d41d1 100644 --- a/src/jsx_test.erl +++ b/src/jsx_test.erl @@ -42,24 +42,28 @@ test() -> erlang:error(notest). -else. jsx_decoder_test_() -> - jsx_decoder_gen(load_tests("./test/cases"), [utf8, utf16, {utf16, little}, utf32, {utf32, little}], fun decode/2). + jsx_decoder_gen(load_tests(?eunit_test_path)). -jsx_incremental_test_() -> - jsx_decoder_gen(load_tests("./test/cases"), [utf8, utf16, {utf16, little}, utf32, {utf32, little}], fun incremental_decode/2). - -jsx_decoder_gen([_Test|Rest], [], F) -> - jsx_decoder_gen(Rest, [utf8, utf16, {utf16, little}, utf32, {utf32, little}], F); -jsx_decoder_gen([], _, _) -> - []; -jsx_decoder_gen([Test|_] = Tests, [Encoding|Encodings], F) -> +jsx_decoder_gen([]) -> []; +jsx_decoder_gen(Tests) -> jsx_decoder_gen(Tests, [utf8, utf16, {utf16, little}, utf32, {utf32, little}]). + +jsx_decoder_gen([_Test|Rest], []) -> + jsx_decoder_gen(Rest); +jsx_decoder_gen([Test|_] = Tests, [Encoding|Encodings]) -> Name = lists:flatten(proplists:get_value(name, Test) ++ " :: " ++ io_lib:format("~p", [Encoding])), JSON = unicode:characters_to_binary(proplists:get_value(json, Test), unicode, Encoding), JSX = proplists:get_value(jsx, Test), Flags = proplists:get_value(jsx_flags, Test, []), {generator, fun() -> - [{Name, ?_assert(F(JSON, Flags) =:= JSX)} | jsx_decoder_gen(Tests, Encodings, F)] + [{Name, ?_assert(decode(JSON, Flags) =:= JSX)} + | {generator, + fun() -> [{Name ++ " incremental", ?_assert(incremental_decode(JSON, Flags) =:= JSX)} + | jsx_decoder_gen(Tests, Encodings)] + end + } + ] end }.