Mercurial > vim
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 |