From d0535dfe1c27afff8976178ceff6f97281187bf5 Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Thu, 7 Feb 2013 13:30:20 -0800 Subject: [PATCH] tweak test representation to remove 'end_json' from tests and insert in handlers to aid composability --- src/jsx_tests.hrl | 21 ++++++++------------- src/jsx_verify.erl | 17 +++++++++++++++++ 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/jsx_tests.hrl b/src/jsx_tests.hrl index 3a90765..7114b58 100644 --- a/src/jsx_tests.hrl +++ b/src/jsx_tests.hrl @@ -16,8 +16,8 @@ handle_event(end_json, State) -> lists:reverse([end_json] ++ State); handle_event(Event, State) -> [Event] ++ State. -empty_array() -> [{"empty array", <<"[]">>, [], [start_array, end_array, end_json]}]. -empty_object() -> [{"empty object", <<"{}">>, [{}], [start_object, end_object, end_json]}]. +empty_array() -> [{"empty array", <<"[]">>, [], [start_array, end_array]}]. +empty_object() -> [{"empty object", <<"{}">>, [{}], [start_object, end_object]}]. naked_integers() -> @@ -34,10 +34,10 @@ naked_integers() -> integer_to_list(X), list_to_binary(integer_to_list(X)), X, - [{integer, X}, end_json] + [{integer, X}] } || X <- Raw ++ [ -1 * Y || Y <- Raw ] ++ [0] - ] ++ [{"-0", <<"-0">>, 0, [{integer, 0}, end_json]}]. + ] ++ [{"-0", <<"-0">>, 0, [{integer, 0}]}]. integers() -> [ wrap_with_array(Test) || Test <- naked_integers() ] @@ -50,7 +50,7 @@ naked_literals() -> atom_to_list(Literal), atom_to_binary(Literal, unicode), Literal, - [{literal, Literal}, end_json] + [{literal, Literal}] } || Literal <- [true, false, null] ]. @@ -65,7 +65,7 @@ wrap_with_array({Title, JSON, Term, Events}) -> "[" ++ Title ++ "]", <<"[", JSON/binary, "]">>, [Term], - [start_array, strip_end(Events), end_array, end_json] + [start_array, Events, end_array] }. @@ -74,10 +74,5 @@ wrap_with_object({Title, JSON, Term, Events}) -> "{\"key\":" ++ Title ++ "}", <<"{\"key\":", JSON/binary, "}">>, [{<<"key">>, Term}], - [start_object, {key, <<"key">>}, strip_end(Events), end_object, end_json] - }. - - -strip_end(Events) -> - [end_json|Rest] = lists:reverse(Events), - lists:reverse(Rest). \ No newline at end of file + [start_object, {key, <<"key">>}, Events, end_object] + }. \ No newline at end of file diff --git a/src/jsx_verify.erl b/src/jsx_verify.erl index a38c73f..eec1519 100644 --- a/src/jsx_verify.erl +++ b/src/jsx_verify.erl @@ -134,4 +134,21 @@ valid_term_test_() -> [ {Title, ?_assertEqual(true, is_term(Term, []))} || {Title, _, Term, _} <- Data ]. +handle_event_test_() -> + Data = jsx:empty_array() + ++ jsx:empty_object() + ++ jsx:literals() + ++ jsx:naked_literals() + ++ jsx:integers() + ++ jsx:naked_integers(), + [ + { + Title, ?_assertEqual( + true, + lists:foldl(fun handle_event/2, {#opts{}, []}, Events ++ [end_json]) + ) + } || {Title, _, _, Events} <- Data + ]. + + -endif. \ No newline at end of file