1 # Tests for the JSON library
2 # (c) 2015 Martin Mares <mj@ucw.cz>
5 Run: ../obj/ucw-json/json-test -rw
7 Err: ERROR: Empty input at line 1:0
23 Name: Invalid literal 1
26 Err: ERROR: Invalid literal name at line 1:8
28 Name: Invalid literal 2
29 In: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
31 Err: ERROR: Invalid literal name at line 1:101
47 # The largest number guaranteed to be precise by RFC 7159
52 Name: Fractional number 1
56 Name: Fractional number 2
60 Name: Number in scientific notation 1
64 Name: Number in scientific notation 2
68 Name: Number in scientific notation 3
72 Name: No leading zero allowed
75 Err: ERROR: Malformed number: leading zero at line 1:2
77 Name: Bare sign is not a number
80 Err: ERROR: Malformed number: just minus at line 1:2
82 Name: No leading decimal point allowed
85 Err: ERROR: Numbers must start with a digit at line 1:1
87 Name: Digits after decimal point required
90 Err: ERROR: Malformed number: no digits after decimal point at line 1:6
92 Name: Exponent part must be non-empty 1
95 Err: ERROR: Malformed number: empty exponent at line 1:3
97 Name: Exponent part must be non-empty 2
100 Err: ERROR: Malformed number: empty exponent at line 1:4
102 Name: Number out of range
105 Err: ERROR: Number out of range at line 1:10
121 Name: Unterminated string
124 Err: ERROR: Unterminated string at line 1:10
126 Name: Multi-line string
130 Err: ERROR: Unterminated string at line 1:6
132 # Some characters are written as \uXXXX on output, which is correct
133 Name: Escaped characters
134 In: "\"\\\/\b\f\n\r\t"
135 Out: "\"\\/\u0008\u000c\n\r\t"
137 Name: Improper escaped characters
140 Err: ERROR: Invalid backslash sequence in string at line 1:3
142 Name: Unicode escapes
143 In: "\u0041\u010d\u010D\u0001"
146 Name: Improper Unicode escapes 1
149 Err: ERROR: Invalid Unicode escape sequence at line 1:4
151 Name: Improper Unicode escapes 2
154 Err: ERROR: Invalid Unicode escape sequence at line 1:4
156 Name: Improper Unicode escapes 3
159 Err: ERROR: Invalid Unicode escape sequence at line 1:7
161 ### Unicode magic ###
164 Name: Control characters 1
165 Run: ../obj/ucw-json/json-test -RW
168 Err: ERROR: Invalid control character in string at line 1:2
170 # Surprisingly, DEL is not
171 Name: Control characters 2
176 Name: UTF-8 outside BMP
177 In: "<f0><b1><88><b4>"
178 Out: "<f0><b1><88><b4>"<0a>
180 Name: Private use characters in BMP
183 Err: ERROR: Invalid private-use character in string at line 1:2
185 Name: UTF-8 outside BMP
186 In: "<f0><b1><88><b4>"
187 Out: "<f0><b1><88><b4>"<0a>
189 Name: Private use characters outside BMP
190 In: "<f3><b0><80><80>"
192 Err: ERROR: Invalid private-use character in string at line 1:2
195 Name: UTF-8 outside UCS
196 In: "<f8><bf><b0><80><80>"
198 Err: ERROR: Invalid non-Unicode character in string at line 1:2
201 Name: UTF-8 surrogate 1
204 Err: ERROR: Invalid surrogate character in string at line 1:2
207 Name: UTF-8 surrogate 2
210 Err: ERROR: Invalid surrogate character in string at line 1:2
216 Err: ERROR: Misplaced byte-order mark, complain in Redmond at line 1:1
221 Err: ERROR: Zero bytes in strings are not supported at line 1:7
223 Name: Escaped surrogate
225 Out: "<f3><8f><b2><ba>"<0a>
227 Name: Escaped surrogate malformation 1
230 Err: ERROR: Escaped high surrogate codepoint must be followed by a low surrogate codepoint at line 1:8
232 Name: Escaped surrogate malformation 2
235 Err: ERROR: Invalid escaped surrogate codepoint at line 1:7
237 Name: Escaped low private-use character
240 Err: ERROR: Invalid escaped private-use character at line 1:7
242 Name: Escaped high private-use character
245 Err: ERROR: Invalid escaped private-use character at line 1:13
247 # Switch back to normal mode
248 Name: Invalid ASCII character
249 Run: ../obj/ucw-json/json-test -rw
252 Err: ERROR: Invalid character at line 1:1
260 Name: One-element array
264 Name: Two-element array
269 In: [[1,2],["a","b"]]
270 Out: [ [ 1, 2 ], [ "a", "b" ] ]
272 Name: Multi-line array
277 Out: [ "a", null, false, false ]