aboutsummaryrefslogtreecommitdiff
path: root/test/functional/eval/json_functions_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/eval/json_functions_spec.lua')
-rw-r--r--test/functional/eval/json_functions_spec.lua38
1 files changed, 9 insertions, 29 deletions
diff --git a/test/functional/eval/json_functions_spec.lua b/test/functional/eval/json_functions_spec.lua
index b32688a9d2..fc0a19bdfa 100644
--- a/test/functional/eval/json_functions_spec.lua
+++ b/test/functional/eval/json_functions_spec.lua
@@ -1,4 +1,4 @@
-local helpers = require('test.functional.helpers')
+local helpers = require('test.functional.helpers')(after_each)
local clear = helpers.clear
local funcs = helpers.funcs
local meths = helpers.meths
@@ -10,8 +10,8 @@ local redir_exec = helpers.redir_exec
local NIL = helpers.NIL
describe('json_decode() function', function()
- local restart = function(cmd)
- clear(cmd)
+ local restart = function(...)
+ clear(...)
execute('language C')
execute([[
function Eq(exp, act)
@@ -489,18 +489,6 @@ describe('json_decode() function', function()
'{"b": 3, "a": 1, "c": 4, "d": 2, "\\u0000": 4}')
end)
- it('converts strings to latin1 when &encoding is latin1', function()
- restart('set encoding=latin1')
- eq('\171', funcs.json_decode('"\\u00AB"'))
- sp_decode_eq({_TYPE='string', _VAL={'\n\171\n'}}, '"\\u0000\\u00AB\\u0000"')
- end)
-
- it('fails to convert string to latin1 if it is impossible', function()
- restart('set encoding=latin1')
- eq('Vim(call):E474: Failed to convert string "ꯍ" from UTF-8',
- exc_exec('call json_decode(\'"\\uABCD"\')'))
- end)
-
it('parses U+00C3 correctly', function()
eq('\195\131', funcs.json_decode('"\195\131"'))
end)
@@ -528,14 +516,6 @@ describe('json_decode() function', function()
eq({key={'val', 'val2'}, key2=1}, funcs.json_decode(str))
end)
- it('always treats input as UTF-8', function()
- -- When &encoding is latin1 string "«" is U+00C2 U+00AB U+00C2: «Â. So if
- -- '"«"' was parsed as latin1 json_decode would return three characters, and
- -- only one U+00AB when this string is parsed as latin1.
- restart('set encoding=latin1')
- eq(('%c'):format(0xAB), funcs.json_decode('"«"'))
- end)
-
it('does not overflow when writing error message about decoding ["", ""]',
function()
eq('\nE474: Attempt to decode a blank string'
@@ -692,6 +672,12 @@ describe('json_encode() function', function()
exc_exec('call json_encode(function("tr"))'))
end)
+ it('fails to dump a partial', function()
+ execute('function T() dict\nendfunction')
+ eq('Vim(call):E474: Error while dumping encode_tv2json() argument, itself: attempt to dump function reference',
+ exc_exec('call json_encode(function("T", [1, 2], {}))'))
+ end)
+
it('fails to dump a function reference in a list', function()
eq('Vim(call):E474: Error while dumping encode_tv2json() argument, index 0: attempt to dump function reference',
exc_exec('call json_encode([function("tr")])'))
@@ -762,12 +748,6 @@ describe('json_encode() function', function()
exc_exec('call json_encode(["", ""], 1)'))
end)
- it('converts strings from latin1 when &encoding is latin1', function()
- clear('set encoding=latin1')
- eq('"\\u00AB"', funcs.json_encode('\171'))
- eq('"\\u0000\\u00AB\\u0000"', eval('json_encode({"_TYPE": v:msgpack_types.string, "_VAL": ["\\n\171\\n"]})'))
- end)
-
it('ignores improper values in &isprint', function()
meths.set_option('isprint', '1')
eq(1, eval('"\1" =~# "\\\\p"'))