chore: 规范标点
This commit is contained in:
1 parent
15e79887fa
commit
3dd2231c70
81 files changed
+1751
-1751
No files matched your search
+7
-7
@@ -79,7 +79,7 @@ static void test_numbers(void)
|
||||
CHECK(json_number_value(json_array_get(v, 5), 0) == 123456789012.0, "[5]");
|
||||
json_free(v);
|
||||
|
||||
/* 严格按 RFC 8259 扫描数字:这些以前全都被接受 —— strtod 会把 "1e" 读成 1、
|
||||
/* 严格按 RFC 8259 扫描数字: 这些以前全都被接受 —— strtod 会把 "1e" 读成 1、
|
||||
* "5." 读成 5, 于是一个手写错的数字会被静默当成另一个数用下去 (配置文件、
|
||||
* 存档都是手写的, 用户只会在很久之后从一个不相干的现象里发现它). */
|
||||
const char *bad_nums[] = {
|
||||
@@ -167,14 +167,14 @@ static void test_nested_depth(void)
|
||||
json_free(ok);
|
||||
}
|
||||
|
||||
/* 报错必须能定位:只有"语法错了"而不知道错在哪, 等于没有报错 */
|
||||
/* 报错必须能定位: 只有"语法错了"而不知道错在哪, 等于没有报错 */
|
||||
static void test_error_location(void)
|
||||
{
|
||||
puts("test_error_location");
|
||||
char err[256];
|
||||
JsonValue *v;
|
||||
|
||||
/* 尾随逗号:行号必须指向真正出问题的那一行 */
|
||||
/* 尾随逗号: 行号必须指向真正出问题的那一行 */
|
||||
v = json_parse("{\n \"a\": 1,\n}\n", err, sizeof err);
|
||||
CHECK(v == NULL, "尾随逗号应报错");
|
||||
CHECK(strstr(err, "第 3 行") != NULL, "应报出行号: %s", err);
|
||||
@@ -182,7 +182,7 @@ static void test_error_location(void)
|
||||
CHECK(strstr(err, "}") != NULL, "应回显出错处原文: %s", err);
|
||||
json_free(v);
|
||||
|
||||
/* 未闭合的数组:位置应指向输入结束处 */
|
||||
/* 未闭合的数组: 位置应指向输入结束处 */
|
||||
v = json_parse("[1, 2\n", err, sizeof err);
|
||||
CHECK(v == NULL, "未闭合数组应报错");
|
||||
CHECK(strstr(err, "第 2 行") != NULL, "未闭合应指向结尾: %s", err);
|
||||
@@ -225,8 +225,8 @@ static void test_error_location(void)
|
||||
* 服务端会因为请求体里有非法 UTF-8 直接回
|
||||
* 400 ... invalid unicode code point
|
||||
* 而那段坏数据一旦进了对话历史, 之后每次请求都会失败 —— 除非丢掉整轮对话.
|
||||
* 坏字节的来源很日常:某条命令在非 UTF-8 locale 下打出来的路径、被截断的多
|
||||
* 字节字符、二进制垃圾. 所以这条不能只靠"在入口清理", 必须在序列化器这层兜住:
|
||||
* 坏字节的来源很日常: 某条命令在非 UTF-8 locale 下打出来的路径、被截断的多
|
||||
* 字节字符、二进制垃圾. 所以这条不能只靠"在入口清理", 必须在序列化器这层兜住:
|
||||
* 出口是唯一能保证"发出去的永远合法"的地方.
|
||||
*
|
||||
* 这个校验函数故意用 utf8_seq_len 自己走一遍, 而不是信任 dump 的实现 ——
|
||||
@@ -246,7 +246,7 @@ static void test_dump_utf8_safety(void)
|
||||
{
|
||||
puts("test_dump_utf8_safety");
|
||||
|
||||
/* utf8_seq_len:合法序列返回长度 */
|
||||
/* utf8_seq_len: 合法序列返回长度 */
|
||||
CHECK(utf8_seq_len("\xe4\xb8\xad", 3) == 3, "合法 CJK 应是 3 字节");
|
||||
CHECK(utf8_seq_len("A", 1) == 1, "ASCII 应是 1 字节");
|
||||
CHECK(utf8_seq_len("\xf0\x9f\x98\x80", 4) == 4, "emoji 应是 4 字节");
|
||||
|
||||
Reference in new issue
Block a user