No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 

75 líneas
2.2 KiB

-module(jiffy_16_preencode_tests).
-include_lib("eunit/include/eunit.hrl").
-include("jiffy_util.hrl").
preencode_success_test_() ->
[gen(ok, Case) || Case <- cases(ok)].
preencode_failure_test_() ->
[gen(error, Case) || Case <- cases(error)].
gen(ok, {E1, J, E2}) ->
{msg("~p", [E1]), [
{"Encode", ?_assertEqual(J, enc(E1))},
{"Decode", ?_assertEqual(E2, dec(J))}
]};
gen(ok, {E, J}) ->
{msg("~p", [E]), [
{"Encode", ?_assertEqual(J, enc(E))}
]};
gen(error, E) ->
{msg("Error: ~p", [E]), [
?_assertThrow({error, _}, enc(E))
]}.
cases(ok) ->
TopTests =
lists:map(
fun (EJSON) ->
JSON = enc(EJSON),
{{json, JSON}, JSON, EJSON}
end, [ 123
, <<"hello world">>
, true
, false
, {[ {<<"a">>, <<"apple">>}, {<<"b">>, <<"banana">>} ]}
]),
EJSON = [ 1, <<"a">> ],
JSON = enc(EJSON),
BuriedTests =
[ { [ {json, JSON} ], <<"[[1,\"a\"]]">>, [ EJSON ]}
, { [ 1, {json, JSON}, 3 ], <<"[1,[1,\"a\"],3]">>, [ 1, EJSON, 3 ]}
, { [ {json, JSON}, {json, JSON} ], <<"[[1,\"a\"],[1,\"a\"]]">>, [ EJSON, EJSON ]}
, { {[ {<<"a">>, {json, JSON}} ]}, <<"{\"a\":[1,\"a\"]}">>, {[ {<<"a">>, EJSON} ]}}
],
PartialArray = jiffy:partial_encode([ 2, 3 ], []),
PartialArrayTests =
[ {[ PartialArray ], <<"[2,3]">>}
, {[ 1, PartialArray ], <<"[1,2,3]">>}
, {[ PartialArray, 4 ], <<"[2,3,4]">>}
, {[ 1, PartialArray, 4 ], <<"[1,2,3,4]">>}
],
PartialObject = jiffy:partial_encode({[ {<<"ii">>, <<"two">>}, {<<"iii">>, 3} ]}, []),
PartialObjectTests =
[ {{[ PartialObject ]}, <<"{\"ii\":\"two\",\"iii\":3}">>}
, {{[ {<<"i">>, 1}, PartialObject ]}, <<"{\"i\":1,\"ii\":\"two\",\"iii\":3}">>}
, {{[ PartialObject, {<<"iv">>, 4} ]}, <<"{\"ii\":\"two\",\"iii\":3,\"iv\":4}">>}
, {{[ {<<"i">>, 1}, PartialObject, {<<"iv">>, 4} ]}, <<"{\"i\":1,\"ii\":\"two\",\"iii\":3,\"iv\":4}">>}
],
TopTests ++ BuriedTests ++ PartialArrayTests ++ PartialObjectTests;
cases(error) ->
[ {json, true}
, {json, "true"}
].