comparison src/testdir/test_json.vim @ 21261:018339de3099 v8.2.1181

patch 8.2.1181: json code not fully tested Commit: https://github.com/vim/vim/commit/21e5bdd271fa4d0ff4511cf74b160315e1d17cff Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jul 11 14:26:08 2020 +0200 patch 8.2.1181: json code not fully tested Problem: Json code not fully tested. Solution: Add more test coverage. (Dominique Pell?, closes https://github.com/vim/vim/issues/6433)
author Bram Moolenaar <Bram@vim.org>
date Sat, 11 Jul 2020 14:30:05 +0200
parents 947e50e438d3
children 6a4806e326dd
comparison
equal deleted inserted replaced
21260:57acf261ab51 21261:018339de3099
94 call assert_equal(s:jsond3, json_encode(s:vard3)) 94 call assert_equal(s:jsond3, json_encode(s:vard3))
95 call assert_equal(s:jsond4, json_encode(s:vard4)) 95 call assert_equal(s:jsond4, json_encode(s:vard4))
96 96
97 call assert_equal(s:jsonvals, json_encode(s:varvals)) 97 call assert_equal(s:jsonvals, json_encode(s:varvals))
98 98
99 " JSON is always encoded in utf-8 regardless of 'encoding' value.
100 let save_encoding = &encoding
101 set encoding=latin1
102 call assert_equal('"café"', json_encode("caf\xe9"))
103 let &encoding = save_encoding
104
99 call assert_fails('echo json_encode(function("tr"))', 'E474:') 105 call assert_fails('echo json_encode(function("tr"))', 'E474:')
100 call assert_fails('echo json_encode([function("tr")])', 'E474:') 106 call assert_fails('echo json_encode([function("tr")])', 'E474:')
101 107
102 call assert_equal('{"a":""}', json_encode({'a': test_null_string()})) 108 call assert_equal('{"a":""}', json_encode({'a': test_null_string()}))
103 call assert_equal('{"a":[]}', json_encode({"a": test_null_list()})) 109 call assert_equal('{"a":[]}', json_encode({"a": test_null_list()}))
139 call assert_equal(v:true, json_decode('true')) 145 call assert_equal(v:true, json_decode('true'))
140 call assert_equal(type(v:true), type(json_decode('true'))) 146 call assert_equal(type(v:true), type(json_decode('true')))
141 call assert_equal(v:none, json_decode('')) 147 call assert_equal(v:none, json_decode(''))
142 call assert_equal(type(v:none), type(json_decode(''))) 148 call assert_equal(type(v:none), type(json_decode('')))
143 call assert_equal("", json_decode('""')) 149 call assert_equal("", json_decode('""'))
150
151 " Character in string after \ is ignored if not special.
152 call assert_equal("x", json_decode('"\x"'))
153
154 " JSON is always encoded in utf-8 regardless of 'encoding' value.
155 let save_encoding = &encoding
156 set encoding=latin1
157 call assert_equal("caf\xe9", json_decode('"café"'))
158 let &encoding = save_encoding
144 159
145 " empty key is OK 160 " empty key is OK
146 call assert_equal({'': 'ok'}, json_decode('{"": "ok"}')) 161 call assert_equal({'': 'ok'}, json_decode('{"": "ok"}'))
147 " but not twice 162 " but not twice
148 call assert_fails("call json_decode('{\"\": \"ok\", \"\": \"bad\"}')", 'E938:') 163 call assert_fails("call json_decode('{\"\": \"ok\", \"\": \"bad\"}')", 'E938:')
163 call assert_fails('call json_decode("{\"n\":")', "E491:") 178 call assert_fails('call json_decode("{\"n\":")', "E491:")
164 call assert_fails('call json_decode("{\"n\":1")', "E491:") 179 call assert_fails('call json_decode("{\"n\":1")', "E491:")
165 call assert_fails('call json_decode("{\"n\":1,")', "E491:") 180 call assert_fails('call json_decode("{\"n\":1,")', "E491:")
166 call assert_fails('call json_decode("{\"n\",1}")', "E491:") 181 call assert_fails('call json_decode("{\"n\",1}")', "E491:")
167 call assert_fails('call json_decode("{-}")', "E491:") 182 call assert_fails('call json_decode("{-}")', "E491:")
183 if has('float')
184 call assert_fails('call json_decode("{3.14:1}")', "E474:")
185 endif
168 186
169 call assert_fails('call json_decode("[foobar]")', "E491:") 187 call assert_fails('call json_decode("[foobar]")', "E491:")
170 call assert_fails('call json_decode("[")', "E491:") 188 call assert_fails('call json_decode("[")', "E491:")
171 call assert_fails('call json_decode("[1")', "E491:") 189 call assert_fails('call json_decode("[1")', "E491:")
172 call assert_fails('call json_decode("[1,")', "E491:") 190 call assert_fails('call json_decode("[1,")', "E491:")
174 192
175 call assert_fails('call json_decode("[1,,2]")', "E491:") 193 call assert_fails('call json_decode("[1,,2]")', "E491:")
176 194
177 call assert_fails('call json_decode("{{}:42}")', "E491:") 195 call assert_fails('call json_decode("{{}:42}")', "E491:")
178 call assert_fails('call json_decode("{[]:42}")', "E491:") 196 call assert_fails('call json_decode("{[]:42}")', "E491:")
197
198 call assert_fails('call json_decode("-")', "E491:")
199 call assert_fails('call json_decode("infinit")', "E491:")
179 200
180 call assert_fails('call json_decode("\"\\u111Z\"")', 'E491:') 201 call assert_fails('call json_decode("\"\\u111Z\"")', 'E491:')
181 call assert_equal('[😂]', json_decode('"[\uD83D\uDE02]"')) 202 call assert_equal('[😂]', json_decode('"[\uD83D\uDE02]"'))
182 call assert_equal('a😂b', json_decode('"a\uD83D\uDE02b"')) 203 call assert_equal('a😂b', json_decode('"a\uD83D\uDE02b"'))
183 endfunc 204 endfunc