From b153ce3685de61414361b65ea2f86495bfc749e3 Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Tue, 26 Jul 2011 19:58:48 -0700 Subject: [PATCH] moves escaping tests to general test lib, minor refactoring of test runner to facilitate --- src/jsx.erl | 28 +++--------------------- test/cases/deep_array.test | 2 +- test/cases/escaped_noncharacter.json | 1 + test/cases/escaped_noncharacter.test | 3 +++ test/cases/escaped_noncharacter_ext.json | 1 + test/cases/escaped_noncharacter_ext.test | 3 +++ test/cases/escaped_reserved_a.json | 1 + test/cases/escaped_reserved_a.test | 3 +++ test/cases/escaped_reserved_b.json | 1 + test/cases/escaped_reserved_b.test | 3 +++ test/cases/nullbyte_forbidden.json | 1 + test/cases/nullbyte_forbidden.test | 3 +++ test/cases/unbalanced_array.json | 1 + test/cases/unbalanced_array.test | 3 +++ 14 files changed, 28 insertions(+), 26 deletions(-) create mode 100644 test/cases/escaped_noncharacter.json create mode 100644 test/cases/escaped_noncharacter.test create mode 100644 test/cases/escaped_noncharacter_ext.json create mode 100644 test/cases/escaped_noncharacter_ext.test create mode 100644 test/cases/escaped_reserved_a.json create mode 100644 test/cases/escaped_reserved_a.test create mode 100644 test/cases/escaped_reserved_b.json create mode 100644 test/cases/escaped_reserved_b.test create mode 100644 test/cases/nullbyte_forbidden.json create mode 100644 test/cases/nullbyte_forbidden.test create mode 100644 test/cases/unbalanced_array.json create mode 100644 test/cases/unbalanced_array.test diff --git a/src/jsx.erl b/src/jsx.erl index 58ada1b..5d591d0 100644 --- a/src/jsx.erl +++ b/src/jsx.erl @@ -248,33 +248,11 @@ incremental_decode_loop({jsx, incomplete, Next}, <>, Ac incremental_decode_loop({jsx, end_json, _Next}, _Rest, Acc) -> lists:reverse([end_json] ++ Acc); incremental_decode_loop({jsx, Event, Next}, Rest, Acc) -> - incremental_decode_loop(Next(), Rest, [Event] ++ Acc). + incremental_decode_loop(Next(), Rest, [Event] ++ Acc); +incremental_decode_loop({error, {badjson, _Error}}, _Rest, _Acc) -> + {error, badjson}. -bad_escapes_test_() -> - [ - {"null byte", - ?_assertEqual({error, badjson}, decode(<<"\"\\u0000\"">>, [])) - }, - {"escaped noncharacter", - ?_assertEqual({error, badjson}, decode(<<"\"\\ud83f\\udfff\"">>, [])) - }, - {"noncharacter", - ?_assertEqual({error, badjson}, decode(<<"\"\\uffff\"">>, [])) - }, - {"more noncharacters", - ?_assertEqual({error, badjson}, decode(<<"\"\\ufdd0\"">>, [])) - }, - {"last noncharacter", - ?_assertEqual({error, badjson}, decode(<<"\"\\ufdef\"">>, [])) - }, - {"ok character", - ?_assertEqual([{string, <<239, 183, 176>>}, end_json], - decode(<<"\"\\ufdf0\"">>, []) - ) - } - ]. - multi_decode_test_() -> [ diff --git a/test/cases/deep_array.test b/test/cases/deep_array.test index 1933fac..35ef9b9 100644 --- a/test/cases/deep_array.test +++ b/test/cases/deep_array.test @@ -1,3 +1,3 @@ -{name, "deep_array"}. +{name, "deep array"}. {jsx, [start_array,start_array,start_array,end_array,end_array,end_array,end_json]}. {json, "deep_array.json"}. diff --git a/test/cases/escaped_noncharacter.json b/test/cases/escaped_noncharacter.json new file mode 100644 index 0000000..e5c1b65 --- /dev/null +++ b/test/cases/escaped_noncharacter.json @@ -0,0 +1 @@ +"\uffff" \ No newline at end of file diff --git a/test/cases/escaped_noncharacter.test b/test/cases/escaped_noncharacter.test new file mode 100644 index 0000000..4e20bc3 --- /dev/null +++ b/test/cases/escaped_noncharacter.test @@ -0,0 +1,3 @@ +{name, "escaped noncharacter"}. +{jsx, {error, badjson}}. +{json, "escaped_noncharacter.json"}. \ No newline at end of file diff --git a/test/cases/escaped_noncharacter_ext.json b/test/cases/escaped_noncharacter_ext.json new file mode 100644 index 0000000..f10ec2b --- /dev/null +++ b/test/cases/escaped_noncharacter_ext.json @@ -0,0 +1 @@ +"\ud83f\udfff" \ No newline at end of file diff --git a/test/cases/escaped_noncharacter_ext.test b/test/cases/escaped_noncharacter_ext.test new file mode 100644 index 0000000..7049148 --- /dev/null +++ b/test/cases/escaped_noncharacter_ext.test @@ -0,0 +1,3 @@ +{name, "escaped noncharacter (extended)"}. +{jsx, {error, badjson}}. +{json, "escaped_noncharacter_ext.json"}. \ No newline at end of file diff --git a/test/cases/escaped_reserved_a.json b/test/cases/escaped_reserved_a.json new file mode 100644 index 0000000..dab850b --- /dev/null +++ b/test/cases/escaped_reserved_a.json @@ -0,0 +1 @@ +"\ufdd0" \ No newline at end of file diff --git a/test/cases/escaped_reserved_a.test b/test/cases/escaped_reserved_a.test new file mode 100644 index 0000000..8a5cba2 --- /dev/null +++ b/test/cases/escaped_reserved_a.test @@ -0,0 +1,3 @@ +{name, "escaped reserved a"}. +{jsx, {error, badjson}}. +{json, "escaped_reserved_a.json"}. \ No newline at end of file diff --git a/test/cases/escaped_reserved_b.json b/test/cases/escaped_reserved_b.json new file mode 100644 index 0000000..be11b6e --- /dev/null +++ b/test/cases/escaped_reserved_b.json @@ -0,0 +1 @@ +"\ufdef" \ No newline at end of file diff --git a/test/cases/escaped_reserved_b.test b/test/cases/escaped_reserved_b.test new file mode 100644 index 0000000..414f024 --- /dev/null +++ b/test/cases/escaped_reserved_b.test @@ -0,0 +1,3 @@ +{name, "escaped reserved b"}. +{jsx, {error, badjson}}. +{json, "escaped_reserved_b.json"}. \ No newline at end of file diff --git a/test/cases/nullbyte_forbidden.json b/test/cases/nullbyte_forbidden.json new file mode 100644 index 0000000..ed6780d --- /dev/null +++ b/test/cases/nullbyte_forbidden.json @@ -0,0 +1 @@ +"\u0000" \ No newline at end of file diff --git a/test/cases/nullbyte_forbidden.test b/test/cases/nullbyte_forbidden.test new file mode 100644 index 0000000..2feb2f2 --- /dev/null +++ b/test/cases/nullbyte_forbidden.test @@ -0,0 +1,3 @@ +{name, "nullbyte forbidden"}. +{jsx, {error, badjson}}. +{json, "nullbyte_forbidden.json"}. \ No newline at end of file diff --git a/test/cases/unbalanced_array.json b/test/cases/unbalanced_array.json new file mode 100644 index 0000000..7f3fb61 --- /dev/null +++ b/test/cases/unbalanced_array.json @@ -0,0 +1 @@ +[[[[]]] \ No newline at end of file diff --git a/test/cases/unbalanced_array.test b/test/cases/unbalanced_array.test new file mode 100644 index 0000000..c271c0d --- /dev/null +++ b/test/cases/unbalanced_array.test @@ -0,0 +1,3 @@ +{name, "unbalanced array"}. +{jsx, {error, badjson}}. +{json, "unbalanced_array.json"}.