changeset 22629:4fba373b59da v8.2.1863

patch 8.2.1863: json code not sufficiently tested Commit: https://github.com/vim/vim/commit/e3c65ce4e59143736bb2e0fba93c21283aa92a35 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Oct 19 13:12:33 2020 +0200 patch 8.2.1863: json code not sufficiently tested Problem: Json code not sufficiently tested. Solution: Add more test cases. (Dominique Pell?, closes https://github.com/vim/vim/issues/7166)
author Bram Moolenaar <Bram@vim.org>
date Mon, 19 Oct 2020 13:15:05 +0200
parents 54b038a68b50
children b484b36ca2ef
files src/testdir/test_json.vim src/version.c
diffstat 2 files changed, 13 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_json.vim
+++ b/src/testdir/test_json.vim
@@ -62,7 +62,11 @@ let s:jsd3 = '{x:{a:1,b:2},y:{a:1,b:2}}'
 let s:vard4 = {"key": v:none}
 let s:vard4x = {"key": v:null}
 let s:jsond4 = '{"key":null}'
-let s:jsd4 = '{key:null}'
+let s:jsd4 = '{key:null}'    " js_encode puts no quotes around simple key.
+let s:vard5 = {"key!": v:none}
+let s:vard5x = {"key!": v:null}
+let s:jsond5 = '{"key!":null}'
+let s:jsd5 = '{"key!":null}' " js_encode puts quotes around non-simple key.
 
 let s:jsonvals = '[true,false,null,null]'
 let s:varvals = [v:true, v:false, v:null, v:null]
@@ -93,6 +97,7 @@ func Test_json_encode()
   call assert_equal(s:jsond2, json_encode(s:vard2))
   call assert_equal(s:jsond3, json_encode(s:vard3))
   call assert_equal(s:jsond4, json_encode(s:vard4))
+  call assert_equal(s:jsond5, json_encode(s:vard5))
 
   call assert_equal(s:jsonvals, json_encode(s:varvals))
 
@@ -139,6 +144,7 @@ func Test_json_decode()
   call assert_equal(s:vard2x, json_decode(s:jsond2s))
   call assert_equal(s:vard3, json_decode(s:jsond3))
   call assert_equal(s:vard4x, json_decode(s:jsond4))
+  call assert_equal(s:vard5x, json_decode(s:jsond5))
 
   call assert_equal(s:varvals, json_decode(s:jsonvals))
 
@@ -194,6 +200,7 @@ func Test_json_decode()
 
   call assert_fails('call json_decode("{{}:42}")', "E491:")
   call assert_fails('call json_decode("{[]:42}")', "E491:")
+  call assert_fails('call json_decode("{1:1{")', "E491:")
 
   call assert_fails('call json_decode("-")', "E491:")
   call assert_fails('call json_decode("-1x")', "E491:")
@@ -235,6 +242,7 @@ func Test_js_encode()
   call assert_equal(s:jsd2, js_encode(s:vard2))
   call assert_equal(s:jsd3, js_encode(s:vard3))
   call assert_equal(s:jsd4, js_encode(s:vard4))
+  call assert_equal(s:jsd5, js_encode(s:vard5))
 
   call assert_equal(s:jsonvals, js_encode(s:varvals))
 
@@ -281,6 +289,8 @@ func Test_js_decode()
   call assert_equal(s:vard3, js_decode(s:jsd3))
   call assert_equal(s:vard4x, js_decode(s:jsond4))
   call assert_equal(s:vard4x, js_decode(s:jsd4))
+  call assert_equal(s:vard5x, js_decode(s:jsond5))
+  call assert_equal(s:vard5x, js_decode(s:jsd5))
 
   call assert_equal(s:varvals, js_decode(s:jsonvals))
 
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1863,
+/**/
     1862,
 /**/
     1861,