diff options
Diffstat (limited to 'test/functional/vimscript/json_functions_spec.lua')
-rw-r--r-- | test/functional/vimscript/json_functions_spec.lua | 184 |
1 files changed, 92 insertions, 92 deletions
diff --git a/test/functional/vimscript/json_functions_spec.lua b/test/functional/vimscript/json_functions_spec.lua index 8f54cce444..ef0359263e 100644 --- a/test/functional/vimscript/json_functions_spec.lua +++ b/test/functional/vimscript/json_functions_spec.lua @@ -1,7 +1,7 @@ local helpers = require('test.functional.helpers')(after_each) local clear = helpers.clear -local funcs = helpers.funcs -local meths = helpers.meths +local fn = helpers.fn +local api = helpers.api local eq = helpers.eq local eval = helpers.eval local command = helpers.command @@ -59,13 +59,13 @@ describe('json_decode() function', function() before_each(restart) local speq = function(expected, actual_expr) - eq(1, funcs.EvalEq(expected, actual_expr)) + eq(1, fn.EvalEq(expected, actual_expr)) end it('accepts readfile()-style list', function() eq( { Test = 1 }, - funcs.json_decode({ + fn.json_decode({ '{', '\t"Test": 1', '}', @@ -76,7 +76,7 @@ describe('json_decode() function', function() it('accepts strings with newlines', function() eq( { Test = 1 }, - funcs.json_decode([[ + fn.json_decode([[ { "Test": 1 } @@ -85,9 +85,9 @@ describe('json_decode() function', function() end) it('parses null, true, false', function() - eq(NIL, funcs.json_decode('null')) - eq(true, funcs.json_decode('true')) - eq(false, funcs.json_decode('false')) + eq(NIL, fn.json_decode('null')) + eq(true, fn.json_decode('true')) + eq(false, fn.json_decode('false')) end) it('fails to parse incomplete null, true, false', function() @@ -109,12 +109,12 @@ describe('json_decode() function', function() end) it('parses integer numbers', function() - eq(100000, funcs.json_decode('100000')) - eq(-100000, funcs.json_decode('-100000')) - eq(100000, funcs.json_decode(' 100000 ')) - eq(-100000, funcs.json_decode(' -100000 ')) - eq(0, funcs.json_decode('0')) - eq(0, funcs.json_decode('-0')) + eq(100000, fn.json_decode('100000')) + eq(-100000, fn.json_decode('-100000')) + eq(100000, fn.json_decode(' 100000 ')) + eq(-100000, fn.json_decode(' -100000 ')) + eq(0, fn.json_decode('0')) + eq(0, fn.json_decode('-0')) end) it('fails to parse +numbers and .number', function() @@ -158,35 +158,35 @@ describe('json_decode() function', function() it('parses floating-point numbers', function() -- Also test method call (->) syntax eq('100000.0', eval('"100000.0"->json_decode()->string()')) - eq(100000.5, funcs.json_decode('100000.5')) - eq(-100000.5, funcs.json_decode('-100000.5')) - eq(-100000.5e50, funcs.json_decode('-100000.5e50')) - eq(100000.5e50, funcs.json_decode('100000.5e50')) - eq(100000.5e50, funcs.json_decode('100000.5e+50')) - eq(-100000.5e-50, funcs.json_decode('-100000.5e-50')) - eq(100000.5e-50, funcs.json_decode('100000.5e-50')) - eq(100000e-50, funcs.json_decode('100000e-50')) - eq(0.5, funcs.json_decode('0.5')) - eq(0.005, funcs.json_decode('0.005')) - eq(0.005, funcs.json_decode('0.00500')) - eq(0.5, funcs.json_decode('0.00500e+002')) - eq(0.00005, funcs.json_decode('0.00500e-002')) - - eq(-0.0, funcs.json_decode('-0.0')) - eq(-0.0, funcs.json_decode('-0.0e0')) - eq(-0.0, funcs.json_decode('-0.0e+0')) - eq(-0.0, funcs.json_decode('-0.0e-0')) - eq(-0.0, funcs.json_decode('-0e-0')) - eq(-0.0, funcs.json_decode('-0e-2')) - eq(-0.0, funcs.json_decode('-0e+2')) - - eq(0.0, funcs.json_decode('0.0')) - eq(0.0, funcs.json_decode('0.0e0')) - eq(0.0, funcs.json_decode('0.0e+0')) - eq(0.0, funcs.json_decode('0.0e-0')) - eq(0.0, funcs.json_decode('0e-0')) - eq(0.0, funcs.json_decode('0e-2')) - eq(0.0, funcs.json_decode('0e+2')) + eq(100000.5, fn.json_decode('100000.5')) + eq(-100000.5, fn.json_decode('-100000.5')) + eq(-100000.5e50, fn.json_decode('-100000.5e50')) + eq(100000.5e50, fn.json_decode('100000.5e50')) + eq(100000.5e50, fn.json_decode('100000.5e+50')) + eq(-100000.5e-50, fn.json_decode('-100000.5e-50')) + eq(100000.5e-50, fn.json_decode('100000.5e-50')) + eq(100000e-50, fn.json_decode('100000e-50')) + eq(0.5, fn.json_decode('0.5')) + eq(0.005, fn.json_decode('0.005')) + eq(0.005, fn.json_decode('0.00500')) + eq(0.5, fn.json_decode('0.00500e+002')) + eq(0.00005, fn.json_decode('0.00500e-002')) + + eq(-0.0, fn.json_decode('-0.0')) + eq(-0.0, fn.json_decode('-0.0e0')) + eq(-0.0, fn.json_decode('-0.0e+0')) + eq(-0.0, fn.json_decode('-0.0e-0')) + eq(-0.0, fn.json_decode('-0e-0')) + eq(-0.0, fn.json_decode('-0e-2')) + eq(-0.0, fn.json_decode('-0e+2')) + + eq(0.0, fn.json_decode('0.0')) + eq(0.0, fn.json_decode('0.0e0')) + eq(0.0, fn.json_decode('0.0e+0')) + eq(0.0, fn.json_decode('0.0e-0')) + eq(0.0, fn.json_decode('0e-0')) + eq(0.0, fn.json_decode('0e-2')) + eq(0.0, fn.json_decode('0e+2')) end) it('fails to parse numbers with spaces inside', function() @@ -210,7 +210,7 @@ describe('json_decode() function', function() end) it('parses empty containers', function() - eq({}, funcs.json_decode('[]')) + eq({}, fn.json_decode('[]')) eq('[]', eval('string(json_decode("[]"))')) end) @@ -301,12 +301,12 @@ describe('json_decode() function', function() end) it('parses containers', function() - eq({ 1 }, funcs.json_decode('[1]')) - eq({ NIL, 1 }, funcs.json_decode('[null, 1]')) - eq({ ['1'] = 2 }, funcs.json_decode('{"1": 2}')) + eq({ 1 }, fn.json_decode('[1]')) + eq({ NIL, 1 }, fn.json_decode('[null, 1]')) + eq({ ['1'] = 2 }, fn.json_decode('{"1": 2}')) eq( { ['1'] = 2, ['3'] = { { ['4'] = { ['5'] = { {}, 1 } } } } }, - funcs.json_decode('{"1": 2, "3": [{"4": {"5": [[], 1]}}]}') + fn.json_decode('{"1": 2, "3": [{"4": {"5": [[], 1]}}]}') ) end) @@ -363,10 +363,10 @@ describe('json_decode() function', function() end) it('parses strings properly', function() - eq('\n', funcs.json_decode('"\\n"')) - eq('', funcs.json_decode('""')) - eq('\\/"\t\b\n\r\f', funcs.json_decode([["\\\/\"\t\b\n\r\f"]])) - eq('/a', funcs.json_decode([["\/a"]])) + eq('\n', fn.json_decode('"\\n"')) + eq('', fn.json_decode('""')) + eq('\\/"\t\b\n\r\f', fn.json_decode([["\\\/\"\t\b\n\r\f"]])) + eq('/a', fn.json_decode([["\/a"]])) -- Unicode characters: 2-byte, 3-byte, 4-byte eq( { @@ -374,7 +374,7 @@ describe('json_decode() function', function() 'ફ', '\240\144\128\128', }, - funcs.json_decode({ + fn.json_decode({ '[', '"«",', '"ફ",', @@ -472,29 +472,29 @@ describe('json_decode() function', function() end) it('parses surrogate pairs properly', function() - eq('\240\144\128\128', funcs.json_decode('"\\uD800\\uDC00"')) - eq('\237\160\128a\237\176\128', funcs.json_decode('"\\uD800a\\uDC00"')) - eq('\237\160\128\t\237\176\128', funcs.json_decode('"\\uD800\\t\\uDC00"')) + eq('\240\144\128\128', fn.json_decode('"\\uD800\\uDC00"')) + eq('\237\160\128a\237\176\128', fn.json_decode('"\\uD800a\\uDC00"')) + eq('\237\160\128\t\237\176\128', fn.json_decode('"\\uD800\\t\\uDC00"')) - eq('\237\160\128', funcs.json_decode('"\\uD800"')) - eq('\237\160\128a', funcs.json_decode('"\\uD800a"')) - eq('\237\160\128\t', funcs.json_decode('"\\uD800\\t"')) + eq('\237\160\128', fn.json_decode('"\\uD800"')) + eq('\237\160\128a', fn.json_decode('"\\uD800a"')) + eq('\237\160\128\t', fn.json_decode('"\\uD800\\t"')) - eq('\237\176\128', funcs.json_decode('"\\uDC00"')) - eq('\237\176\128a', funcs.json_decode('"\\uDC00a"')) - eq('\237\176\128\t', funcs.json_decode('"\\uDC00\\t"')) + eq('\237\176\128', fn.json_decode('"\\uDC00"')) + eq('\237\176\128a', fn.json_decode('"\\uDC00a"')) + eq('\237\176\128\t', fn.json_decode('"\\uDC00\\t"')) - eq('\237\176\128', funcs.json_decode('"\\uDC00"')) - eq('a\237\176\128', funcs.json_decode('"a\\uDC00"')) - eq('\t\237\176\128', funcs.json_decode('"\\t\\uDC00"')) + eq('\237\176\128', fn.json_decode('"\\uDC00"')) + eq('a\237\176\128', fn.json_decode('"a\\uDC00"')) + eq('\t\237\176\128', fn.json_decode('"\\t\\uDC00"')) - eq('\237\160\128¬', funcs.json_decode('"\\uD800\\u00AC"')) + eq('\237\160\128¬', fn.json_decode('"\\uD800\\u00AC"')) - eq('\237\160\128\237\160\128', funcs.json_decode('"\\uD800\\uD800"')) + eq('\237\160\128\237\160\128', fn.json_decode('"\\uD800\\uD800"')) end) local sp_decode_eq = function(expected, json) - meths.nvim_set_var('__json', json) + api.nvim_set_var('__json', json) speq(expected, 'json_decode(g:__json)') command('unlet! g:__json') end @@ -570,10 +570,10 @@ describe('json_decode() function', function() end) it('parses dictionaries with empty keys', function() - eq({ [''] = 4 }, funcs.json_decode('{"": 4}')) + eq({ [''] = 4 }, fn.json_decode('{"": 4}')) eq( { b = 3, a = 1, c = 4, d = 2, [''] = 4 }, - funcs.json_decode('{"b": 3, "a": 1, "c": 4, "d": 2, "": 4}') + fn.json_decode('{"b": 3, "a": 1, "c": 4, "d": 2, "": 4}') ) end) @@ -602,7 +602,7 @@ describe('json_decode() function', function() end) it('parses U+00C3 correctly', function() - eq('\195\131', funcs.json_decode('"\195\131"')) + eq('\195\131', fn.json_decode('"\195\131"')) end) it('fails to parse empty string', function() @@ -622,7 +622,7 @@ describe('json_decode() function', function() local s = ' \t\n\r \t\r\n \n\t\r \n\r\t \r\t\n \r\n\t\t \n\r\t \r\n\t\n \r\t\n\r \t\r \n\t\r\n \n \t\r\n \r\t\n\t \r\n\t\r \n\r \t\n\r\t \r \t\n\r \n\t\r\t \n\r\t\n \r\n \t\r\n\t' local str = ('%s{%s"key"%s:%s[%s"val"%s,%s"val2"%s]%s,%s"key2"%s:%s1%s}%s'):gsub('%%s', s) - eq({ key = { 'val', 'val2' }, key2 = 1 }, funcs.json_decode(str)) + eq({ key = { 'val', 'val2' }, key2 = 1 }, fn.json_decode(str)) end) it('does not overflow when writing error message about decoding ["", ""]', function() @@ -640,12 +640,12 @@ describe('json_encode() function', function() end) it('dumps strings', function() - eq('"Test"', funcs.json_encode('Test')) - eq('""', funcs.json_encode('')) - eq('"\\t"', funcs.json_encode('\t')) - eq('"\\n"', funcs.json_encode('\n')) - eq('"\\u001B"', funcs.json_encode('\27')) - eq('"þÿþ"', funcs.json_encode('þÿþ')) + eq('"Test"', fn.json_encode('Test')) + eq('""', fn.json_encode('')) + eq('"\\t"', fn.json_encode('\t')) + eq('"\\n"', fn.json_encode('\n')) + eq('"\\u001B"', fn.json_encode('\27')) + eq('"þÿþ"', fn.json_encode('þÿþ')) end) it('dumps blobs', function() @@ -654,17 +654,17 @@ describe('json_encode() function', function() end) it('dumps numbers', function() - eq('0', funcs.json_encode(0)) - eq('10', funcs.json_encode(10)) - eq('-10', funcs.json_encode(-10)) + eq('0', fn.json_encode(0)) + eq('10', fn.json_encode(10)) + eq('-10', fn.json_encode(-10)) end) it('dumps floats', function() -- Also test method call (->) syntax eq('0.0', eval('0.0->json_encode()')) - eq('10.5', funcs.json_encode(10.5)) - eq('-10.5', funcs.json_encode(-10.5)) - eq('-1.0e-5', funcs.json_encode(-1e-5)) + eq('10.5', fn.json_encode(10.5)) + eq('-10.5', fn.json_encode(-10.5)) + eq('-1.0e-5', fn.json_encode(-1e-5)) eq('1.0e50', eval('1.0e50->json_encode()')) end) @@ -684,17 +684,17 @@ describe('json_encode() function', function() end) it('dumps lists', function() - eq('[]', funcs.json_encode({})) - eq('[[]]', funcs.json_encode({ {} })) - eq('[[], []]', funcs.json_encode({ {}, {} })) + eq('[]', fn.json_encode({})) + eq('[[]]', fn.json_encode({ {} })) + eq('[[], []]', fn.json_encode({ {}, {} })) end) it('dumps dictionaries', function() eq('{}', eval('json_encode({})')) - eq('{"d": []}', funcs.json_encode({ d = {} })) - eq('{"d": [], "e": []}', funcs.json_encode({ d = {}, e = {} })) + eq('{"d": []}', fn.json_encode({ d = {} })) + eq('{"d": [], "e": []}', fn.json_encode({ d = {}, e = {} })) -- Empty keys are allowed per JSON spec (and Vim dicts, and msgpack). - eq('{"": []}', funcs.json_encode({ [''] = {} })) + eq('{"": []}', fn.json_encode({ [''] = {} })) end) it('cannot dump generic mapping with generic mapping keys and values', function() @@ -892,9 +892,9 @@ describe('json_encode() function', function() end) it('ignores improper values in &isprint', function() - meths.nvim_set_option_value('isprint', '1', {}) + api.nvim_set_option_value('isprint', '1', {}) eq(1, eval('"\1" =~# "\\\\p"')) - eq('"\\u0001"', funcs.json_encode('\1')) + eq('"\\u0001"', fn.json_encode('\1')) end) it('fails when using surrogate character in a UTF-8 string', function() |