From eaf19cde9cddc00c3576ae97ba1a2a77e6894e8c Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Mon, 11 Feb 2013 18:22:45 -0800 Subject: [PATCH] extend tests to decoder, encoder and parser --- src/jsx_decoder.erl | 23 +++++++++++++++++++++++ src/jsx_encoder.erl | 21 +++++++++++++++++++++ src/jsx_parser.erl | 22 ++++++++++++++++++++++ 3 files changed, 66 insertions(+) diff --git a/src/jsx_decoder.erl b/src/jsx_decoder.erl index 8355672..925a316 100644 --- a/src/jsx_decoder.erl +++ b/src/jsx_decoder.erl @@ -726,6 +726,8 @@ zero(<>, Handler, [Acc, array|Stack], Opts) -> value(Rest, handle_event(format_number(Acc), Handler, Opts), [array|Stack], Opts); zero(<>, Handler, [Acc|Stack], Opts) -> initial_decimal(Rest, Handler, [{Acc, []}|Stack], Opts); +zero(<>, Handler, [Acc|Stack], Opts) when S =:= $e; S =:= $E -> + e(Rest, Handler, [{Acc, [], []}|Stack], Opts); zero(<>, Handler, [Acc|Stack], Opts) when ?is_whitespace(S) -> maybe_done(Rest, handle_event(format_number(Acc), Handler, Opts), Stack, Opts); zero(<>, Handler, [Acc|Stack], Opts=#opts{comments=true}) -> @@ -1610,4 +1612,25 @@ to_fake_utf(N, utf8) -> <<34/utf8, 2#11110:5, W:3, 2#10:2, Z:6, 2#10:2, Y:6, 2#10:2, X:6, 34/utf8>>. +decode_test_() -> + Data = jsx:empty_array() + ++ jsx:deep_array() + ++ jsx:really_deep_array() + ++ jsx:empty_object() + ++ jsx:literals() + ++ jsx:naked_literals() + ++ jsx:integers() + ++ jsx:naked_integers() + ++ jsx:floats() + ++ jsx:naked_floats() + ++ jsx:decodeables(), + [ + { + Title, ?_assertEqual( + Events ++ [end_json], + start(JSON, {jsx, []}, [], #opts{}) + ) + } || {Title, JSON, _, Events} <- Data + ]. + -endif. \ No newline at end of file diff --git a/src/jsx_encoder.erl b/src/jsx_encoder.erl index fa722ae..4944d5b 100644 --- a/src/jsx_encoder.erl +++ b/src/jsx_encoder.erl @@ -136,4 +136,25 @@ clean_string(Bin, Opts) -> jsx_utils:clean_string(Bin, Opts). -include_lib("eunit/include/eunit.hrl"). +encode_test_() -> + Data = jsx:empty_array() + ++ jsx:deep_array() + ++ jsx:really_deep_array() + ++ jsx:empty_object() + ++ jsx:literals() + ++ jsx:naked_literals() + ++ jsx:integers() + ++ jsx:naked_integers() + ++ jsx:floats() + ++ jsx:naked_floats(), + [ + { + Title, ?_assertEqual( + Events ++ [end_json], + start(Term, {jsx, []}, #opts{}) + ) + } || {Title, _, Term, Events} <- Data + ]. + + -endif. \ No newline at end of file diff --git a/src/jsx_parser.erl b/src/jsx_parser.erl index adf8126..5d0b0b8 100644 --- a/src/jsx_parser.erl +++ b/src/jsx_parser.erl @@ -169,4 +169,26 @@ clean_string(Bin, Opts) -> jsx_utils:clean_string(Bin, Opts). -include_lib("eunit/include/eunit.hrl"). +decode_test_() -> + Data = jsx:empty_array() + ++ jsx:deep_array() + ++ jsx:really_deep_array() + ++ jsx:empty_object() + ++ jsx:literals() + ++ jsx:naked_literals() + ++ jsx:integers() + ++ jsx:naked_integers() + ++ jsx:floats() + ++ jsx:naked_floats() + ++ jsx:decodeables(), + [ + { + Title, ?_assertEqual( + Events ++ [end_json], + value(Events ++ [end_json], {jsx, []}, [], #opts{}) + ) + } || {Title, _, _, Events} <- Data + ]. + + -endif. \ No newline at end of file