diff --git a/test/cases/array.json b/test/cases/array.json index 836ecbe..ee1041c 100644 --- a/test/cases/array.json +++ b/test/cases/array.json @@ -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]] diff --git a/test/jsx_test.erl b/test/jsx_test.erl index d0cce15..f9d0856 100644 --- a/test/jsx_test.erl +++ b/test/jsx_test.erl @@ -26,22 +26,33 @@ test_body(TestSpec, Dir) -> case file:consult(Dir ++ "/" ++ TestSpec) of {ok, [Events]} -> Decoder = jsx:decoder(), + [{TestName, ?_assertEqual(incremental_decode(Decoder, JSON), Events)}] ++ [{TestName, ?_assertEqual(decode(Decoder, JSON), Events)}] ; {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)}] end catch _:_ -> [] end. -decode(F, <<>>) -> - {Result, _} = F(<<16#FDEF/utf8>>), +incremental_decode(F, <<>>) -> + {Result, _} = F(<<>>), Result; -decode(F, <>) -> +incremental_decode(F, <>) -> case F(<>) of G when is_function(G) -> decode(G, Rest) ; {Result, _} -> Result end. + +decode(F, JSON) -> + case F(JSON) of + G when is_function(G) -> + {Result, <<>>} = G(<<>>), + Result + ; {Result, _} -> + Result + end. \ No newline at end of file