From 24a3e1c0179756c9981c943e34248392ddce789d Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Mon, 4 Mar 2013 14:43:56 -0800 Subject: [PATCH 1/4] add test for badly formed unicode escape sequence --- src/jsx_decoder.erl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/jsx_decoder.erl b/src/jsx_decoder.erl index 2636230..7ed0cbb 100644 --- a/src/jsx_decoder.erl +++ b/src/jsx_decoder.erl @@ -1608,6 +1608,10 @@ unescape_test_() -> {"do not unescape bad surrogate pair", ?_assertError( badarg, unescape(<<"\\ud800\\u0000">>, []) + )}, + {"bad pseudo escape sequence", ?_assertError( + badarg, + unescape(<<"\\uabcg">>, []) )} ]. From 2f26f2e3e816d1642c19bbdeff01de71e369e789 Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Mon, 4 Mar 2013 14:45:08 -0800 Subject: [PATCH 2/4] more accurate reporting of failed tests --- src/jsx_decoder.erl | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/jsx_decoder.erl b/src/jsx_decoder.erl index 7ed0cbb..5284efb 100644 --- a/src/jsx_decoder.erl +++ b/src/jsx_decoder.erl @@ -954,10 +954,8 @@ decode(JSON, Config) -> catch error:badarg -> {error, badarg} end, - case Chunk == Incremental of - true -> Chunk; - _ -> erlang:error(badarg) - end. + Chunk == Incremental, + Chunk. decode_test_() -> From f2dc42b7c9e26f0e219036961f13ab477e3c2610 Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Mon, 4 Mar 2013 14:51:05 -0800 Subject: [PATCH 3/4] add test for number terminated by comma in object --- src/jsx_decoder.erl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/jsx_decoder.erl b/src/jsx_decoder.erl index 5284efb..d398819 100644 --- a/src/jsx_decoder.erl +++ b/src/jsx_decoder.erl @@ -1000,6 +1000,14 @@ special_number_test_() -> {"number terminated by whitespace", ?_assertEqual( [start_array, {integer, 1}, end_array, end_json], decode(<<"[ 1 ]">>, []) + )}, + {"number terminated by comma", ?_assertEqual( + [start_array, {integer, 1}, {integer, 1}, end_array, end_json], + decode(<<"[ 1, 1 ]">>, []) + )}, + {"number terminated by comma in object", ?_assertEqual( + [start_object, {key, <<"x">>}, {integer, 1}, {key, <<"y">>}, {integer, 1}, end_object, end_json], + decode(<<"{\"x\": 1, \"y\": 1}">>, []) )} ]. From 05739c7e8d01d5b52cc302c6a339865d02a97099 Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Mon, 4 Mar 2013 14:51:51 -0800 Subject: [PATCH 4/4] suppress compiler warning about unused assert --- src/jsx_decoder.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jsx_decoder.erl b/src/jsx_decoder.erl index d398819..53d5652 100644 --- a/src/jsx_decoder.erl +++ b/src/jsx_decoder.erl @@ -954,7 +954,7 @@ decode(JSON, Config) -> catch error:badarg -> {error, badarg} end, - Chunk == Incremental, + ?assert(Chunk == Incremental), Chunk.