tweak test representation to remove 'end_json' from tests and insert in handlers to aid composability

This commit is contained in:
alisdair sullivan 2013-02-07 13:30:20 -08:00
parent 6ca54ae3d7
commit d0535dfe1c
2 changed files with 25 additions and 13 deletions

View file

@ -16,8 +16,8 @@ handle_event(end_json, State) -> lists:reverse([end_json] ++ State);
handle_event(Event, State) -> [Event] ++ State. handle_event(Event, State) -> [Event] ++ State.
empty_array() -> [{"empty array", <<"[]">>, [], [start_array, end_array, end_json]}]. empty_array() -> [{"empty array", <<"[]">>, [], [start_array, end_array]}].
empty_object() -> [{"empty object", <<"{}">>, [{}], [start_object, end_object, end_json]}]. empty_object() -> [{"empty object", <<"{}">>, [{}], [start_object, end_object]}].
naked_integers() -> naked_integers() ->
@ -34,10 +34,10 @@ naked_integers() ->
integer_to_list(X), integer_to_list(X),
list_to_binary(integer_to_list(X)), list_to_binary(integer_to_list(X)),
X, X,
[{integer, X}, end_json] [{integer, X}]
} }
|| X <- Raw ++ [ -1 * Y || Y <- Raw ] ++ [0] || X <- Raw ++ [ -1 * Y || Y <- Raw ] ++ [0]
] ++ [{"-0", <<"-0">>, 0, [{integer, 0}, end_json]}]. ] ++ [{"-0", <<"-0">>, 0, [{integer, 0}]}].
integers() -> integers() ->
[ wrap_with_array(Test) || Test <- naked_integers() ] [ wrap_with_array(Test) || Test <- naked_integers() ]
@ -50,7 +50,7 @@ naked_literals() ->
atom_to_list(Literal), atom_to_list(Literal),
atom_to_binary(Literal, unicode), atom_to_binary(Literal, unicode),
Literal, Literal,
[{literal, Literal}, end_json] [{literal, Literal}]
} }
|| Literal <- [true, false, null] || Literal <- [true, false, null]
]. ].
@ -65,7 +65,7 @@ wrap_with_array({Title, JSON, Term, Events}) ->
"[" ++ Title ++ "]", "[" ++ Title ++ "]",
<<"[", JSON/binary, "]">>, <<"[", JSON/binary, "]">>,
[Term], [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\":" ++ Title ++ "}",
<<"{\"key\":", JSON/binary, "}">>, <<"{\"key\":", JSON/binary, "}">>,
[{<<"key">>, Term}], [{<<"key">>, Term}],
[start_object, {key, <<"key">>}, strip_end(Events), end_object, end_json] [start_object, {key, <<"key">>}, Events, end_object]
}. }.
strip_end(Events) ->
[end_json|Rest] = lists:reverse(Events),
lists:reverse(Rest).

View file

@ -134,4 +134,21 @@ valid_term_test_() ->
[ {Title, ?_assertEqual(true, is_term(Term, []))} || {Title, _, Term, _} <- Data ]. [ {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. -endif.