updated test suite to match new decoder

This commit is contained in:
alisdair sullivan 2010-05-25 21:04:11 -07:00
parent 1e476f1797
commit 550f628564
2 changed files with 16 additions and 5 deletions

View file

@ -1 +1 @@
["foo","bar", "baz",[true],[false],[null],true, false, null, 0.7, {"key":"value"},[{}, null,null,null,[]],"\n\r\\", [-1]] g ["foo","bar", "baz",[true],[false],[null],true, false, null, 0.7, {"key":"value"},[{}, null,null,null,[]],"\n\r\\", [-1]]

View file

@ -26,22 +26,33 @@ test_body(TestSpec, Dir) ->
case file:consult(Dir ++ "/" ++ TestSpec) of case file:consult(Dir ++ "/" ++ TestSpec) of
{ok, [Events]} -> {ok, [Events]} ->
Decoder = jsx:decoder(), Decoder = jsx:decoder(),
[{TestName, ?_assertEqual(incremental_decode(Decoder, JSON), Events)}] ++
[{TestName, ?_assertEqual(decode(Decoder, JSON), Events)}] [{TestName, ?_assertEqual(decode(Decoder, JSON), Events)}]
; {ok, [Events, Flags]} -> ; {ok, [Events, Flags]} ->
Decoder = jsx:decoder(none, Flags), Decoder = jsx:decoder({none, []}, Flags),
[{TestName, ?_assertEqual(incremental_decode(Decoder, JSON), Events)}] ++
[{TestName, ?_assertEqual(decode(Decoder, JSON), Events)}] [{TestName, ?_assertEqual(decode(Decoder, JSON), Events)}]
end end
catch _:_ -> [] catch _:_ -> []
end. end.
decode(F, <<>>) -> incremental_decode(F, <<>>) ->
{Result, _} = F(<<16#FDEF/utf8>>), {Result, _} = F(<<>>),
Result; Result;
decode(F, <<A/utf8, Rest/binary>>) -> incremental_decode(F, <<A/utf8, Rest/binary>>) ->
case F(<<A/utf8>>) of case F(<<A/utf8>>) of
G when is_function(G) -> G when is_function(G) ->
decode(G, Rest) decode(G, Rest)
; {Result, _} -> ; {Result, _} ->
Result Result
end. end.
decode(F, JSON) ->
case F(JSON) of
G when is_function(G) ->
{Result, <<>>} = G(<<>>),
Result
; {Result, _} ->
Result
end.