Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/tests/lib/libc/locale - fix funopen usage
details: https://anonhg.NetBSD.org/src/rev/45c2565e39a0
branches: trunk
changeset: 792886:45c2565e39a0
user: yamt <yamt%NetBSD.org@localhost>
date: Mon Jan 20 14:14:56 2014 +0000
description:
- fix funopen usage
- some more checks
- remove a bogus test case (bad_eucJP_getwc) PR/47660 (Julio Merino)
- add XXX comments
diffstat:
tests/lib/libc/locale/t_io.c | 72 +++++++++++++++++++++++--------------------
1 files changed, 38 insertions(+), 34 deletions(-)
diffs (158 lines):
diff -r 7b1894d2031a -r 45c2565e39a0 tests/lib/libc/locale/t_io.c
--- a/tests/lib/libc/locale/t_io.c Mon Jan 20 14:11:03 2014 +0000
+++ b/tests/lib/libc/locale/t_io.c Mon Jan 20 14:14:56 2014 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: t_io.c,v 1.2 2013/03/17 05:02:13 jmmv Exp $ */
+/* $NetBSD: t_io.c,v 1.3 2014/01/20 14:14:56 yamt Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
#include <sys/cdefs.h>
__COPYRIGHT("@(#) Copyright (c) 2011\
The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_io.c,v 1.2 2013/03/17 05:02:13 jmmv Exp $");
+__RCSID("$NetBSD: t_io.c,v 1.3 2014/01/20 14:14:56 yamt Exp $");
#include <sys/param.h>
#include <errno.h>
@@ -53,10 +53,11 @@
ATF_TC_BODY(bad_big5_wprintf, tc)
{
+ /* XXX implementation detail knowledge (wchat_t encoding) */
wchar_t ibuf[] = { 0xcf10, 0 };
setlocale(LC_CTYPE, "zh_TW.Big5");
- atf_tc_expect_fail("PR lib/47660");
- ATF_REQUIRE_EQ(wprintf(L"%ls\n", ibuf), -1);
+ ATF_REQUIRE_ERRNO(EILSEQ, wprintf(L"%ls\n", ibuf) < 0);
+ ATF_REQUIRE(ferror(stdout));
}
ATF_TC(bad_big5_swprintf);
@@ -67,10 +68,12 @@
ATF_TC_BODY(bad_big5_swprintf, tc)
{
+ /* XXX implementation detail knowledge (wchat_t encoding) */
wchar_t ibuf[] = { 0xcf10, 0 };
wchar_t obuf[20];
setlocale(LC_CTYPE, "zh_TW.Big5");
- ATF_REQUIRE_EQ(swprintf(obuf, sizeof(obuf), L"%ls\n", ibuf), -1);
+ ATF_REQUIRE_ERRNO(EILSEQ,
+ swprintf(obuf, sizeof(obuf), L"%ls\n", ibuf) < 0);
}
ATF_TC(good_big5_wprintf);
@@ -81,9 +84,9 @@
ATF_TC_BODY(good_big5_wprintf, tc)
{
+ /* XXX implementation detail knowledge (wchat_t encoding) */
wchar_t ibuf[] = { 0xcf40, 0 };
setlocale(LC_CTYPE, "zh_TW.Big5");
- // WTF? swprintf() fails, wprintf succeeds?
ATF_REQUIRE_EQ(wprintf(L"%ls\n", ibuf), 2);
}
@@ -95,15 +98,28 @@
ATF_TC_BODY(good_big5_swprintf, tc)
{
+ /* XXX implementation detail knowledge (wchat_t encoding) */
wchar_t ibuf[] = { 0xcf40, 0 };
wchar_t obuf[20];
setlocale(LC_CTYPE, "zh_TW.Big5");
ATF_REQUIRE_EQ(swprintf(obuf, sizeof(obuf), L"%ls\n", ibuf), 2);
}
-static int readfn(void *p, char *buf, int len) {
- memcpy(buf, p, MIN(len, 2));
- return 2;
+struct ibuf {
+ off_t off;
+ size_t buflen;
+ const char *buf;
+};
+
+static int
+readfn(void *vp, char *buf, int len)
+{
+ struct ibuf *ib = vp;
+ size_t todo = MIN((size_t)len, ib->buflen - ib->off);
+
+ memcpy(buf, ib->buf + ib->off, todo);
+ ib->off += todo;
+ return todo;
}
ATF_TC(good_big5_getwc);
@@ -114,11 +130,16 @@
ATF_TC_BODY(good_big5_getwc, tc)
{
- char ibuf[] = { 0xcf, 0x40 };
- FILE *fp = funopen(ibuf, readfn, NULL, NULL, NULL);
+ const char buf[] = { 0xcf, 0x40 };
+ struct ibuf ib = {
+ .buf = buf,
+ .buflen = sizeof(buf),
+ };
+ FILE *fp = funopen(&ib, readfn, NULL, NULL, NULL);
ATF_REQUIRE(fp != NULL);
setlocale(LC_CTYPE, "zh_TW.Big5");
+ /* XXX implementation detail knowledge (wchat_t encoding) */
ATF_REQUIRE_EQ(getwc(fp), 0xcf40);
fclose(fp);
}
@@ -131,8 +152,12 @@
ATF_TC_BODY(bad_big5_getwc, tc)
{
- char ibuf[] = { 0xcf, 0x20 };
- FILE *fp = funopen(ibuf, readfn, NULL, NULL, NULL);
+ const char buf[] = { 0xcf, 0x20 };
+ struct ibuf ib = {
+ .buf = buf,
+ .buflen = sizeof(buf),
+ };
+ FILE *fp = funopen(&ib, readfn, NULL, NULL, NULL);
ATF_REQUIRE(fp != NULL);
setlocale(LC_CTYPE, "zh_TW.Big5");
@@ -140,26 +165,6 @@
fclose(fp);
}
-ATF_TC(bad_eucJP_getwc);
-ATF_TC_HEAD(bad_eucJP_getwc, tc)
-{
- atf_tc_set_md_var(tc, "descr", "Test bad eucJP wchar getwc");
-}
-
-ATF_TC_BODY(bad_eucJP_getwc, tc)
-{
- char ibuf[] = { 0xcf, 0x20 };
- FILE *fp = funopen(ibuf, readfn, NULL, NULL, NULL);
-
- ATF_REQUIRE(fp != NULL);
- setlocale(LC_CTYPE, "ja_JP.eucJP");
- // WTF? Not even returning what it read?
- ATF_CHECK_EQ(getwc(fp), 0xcf20);
- atf_tc_expect_fail("PR lib/47660");
- ATF_REQUIRE_EQ(getwc(fp), WEOF);
- fclose(fp);
-}
-
ATF_TP_ADD_TCS(tp)
{
ATF_TP_ADD_TC(tp, bad_big5_wprintf);
@@ -168,7 +173,6 @@
ATF_TP_ADD_TC(tp, good_big5_swprintf);
ATF_TP_ADD_TC(tp, good_big5_getwc);
ATF_TP_ADD_TC(tp, bad_big5_getwc);
- ATF_TP_ADD_TC(tp, bad_eucJP_getwc);
return atf_no_error();
}
Home |
Main Index |
Thread Index |
Old Index