]> git.ipfire.org Git - thirdparty/json-c.git/commitdiff
Add tests with current behavior
authorShane F. Carr <shane@unicode.org>
Thu, 31 Jul 2025 00:39:47 +0000 (17:39 -0700)
committerShane F. Carr <shane@unicode.org>
Thu, 31 Jul 2025 00:39:47 +0000 (17:39 -0700)
tests/test_parse.c
tests/test_parse.expected

index 71b881c2023b7c2a5b0a7ac8279ab63c3b7a8cc2..9bcf278cb585d0d6a7f7230ae7ce103ddd7e12bb 100644 (file)
@@ -113,6 +113,9 @@ static void test_basic_parse(void)
        single_basic_parse("\"\\udd27\"", 0);
        // Test with a "short" high surrogate
        single_basic_parse("[9,'\\uDAD", 0);
+       single_basic_parse("\"[9,'\\uDAD\"", 0);
+       // Test with a supplemental character that looks like a high surrogate
+       single_basic_parse("\"\\uD836\\uDE87\"", 0);
        single_basic_parse("null", 0);
        single_basic_parse("NaN", 0);
        single_basic_parse("-NaN", 0); /* non-sensical, returns null */
@@ -332,6 +335,11 @@ struct incremental_step
     {"{ \"foo", -1, -1, json_tokener_continue, 1, 0},
     {": \"bar\"}", -1, 0, json_tokener_error_parse_unexpected, 1, 0},
 
+    /* Check a supplemental code point that looks like a high surrogate */
+    {"\"\\uD836", -1, -1, json_tokener_continue, 0, 0},
+    {"\\uDE87", -1, -1, json_tokener_continue, 0, 0},
+    {"\"", -1, -1, json_tokener_success, 1, 0},
+
     /* Check incremental parsing with trailing characters */
     {"{ \"foo", -1, -1, json_tokener_continue, 0, 0},
     {"\": {\"bar", -1, -1, json_tokener_continue, 0, 0},
index c82cfd1cc9c610d54b248dbd69bd9bde4cf91015..6f7b8aab6f25b60a2c9e90476711df2ae06a1532 100644 (file)
@@ -13,6 +13,8 @@ new_obj.to_string("\ud840\u4e16")="�世"
 new_obj.to_string("\ud840")="�"
 new_obj.to_string("\udd27")="�"
 new_obj.to_string([9,'\uDAD)=null
+new_obj.to_string("[9,'\uDAD")=null
+new_obj.to_string("\uD836\uDE87")="�"
 new_obj.to_string(null)=null
 new_obj.to_string(NaN)=NaN
 new_obj.to_string(-NaN)=null
@@ -138,6 +140,9 @@ json_tokener_parse_ex(tok, "ä"        ,   4) ... OK: got object of type [string
 json_tokener_parse_ex(tok, "ä"        ,   4) ... OK: got object of type [string]: "ä"
 json_tokener_parse_ex(tok, { "foo      ,   6) ... OK: got correct error: continue
 json_tokener_parse_ex(tok, : "bar"}    ,   8) ... OK: got correct error: unexpected character
+json_tokener_parse_ex(tok, "\uD836     ,   7) ... OK: got correct error: continue
+json_tokener_parse_ex(tok, \uDE87      ,   6) ... OK: got correct error: continue
+json_tokener_parse_ex(tok, "           ,   1) ... OK: got object of type [string]: "�"
 json_tokener_parse_ex(tok, { "foo      ,   6) ... OK: got correct error: continue
 json_tokener_parse_ex(tok, ": {"bar    ,   8) ... OK: got correct error: continue
 json_tokener_parse_ex(tok, ":13}}XXXX  ,  10) ... OK: got object of type [object]: { "foo": { "bar": 13 } }
@@ -363,5 +368,5 @@ json_tokener_parse_ex(tok, {"\1c":1}     ,   7) ... OK: got correct error: invalid
 json_tokener_parse_ex(tok, {"\1d":1}     ,   7) ... OK: got correct error: invalid string sequence
 json_tokener_parse_ex(tok, {"\1e":1}     ,   7) ... OK: got correct error: invalid string sequence
 json_tokener_parse_ex(tok, {"\1f":1}     ,   7) ... OK: got correct error: invalid string sequence
-End Incremental Tests OK=269 ERROR=0
+End Incremental Tests OK=272 ERROR=0
 ==================================