From 82b7044d42c3369a3adaec85be6f2086e328906e Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Sun, 24 Feb 2013 02:28:33 -0800 Subject: [PATCH] unescape tests for decoder --- src/jsx_decoder.erl | 53 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/src/jsx_decoder.erl b/src/jsx_decoder.erl index 53b7b1a..124b205 100644 --- a/src/jsx_decoder.erl +++ b/src/jsx_decoder.erl @@ -1566,6 +1566,59 @@ bad_utf8_test_() -> ]. +unescape(Bin, Config) -> + [{string, String}, end_json] = decode(<<34, Bin/binary, 34>>, Config), + String. + +unescape_test_() -> + [ + {"unescape backspace", ?_assertEqual( + <<"\b">>, + unescape(<<"\\b"/utf8>>, []) + )}, + {"unescape tab", ?_assertEqual( + <<"\t">>, + unescape(<<"\\t"/utf8>>, []) + )}, + {"unescape newline", ?_assertEqual( + <<"\n">>, + unescape(<<"\\n"/utf8>>, []) + )}, + {"unescape formfeed", ?_assertEqual( + <<"\f">>, + unescape(<<"\\f"/utf8>>, []) + )}, + {"unescape carriage return", ?_assertEqual( + <<"\r">>, + unescape(<<"\\r"/utf8>>, []) + )}, + {"unescape quote", ?_assertEqual( + <<"\"">>, + unescape(<<"\\\""/utf8>>, []) + )}, + {"unescape single quote", ?_assertEqual( + <<"'">>, + unescape(<<"\\'"/utf8>>, [single_quoted_strings]) + )}, + {"unescape solidus", ?_assertEqual( + <<"/">>, + unescape(<<"\\/"/utf8>>, []) + )}, + {"unescape reverse solidus", ?_assertEqual( + <<"\\">>, + unescape(<<"\\\\"/utf8>>, []) + )}, + {"unescape control", ?_assertEqual( + <<0>>, + unescape(<<"\\u0000"/utf8>>, []) + )}, + {"unescape surrogate pair", ?_assertEqual( + <<16#10000/utf8>>, + unescape(<<"\\ud800\\udc00"/utf8>>, []) + )} + ]. + + maybe_escape(Bin, Config) -> [{string, String}, end_json] = decode(Bin, Config), String.