| 174 | } |
| 175 | |
| 176 | static void test_json_partial(void) |
| 177 | { |
| 178 | const tal_t *ctx = tal(NULL, char); |
| 179 | |
| 180 | assert(streq(json_partial_escape(ctx, "\\")->s, "\\\\")); |
| 181 | assert(streq(json_partial_escape(ctx, "\\\\")->s, "\\\\")); |
| 182 | assert(streq(json_partial_escape(ctx, "\\\\\\")->s, "\\\\\\\\")); |
| 183 | assert(streq(json_partial_escape(ctx, "\\\\\\\\")->s, "\\\\\\\\")); |
| 184 | assert(streq(json_partial_escape(ctx, "\\n")->s, "\\n")); |
| 185 | assert(streq(json_partial_escape(ctx, "\n")->s, "\\n")); |
| 186 | assert(streq(json_partial_escape(ctx, "\\\"")->s, "\\\"")); |
| 187 | assert(streq(json_partial_escape(ctx, "\"")->s, "\\\"")); |
| 188 | assert(streq(json_partial_escape(ctx, "\\t")->s, "\\t")); |
| 189 | assert(streq(json_partial_escape(ctx, "\t")->s, "\\t")); |
| 190 | assert(streq(json_partial_escape(ctx, "\\b")->s, "\\b")); |
| 191 | assert(streq(json_partial_escape(ctx, "\b")->s, "\\b")); |
| 192 | assert(streq(json_partial_escape(ctx, "\\r")->s, "\\r")); |
| 193 | assert(streq(json_partial_escape(ctx, "\r")->s, "\\r")); |
| 194 | assert(streq(json_partial_escape(ctx, "\\f")->s, "\\f")); |
| 195 | assert(streq(json_partial_escape(ctx, "\f")->s, "\\f")); |
| 196 | /* You're allowed to escape / according to json.org. */ |
| 197 | assert(streq(json_partial_escape(ctx, "\\/")->s, "\\/")); |
| 198 | assert(streq(json_partial_escape(ctx, "/")->s, "/")); |
| 199 | |
| 200 | assert(streq(json_partial_escape(ctx, "\\u0FFF")->s, "\\u0FFF")); |
| 201 | assert(streq(json_partial_escape(ctx, "\\u0FFFx")->s, "\\u0FFFx")); |
| 202 | |
| 203 | /* Unknown escapes should be escaped. */ |
| 204 | assert(streq(json_partial_escape(ctx, "\\x")->s, "\\\\x")); |
| 205 | tal_free(ctx); |
| 206 | } |
| 207 | |
| 208 | /* Test that we can segment and parse a stream of json objects correctly. */ |
| 209 | static void test_json_stream(void) |
no test coverage detected