From 5814e29cdbe370a417d654dbd18620849aa00a09 Mon Sep 17 00:00:00 2001 From: ZyX Date: Wed, 3 Feb 2016 21:46:01 +0300 Subject: eval/decode: Fix surrogate pairs processing --- test/functional/eval/json_functions_spec.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'test') diff --git a/test/functional/eval/json_functions_spec.lua b/test/functional/eval/json_functions_spec.lua index 9167cb2fef..651f6c27b3 100644 --- a/test/functional/eval/json_functions_spec.lua +++ b/test/functional/eval/json_functions_spec.lua @@ -297,6 +297,24 @@ describe('jsondecode() function', function() -- '"\xF9\x80\x80\x80\x80"', -- '"\xFC\x90\x80\x80\x80\x80"', end) + + it('parses surrogate pairs properly', function() + eq('\xF0\x90\x80\x80', funcs.jsondecode('"\\uD800\\uDC00"')) + eq('\xED\xA0\x80a\xED\xB0\x80', funcs.jsondecode('"\\uD800a\\uDC00"')) + eq('\xED\xA0\x80\t\xED\xB0\x80', funcs.jsondecode('"\\uD800\\t\\uDC00"')) + + eq('\xED\xA0\x80', funcs.jsondecode('"\\uD800"')) + eq('\xED\xA0\x80a', funcs.jsondecode('"\\uD800a"')) + eq('\xED\xA0\x80\t', funcs.jsondecode('"\\uD800\\t"')) + + eq('\xED\xB0\x80', funcs.jsondecode('"\\uDC00"')) + eq('\xED\xB0\x80a', funcs.jsondecode('"\\uDC00a"')) + eq('\xED\xB0\x80\t', funcs.jsondecode('"\\uDC00\\t"')) + + eq('\xED\xB0\x80', funcs.jsondecode('"\\uDC00"')) + eq('a\xED\xB0\x80', funcs.jsondecode('"a\\uDC00"')) + eq('\t\xED\xB0\x80', funcs.jsondecode('"\\t\\uDC00"')) + end) end) describe('jsonencode() function', function() -- cgit