📄 res.tsy
字号:
//# TESTCASE// title: set IDN_DISABLE and call decodename2()// group: generic-conversion{#ifdef WITHOUT_ICONV SKIP_TESTCASE;#else setenv("IDN_DISABLE", "1", 1); r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to, sizeof(to), EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, AUX_EUCJP_NAME);#endif}//# TESTCASE// title: set IDN_DISABLE, and then call enable(1) and encodename()// group: generic-conversion{ setenv("IDN_DISABLE", "1", 1); idn_res_enable(1); r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to, sizeof(to)); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, PUNYCODE_NAME);}//# TESTCASE// title: set IDN_DISABLE, and then call enable(1) and decodename()// group: generic-conversion{ setenv("IDN_DISABLE", "1", 1); idn_res_enable(1); r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to, sizeof(to)); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, UTF8_REVNAME);}//# TESTCASE// title: set IDN_DISABLE, and then call enable(1) and decodename2()// group: generic-conversion{#ifdef WITHOUT_ICONV SKIP_TESTCASE;#else setenv("IDN_DISABLE", "1", 1); idn_res_enable(1); r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to, sizeof(to), EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, UTF8_REVNAME);#endif}//# TESTCASE// title: overrun test for arg `to' of encodename()// group: generic-conversion{ /* Normal case */ r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to, strlen(PUNYCODE_NAME) + 1); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, PUNYCODE_NAME); r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to, strlen(PUNYCODE_NAME)); ASSERT_RESULT(r, idn_buffer_overflow); /* enable(0) case */ idn_res_enable(0); r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to, strlen(UTF8_NAME) + 1); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, UTF8_NAME); r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to, strlen(UTF8_NAME)); ASSERT_RESULT(r, idn_buffer_overflow); /* actions=0 case */ idn_res_enable(1); r = idn_res_encodename(ctx, 0, UTF8_NAME, to, strlen(UTF8_NAME) + 1); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, UTF8_NAME); r = idn_res_encodename(ctx, 0, UTF8_NAME, to, strlen(UTF8_NAME)); ASSERT_RESULT(r, idn_buffer_overflow);}//# TESTCASE// title: overrun test for arg `to' of decodename()// group: generic-conversion{ /* Normal case */ r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to, strlen(UTF8_REVNAME) + 1); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, UTF8_REVNAME); r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to, strlen(UTF8_REVNAME)); ASSERT_RESULT(r, idn_buffer_overflow); /* idn_res_enable(0) case */ idn_res_enable(0); r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to, strlen(PUNYCODE_NAME) + 1); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, PUNYCODE_NAME); r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to, strlen(PUNYCODE_NAME)); ASSERT_RESULT(r, idn_buffer_overflow); /* actions=0 case */ idn_res_enable(1); r = idn_res_decodename(ctx, 0, PUNYCODE_NAME, to, strlen(PUNYCODE_NAME) + 1); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, PUNYCODE_NAME); r = idn_res_decodename(ctx, 0, PUNYCODE_NAME, to, strlen(PUNYCODE_NAME)); ASSERT_RESULT(r, idn_buffer_overflow);}//# TESTCASE// title: overrun test for arg `to' of decodename2()// group: generic-conversion{#ifdef WITHOUT_ICONV SKIP_TESTCASE;#else /* Normal case */ r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to, strlen(UTF8_REVNAME) + 1, EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, UTF8_REVNAME); r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to, strlen(UTF8_REVNAME), EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_buffer_overflow); /* idn_res_enable(0) case */ idn_res_enable(0); r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to, strlen(AUX_EUCJP_NAME) + 1, EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, AUX_EUCJP_NAME); r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to, strlen(AUX_EUCJP_NAME), EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_buffer_overflow); /* actions=0 case */ idn_res_enable(1); r = idn_res_decodename2(ctx, 0, AUX_EUCJP_NAME, to, strlen(AUX_EUCJP_NAME) + 1, EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, AUX_EUCJP_NAME); r = idn_res_decodename2(ctx, 0, AUX_EUCJP_NAME, to, strlen(AUX_EUCJP_NAME), EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_buffer_overflow);#endif}//# TESTCASE// title: call encodename() with tolen=0// group: generic-conversion{ r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to, 0); ASSERT_RESULT(r, idn_buffer_overflow);}//# TESTCASE// title: call decodename() with tolen=0// group: generic-conversion{ r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to, 0); ASSERT_RESULT(r, idn_buffer_overflow);}//# TESTCASE// title: call decodename2() with tolen=0// group: generic-conversion{#ifdef WITHOUT_ICONV SKIP_TESTCASE;#else r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to, 0, EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_buffer_overflow);#endif}//# TESTCASE// title: convert an empty string using encodename()// group: generic-conversion{ r = idn_res_encodename(ctx, IDN_ENCODE_APP, "", to, sizeof(to)); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, "");}//# TESTCASE// title: convert an empty string using decodename()// group: generic-conversion{ r = idn_res_decodename(ctx, IDN_DECODE_APP, "", to, sizeof(to)); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, "");}//# TESTCASE// title: convert an empty string using decodename2()// group: generic-conversion{#ifdef WITHOUT_ICONV SKIP_TESTCASE;#else r = idn_res_decodename2(ctx, IDN_DECODE_APP, "", to, sizeof(to), EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, "");#endif}//# TESTCASE// title: prohcheck by encodename()// group: generic-conversion{ /* U+1680: prohibited character */ r = idn_res_encodename(ctx, IDN_PROHCHECK, "<U+1680>", to, sizeof(to)); ASSERT_RESULT(r, idn_prohibited);}//# TESTCASE// title: unascheck by encodename()// group: generic-conversion{ /* U+0221: unassigned codepoint */ r = idn_res_encodename(ctx, IDN_UNASCHECK, "<U+0221>", to, sizeof(to)); ASSERT_RESULT(r, idn_prohibited);}//# TESTCASE// title: bidicheck by encodename()// group: generic-conversion{ /* U+05D0: bidirectional property is "R" */ /* `a': bidirectional property is "L" */ /* `0', `-': bidirectional property is "N" */ r = idn_res_encodename(ctx, IDN_BIDICHECK, "<U+05D0>", to, sizeof(to)); ASSERT_RESULT(r, idn_success); r = idn_res_encodename(ctx, IDN_BIDICHECK, "<U+05D0><U+05D0>", to, sizeof(to)); ASSERT_RESULT(r, idn_success); r = idn_res_encodename(ctx, IDN_BIDICHECK, "<U+05D0><U+05D0>-a", to, sizeof(to)); ASSERT_RESULT(r, idn_prohibited); r = idn_res_encodename(ctx, IDN_BIDICHECK, "<U+05D0>-a-<U+05D0>", to, sizeof(to)); ASSERT_RESULT(r, idn_prohibited); r = idn_res_encodename(ctx, IDN_BIDICHECK, "a-<U+05D0><U+05D0>", to, sizeof(to)); ASSERT_RESULT(r, idn_prohibited); r = idn_res_encodename(ctx, IDN_BIDICHECK, "<U+05D0><U+05D0>-0", to, sizeof(to)); ASSERT_RESULT(r, idn_prohibited); r = idn_res_encodename(ctx, IDN_BIDICHECK, "<U+05D0>-0-<U+05D0>", to, sizeof(to)); ASSERT_RESULT(r, idn_success); r = idn_res_encodename(ctx, IDN_BIDICHECK, "0-<U+05D0><U+05D0>", to, sizeof(to)); ASSERT_RESULT(r, idn_prohibited);}//# TESTCASE// title: asccheck by encodename()// group: generic-conversion{ r = idn_res_encodename(ctx, IDN_ASCCHECK, "-name", to, sizeof(to)); ASSERT_RESULT(r, idn_prohibited); r = idn_res_encodename(ctx, IDN_ASCCHECK, "name-", to, sizeof(to)); ASSERT_RESULT(r, idn_prohibited); r = idn_res_encodename(ctx, IDN_ASCCHECK, "n ame", to, sizeof(to)); ASSERT_RESULT(r, idn_prohibited);}//# TESTCASE// title: lencheck by encodename()// group: generic-conversion{ r = idn_res_encodename(ctx, IDN_LENCHECK, "123456789-123456789-123456789-123456789-" "123456789-123456789-123", to, sizeof(to)); ASSERT_RESULT(r, idn_success); r = idn_res_encodename(ctx, IDN_LENCHECK, "123456789-123456789-123456789-123456789-" "123456789-123456789-1234", to, sizeof(to)); ASSERT_RESULT(r, idn_invalid_length); r = idn_res_encodename(ctx, IDN_LENCHECK, "a..b", to, sizeof(to)); ASSERT_RESULT(r, idn_invalid_length);}//# TESTCASE// title: rtcheck non-prohchecked label by decodename()// group: generic-conversion{ /* "xn--6ue" -> "U+1680" (prohibited character) */ r = idn_res_decodename(ctx, IDN_RTCHECK, "xn--6ue", to, sizeof(to)); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, "xn--6ue");}//# TESTCASE// title: rtcheck non-unaschecked label by decodename()// group: generic-conversion{ /* "xn--6la" -> "U+0221" (unassigned codepoint) */ r = idn_res_decodename(ctx, IDN_IDNCONV | IDN_RTCHECK | IDN_UNASCHECK, "xn--6la", to, sizeof(to)); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, "xn--6la");}//# TESTCASE// title: rtcheck non-ascchecked label by decodename()// group: generic-conversion{ /* "xn----x7t" -> "- U+3042" */ r = idn_res_decodename(ctx, IDN_IDNCONV | IDN_RTCHECK | IDN_ASCCHECK, "xn----x7t", to, sizeof(to)); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, "xn----x7t"); /* "xn----w7t" -> "U+3042 -" */ r = idn_res_decodename(ctx, IDN_IDNCONV | IDN_RTCHECK | IDN_ASCCHECK, "xn----w7t", to, sizeof(to)); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, "xn----w7t");}//# TESTCASE// title: rtcheck non-lenchecked label by decodename()// group: generic-conversion{ /* `s1' has 63 characters */ const char *s1 = "xn--l8jaa5522a8sj38bzugvvblo3y90fjzgvxlmxscifws3d43odzaq6aj340b"; const char *s1rev = "<U+9752><U+68EE><U+5CA9><U+624B><U+5BAE><U+57CE><U+79CB><U+7530>" "<U+5C71><U+5F62><U+798F><U+5CF6><U+6771><U+4EAC><U+795E><U+5948>" "<U+5DDD><U+3042><U+3042><U+3042>"; /* `s2' has 64 characters */ const char *s2 = "xn--a-w7ta6522a8sj38bzugvvblo3y90fjzgvxlmxscifws3d43odzaq6aj340b"; /* `s3' has an empty label */ const char *s3 = "a..b"; r = idn_res_decodename(ctx, IDN_IDNCONV | IDN_RTCHECK, s1, to, sizeof(to)); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, s1rev); r = idn_res_decodename(ctx, IDN_IDNCONV | IDN_RTCHECK, s2, to, sizeof(to)); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, s2); r = idn_res_decodename(ctx, IDN_IDNCONV | IDN_RTCHECK, s3, to, sizeof(to)); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, s3);}//# TESTCASE// title: rtcheck non-prohchecked label by decodename2()// group: generic-conversion{#ifdef WITHOUT_ICONV SKIP_TESTCASE;#else /* "xn--6ue" -> "U+1680" (prohibited character) */ r = idn_res_decodename2(ctx, IDN_RTCHECK, "xn--6ue", to, sizeof(to), EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, "xn--6ue");#endif}//# TESTCASE// title: rtcheck non-unaschecked label by decodename2()// group: generic-conversion{#ifdef WITHOUT_ICONV SKIP_TESTCASE;#else /* "xn--6la" -> "U+0221" (unassigned codepoint) */ r = idn_res_decodename2(ctx, IDN_IDNCONV | IDN_RTCHECK | IDN_UNASCHECK, "xn--6la", to, sizeof(to), EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, "xn--6la");#endif}//# TESTCASE// title: rtcheck non-ascchecked label by decodename2()// group: generic-conversion{#ifdef WITHOUT_ICONV SKIP_TESTCASE;#else /* "xn----x7t" -> "- U+3042" */ r = idn_res_decodename2(ctx, IDN_IDNCONV | IDN_RTCHECK | IDN_ASCCHECK, "xn----x7t", to, sizeof(to), EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, "xn----x7t"); /* "xn----w7t" -> "U+3042 -" */ r = idn_res_decodename2(ctx, IDN_IDNCONV | IDN_RTCHECK | IDN_ASCCHECK, "xn----w7t", to, sizeof(to), EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, "xn----w7t");#endif}//# TESTCASE// title: rtcheck non-lenchecked label by decodename2()// group: generic-conversion{#ifdef WITHOUT_ICONV SKIP_TESTCASE;#else /* `s1' has 63 characters */ const char *s1 = "xn--l8jaa5522a8sj38bzugvvblo3y90fjzgvxlmxscifws3d43odzaq6aj340b"; const char *s1rev = "<U+9752><U+68EE><U+5CA9><U+624B><U+5BAE><U+57CE><U+79CB><U+7530>" "<U+5C71><U+5F62><U+798F><U+5CF6><U+6771><U+4EAC><U+795E><U+5948>" "<U+5DDD><U+3042><U+3042><U+3042>"; /* `s2' has 64 characters */ const char *s2 = "xn--a-w7ta6522a8sj38bzugvvblo3y90fjzgvxlmxscifws3d43odzaq6aj340b"; /* `s3' has an empty label */ const char *s3 = "a..b"; r = idn_res_decodename2(ctx, IDN_IDNCONV | IDN_RTCHECK, s1, to, sizeof(to), EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, s1rev); r = idn_res_decodename2(ctx, IDN_IDNCONV | IDN_RTCHECK, s2, to, sizeof(to), EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, s2); r = idn_res_decodename(ctx, IDN_IDNCONV | IDN_RTCHECK, s3, to, sizeof(to)); ASSERT_RESULT(r, idn_success); ASSERT_STRING(to, s3);#endif}//# TESTCASE// title: pass broken string as `from' to encodename()// group: generic-conversion quiet{ /* "\xe3\x21" is not valid UTF-8 string */ r = idn_res_encodename(ctx, IDN_ENCODE_APP, "\xe3\x21", to, sizeof(to)); ASSERT_RESULT(r, idn_invalid_encoding);}//# TESTCASE// title: pass broken string as `from' to decodename()// group: generic-conversion quiet{ /* "\xe3\x21" is not valid UTF-8 string */ r = idn_res_decodename(ctx, IDN_DECODE_APP, "\xe3\x21", to, sizeof(to)); ASSERT_RESULT(r, idn_invalid_encoding);}//# TESTCASE// title: pass broken string as `from' to decodename2()// group: generic-conversion quiet{#ifdef WITHOUT_ICONV SKIP_TESTCASE;#else /* "\xa4\x21" is not valid EUC-JP string */ r = idn_res_decodename2(ctx, IDN_DECODE_APP, "\xa4\x21", to, sizeof(to), EUCJP_ENCODING_NAME); ASSERT_RESULT(r, idn_invalid_encoding);#endif}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -