jsx/src/jsx_tests.hrl

78 lines
1.9 KiB
Erlang
Raw Normal View History

%% data and helper functions for tests
-export([init/1, handle_event/2]).
-export([empty_array/0, empty_object/0]).
2013-02-07 06:44:36 -08:00
-export([literals/0, naked_literals/0]).
-export([integers/0, naked_integers/0]).
-include_lib("eunit/include/eunit.hrl").
%% test handler
init([]) -> [].
handle_event(end_json, State) -> lists:reverse([end_json] ++ State);
handle_event(Event, State) -> [Event] ++ State.
empty_array() -> [{"empty array", <<"[]">>, [], [start_array, end_array]}].
empty_object() -> [{"empty object", <<"{}">>, [{}], [start_object, end_object]}].
2013-02-07 06:44:36 -08:00
naked_integers() ->
Raw = [
1, 2, 3,
127, 128, 129,
255, 256, 257,
65534, 65535, 65536,
18446744073709551616,
18446744073709551617
],
[
{
integer_to_list(X),
list_to_binary(integer_to_list(X)),
X,
[{integer, X}]
2013-02-07 06:44:36 -08:00
}
|| X <- Raw ++ [ -1 * Y || Y <- Raw ] ++ [0]
] ++ [{"-0", <<"-0">>, 0, [{integer, 0}]}].
2013-02-07 06:44:36 -08:00
integers() ->
[ wrap_with_array(Test) || Test <- naked_integers() ]
++ [ wrap_with_object(Test) || Test <- naked_integers() ].
naked_literals() ->
[
{
atom_to_list(Literal),
atom_to_binary(Literal, unicode),
Literal,
[{literal, Literal}]
2013-02-07 06:44:36 -08:00
}
|| Literal <- [true, false, null]
].
literals() ->
[ wrap_with_array(Test) || Test <- naked_literals() ]
++ [ wrap_with_object(Test) || Test <- naked_literals() ].
wrap_with_array({Title, JSON, Term, Events}) ->
{
"[" ++ Title ++ "]",
<<"[", JSON/binary, "]">>,
[Term],
[start_array, Events, end_array]
2013-02-07 06:44:36 -08:00
}.
wrap_with_object({Title, JSON, Term, Events}) ->
{
"{\"key\":" ++ Title ++ "}",
<<"{\"key\":", JSON/binary, "}">>,
[{<<"key">>, Term}],
[start_object, {key, <<"key">>}, Events, end_object]
}.