| 198 | } |
| 199 | |
| 200 | static void test_json_partial(void) |
| 201 | { |
| 202 | const tal_t *ctx = tal(NULL, char); |
| 203 | |
| 204 | assert(streq(json_partial_escape(ctx, "\\")->s, "\\\\")); |
| 205 | assert(streq(json_partial_escape(ctx, "\\\\")->s, "\\\\")); |
| 206 | assert(streq(json_partial_escape(ctx, "\\\\\\")->s, "\\\\\\\\")); |
| 207 | assert(streq(json_partial_escape(ctx, "\\\\\\\\")->s, "\\\\\\\\")); |
| 208 | assert(streq(json_partial_escape(ctx, "\\n")->s, "\\n")); |
| 209 | assert(streq(json_partial_escape(ctx, "\n")->s, "\\n")); |
| 210 | assert(streq(json_partial_escape(ctx, "\\\"")->s, "\\\"")); |
| 211 | assert(streq(json_partial_escape(ctx, "\"")->s, "\\\"")); |
| 212 | assert(streq(json_partial_escape(ctx, "\\t")->s, "\\t")); |
| 213 | assert(streq(json_partial_escape(ctx, "\t")->s, "\\t")); |
| 214 | assert(streq(json_partial_escape(ctx, "\\b")->s, "\\b")); |
| 215 | assert(streq(json_partial_escape(ctx, "\b")->s, "\\b")); |
| 216 | assert(streq(json_partial_escape(ctx, "\\r")->s, "\\r")); |
| 217 | assert(streq(json_partial_escape(ctx, "\r")->s, "\\r")); |
| 218 | assert(streq(json_partial_escape(ctx, "\\f")->s, "\\f")); |
| 219 | assert(streq(json_partial_escape(ctx, "\f")->s, "\\f")); |
| 220 | /* You're allowed to escape / according to json.org. */ |
| 221 | assert(streq(json_partial_escape(ctx, "\\/")->s, "\\/")); |
| 222 | assert(streq(json_partial_escape(ctx, "/")->s, "/")); |
| 223 | |
| 224 | assert(streq(json_partial_escape(ctx, "\\u0FFF")->s, "\\u0FFF")); |
| 225 | assert(streq(json_partial_escape(ctx, "\\u0FFFx")->s, "\\u0FFFx")); |
| 226 | |
| 227 | /* Unknown escapes should be escaped. */ |
| 228 | assert(streq(json_partial_escape(ctx, "\\x")->s, "\\\\x")); |
| 229 | tal_free(ctx); |
| 230 | } |
| 231 | |
| 232 | /* Test that we can segment and parse a stream of json objects correctly. */ |
| 233 | static void test_json_stream(void) |
no test coverage detected