Module Name:    src
Committed By:   martin
Date:           Thu Mar 15 09:55:23 UTC 2018

Modified Files:
        src/tests/lib/libc/locale [netbsd-8]: t_btowc.c t_io.c t_mbrtowc.c
            t_mbstowcs.c t_sprintf.c t_wcstod.c t_wctomb.c t_wctype.c

Log Message:
Pull up following revision(s) (requested by maya in ticket #608):
        tests/lib/libc/locale/t_sprintf.c: revision 1.3
        tests/lib/libc/locale/t_wctomb.c: revision 1.5
        tests/lib/libc/locale/t_io.c: revision 1.5
        tests/lib/libc/locale/t_wcstod.c: revision 1.4
        tests/lib/libc/locale/t_mbstowcs.c: revision 1.2
        tests/lib/libc/locale/t_wctype.c: revision 1.2
        tests/lib/libc/locale/t_mbrtowc.c: revision 1.2
        tests/lib/libc/locale/t_btowc.c: revision 1.2
        tests/lib/libc/locale/t_btowc.c: revision 1.3
Add ISO10646 versions of these tests, conditional on __STDC_ISO_10646__ .
Also make the tests a bit more verbose, to aid debugging when they fail.

Separate the C/POSIX locale test from the rest; make it more thorough
and more correct.  This fixes a problem reported by martin@ when the
test is compiled with -funsigned-char.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.1.2.1 src/tests/lib/libc/locale/t_btowc.c \
    src/tests/lib/libc/locale/t_wctype.c
cvs rdiff -u -r1.4 -r1.4.20.1 src/tests/lib/libc/locale/t_io.c
cvs rdiff -u -r1.1 -r1.1.34.1 src/tests/lib/libc/locale/t_mbrtowc.c \
    src/tests/lib/libc/locale/t_mbstowcs.c
cvs rdiff -u -r1.1.2.1 -r1.1.2.2 src/tests/lib/libc/locale/t_sprintf.c
cvs rdiff -u -r1.3 -r1.3.34.1 src/tests/lib/libc/locale/t_wcstod.c
cvs rdiff -u -r1.4 -r1.4.2.1 src/tests/lib/libc/locale/t_wctomb.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/libc/locale/t_btowc.c
diff -u src/tests/lib/libc/locale/t_btowc.c:1.1 src/tests/lib/libc/locale/t_btowc.c:1.1.2.1
--- src/tests/lib/libc/locale/t_btowc.c:1.1	Thu Jun  1 15:45:02 2017
+++ src/tests/lib/libc/locale/t_btowc.c	Thu Mar 15 09:55:23 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: t_btowc.c,v 1.1 2017/06/01 15:45:02 perseant Exp $ */
+/* $NetBSD: t_btowc.c,v 1.1.2.1 2018/03/15 09:55:23 martin Exp $ */
 
 /*-
  * Copyright (c) 2017 The NetBSD Foundation, Inc.
@@ -32,11 +32,12 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2017\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_btowc.c,v 1.1 2017/06/01 15:45:02 perseant Exp $");
+__RCSID("$NetBSD: t_btowc.c,v 1.1.2.1 2018/03/15 09:55:23 martin Exp $");
 
 #include <locale.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <errno.h>
 #include <string.h>
 #include <wchar.h>
 
@@ -51,13 +52,6 @@ struct test {
 	const wchar_t willegal[8]; /* ISO-10646 that do not map into charset */
 } tests[] = {
 	{
-		"C",
-		"\377",
-		"ABC123@\t",
-		{ 'A', 'B', 'C', '1', '2', '3', '@', '\t' },
-		{ 0x0430, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}
-	},
-	{
 		"en_US.UTF-8",
 		"\200",
 		"ABC123@\t",
@@ -85,18 +79,28 @@ static void
 h_iso10646(struct test *t)
 {
 	const char *cp;
-	unsigned char c;
+	int c, wc;
 	char *str;
 	const wchar_t *wcp;
 
+	ATF_REQUIRE_STREQ(setlocale(LC_ALL, "C"), "C");
+	printf("Trying locale: %s\n", t->locale);
+	ATF_REQUIRE(setlocale(LC_CTYPE, t->locale) != NULL);
+	ATF_REQUIRE((str = setlocale(LC_ALL, NULL)) != NULL);
+	(void)printf("Using locale: %s\n", str);
+
 	/* These should have valid wchar representations */
 	for (cp = t->legal, wcp = t->wlegal; *cp != '\0'; ++cp, ++wcp) {
-		c = (unsigned char)*cp;
+		c = (int)(unsigned char)*cp;
 		printf("Checking legal character 0x%x\n", c);
+		wc = btowc(c);
+
+		if (errno != 0)
+			printf(" btowc() failed with errno=%d\n", errno);
 
 		/* It should map to the known Unicode equivalent */
 		printf("btowc(0x%2.2x) = 0x%x, expecting 0x%x\n",
-			c, btowc(c), *wcp);
+		       c, wc, *wcp);
 		ATF_REQUIRE(btowc(c) == *wcp);
 	}
 
@@ -120,6 +124,8 @@ h_btowc(struct test *t)
 	ATF_REQUIRE_STREQ(setlocale(LC_ALL, "C"), "C");
 	printf("Trying locale: %s\n", t->locale);
 	ATF_REQUIRE(setlocale(LC_CTYPE, t->locale) != NULL);
+	ATF_REQUIRE((str = setlocale(LC_ALL, NULL)) != NULL);
+	(void)printf("Using locale: %s\n", str);
 
 	/* btowc(EOF) -> WEOF */
 	ATF_REQUIRE_EQ(btowc(EOF), WEOF);
@@ -180,9 +186,39 @@ ATF_TC_BODY(stdc_iso_10646, tc)
 #endif /* ! __STDC_ISO_10646__ */
 }
 
+ATF_TC(btowc_posix);
+ATF_TC_HEAD(btowc_posix, tc)
+{
+	atf_tc_set_md_var(tc, "descr", "Checks btowc(3) and wctob(3) for POSIX locale");
+}
+ATF_TC_BODY(btowc_posix, tc)
+{
+	const char *cp;
+	unsigned char c;
+	char *str;
+	const wchar_t *wcp;
+	int i;
+
+	ATF_REQUIRE_STREQ(setlocale(LC_ALL, "POSIX"), "POSIX");
+
+	/* btowc(EOF) -> WEOF */
+	ATF_REQUIRE_EQ(btowc(EOF), WEOF);
+
+	/* wctob(WEOF) -> EOF */
+	ATF_REQUIRE_EQ(wctob(WEOF), EOF);
+
+	/* All characters from 0 to 255, inclusive, map
+	   onto their unsigned char equivalent */
+	for (i = 0; i <= 255; i++) {
+		ATF_REQUIRE_EQ(btowc(i), (wchar_t)(unsigned char)(i));
+		ATF_REQUIRE_EQ((unsigned char)wctob(i), (wchar_t)i);
+	}
+}
+
 ATF_TP_ADD_TCS(tp)
 {
 	ATF_TP_ADD_TC(tp, btowc);
+	ATF_TP_ADD_TC(tp, btowc_posix);
 	ATF_TP_ADD_TC(tp, stdc_iso_10646);
 
 	return atf_no_error();
Index: src/tests/lib/libc/locale/t_wctype.c
diff -u src/tests/lib/libc/locale/t_wctype.c:1.1 src/tests/lib/libc/locale/t_wctype.c:1.1.2.1
--- src/tests/lib/libc/locale/t_wctype.c:1.1	Tue May 30 23:44:02 2017
+++ src/tests/lib/libc/locale/t_wctype.c	Thu Mar 15 09:55:23 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: t_wctype.c,v 1.1 2017/05/30 23:44:02 perseant Exp $ */
+/* $NetBSD: t_wctype.c,v 1.1.2.1 2018/03/15 09:55:23 martin Exp $ */
 
 /*-
  * Copyright (c) 2017 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2017\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_wctype.c,v 1.1 2017/05/30 23:44:02 perseant Exp $");
+__RCSID("$NetBSD: t_wctype.c,v 1.1.2.1 2018/03/15 09:55:23 martin Exp $");
 
 #include <locale.h>
 #include <stdio.h>
@@ -91,6 +91,26 @@ static struct test {
 			{ /* xdigit */ "123abcABC", "xyz" },
 		},
 	}, {
+		"en_US.UTF-8",
+		{
+			{ /* alnum */ "abc123", "&^%$" },
+			{ /* alpha */ "ABCabc", "123*&^" },
+			{ /* blank */ " \t", "abc123%$^&\r\n" },
+			{ /* cntrl */ "\a", "abc123^&*" },
+			{ /* digit */ "123", "abc*()" },
+			{ /* graph */ "abc123ABC[];?~", " " },
+			{ /* ideogram */ "", "" },
+			{ /* lower */ "abc", "ABC123&*(" },
+			{ /* phonogram */ "", "" },
+			{ /* print */ "abcABC123%^&* ", "\r\n\t" },
+			{ /* punct */ ".,;:!?", "abc123 \n" },
+			{ /* rune */ "", "" },
+			{ /* space */ " \t\r\n", "abc123ABC&*(" },
+			{ /* special */ "", "" },
+			{ /* upper */ "ABC", "abc123&*(" },
+			{ /* xdigit */ "123abcABC", "xyz" },
+		},
+	}, {
 		"ru_RU.KOI8-R",
 		{
 			{ /* alnum */ "abc123i\xa3\xb3\xd6", "&^%$" },
@@ -129,6 +149,7 @@ h_ctype(const struct test *t)
 	ATF_REQUIRE_STREQ(setlocale(LC_ALL, "C"), "C");
 	printf("Trying locale %s...\n", t->locale);
 	ATF_REQUIRE(setlocale(LC_CTYPE, t->locale) != NULL);
+	printf("Using locale %s\n", setlocale(LC_CTYPE, NULL));
 
 	for (i = 0; i < 16; i++) {
 		/* Skip any type that has no chars */

Index: src/tests/lib/libc/locale/t_io.c
diff -u src/tests/lib/libc/locale/t_io.c:1.4 src/tests/lib/libc/locale/t_io.c:1.4.20.1
--- src/tests/lib/libc/locale/t_io.c:1.4	Tue Jan 21 00:32:16 2014
+++ src/tests/lib/libc/locale/t_io.c	Thu Mar 15 09:55:23 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: t_io.c,v 1.4 2014/01/21 00:32:16 yamt Exp $ */
+/* $NetBSD: t_io.c,v 1.4.20.1 2018/03/15 09:55:23 martin 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.4 2014/01/21 00:32:16 yamt Exp $");
+__RCSID("$NetBSD: t_io.c,v 1.4.20.1 2018/03/15 09:55:23 martin Exp $");
 
 #include <sys/param.h>
 #include <errno.h>
@@ -53,8 +53,14 @@ ATF_TC_HEAD(bad_big5_wprintf, tc)
 
 ATF_TC_BODY(bad_big5_wprintf, tc)
 {
-	/* XXX implementation detail knowledge (wchar_t encoding) */
-	wchar_t ibuf[] = { 0xcf10, 0 };
+	wchar_t ibuf[] = {
+#ifdef __STDC_ISO_10646__
+		0x0978, 0  /* An arbitrarily chosen Devangari symbol */
+#else
+		/* XXX implementation detail knowledge (wchar_t encoding) */
+		0xcf10, 0
+#endif
+	};
 	setlocale(LC_CTYPE, "zh_TW.Big5");
 	ATF_REQUIRE_ERRNO(EILSEQ, wprintf(L"%ls\n", ibuf) < 0);
 	ATF_REQUIRE(ferror(stdout));
@@ -68,8 +74,14 @@ ATF_TC_HEAD(bad_big5_swprintf, tc)
 
 ATF_TC_BODY(bad_big5_swprintf, tc)
 {
-	/* XXX implementation detail knowledge (wchar_t encoding) */
-	wchar_t ibuf[] = { 0xcf10, 0 };
+	wchar_t ibuf[] = {
+#ifdef __STDC_ISO_10646__
+		0x0978, 0  /* An arbitrarily chosen Devangari symbol */
+#else
+		/* XXX implementation detail knowledge (wchar_t encoding) */
+		0xcf10, 0
+#endif
+	};
 	wchar_t obuf[20];
 	setlocale(LC_CTYPE, "zh_TW.Big5");
 	ATF_REQUIRE_ERRNO(EILSEQ,
@@ -84,8 +96,14 @@ ATF_TC_HEAD(good_big5_wprintf, tc)
 
 ATF_TC_BODY(good_big5_wprintf, tc)
 {
-	/* XXX implementation detail knowledge (wchar_t encoding) */
-	wchar_t ibuf[] = { 0xcf40, 0 };
+	wchar_t ibuf[] = {
+#ifdef __STDC_ISO_10646__
+		0x67DC, 0
+#else
+		/* XXX implementation detail knowledge (wchar_t encoding) */
+		0xcf40, 0
+#endif
+	};
 	setlocale(LC_CTYPE, "zh_TW.Big5");
 	ATF_REQUIRE_EQ(wprintf(L"%ls\n", ibuf), 2);
 }
@@ -98,8 +116,14 @@ ATF_TC_HEAD(good_big5_swprintf, tc)
 
 ATF_TC_BODY(good_big5_swprintf, tc)
 {
-	/* XXX implementation detail knowledge (wchar_t encoding) */
-	wchar_t ibuf[] = { 0xcf40, 0 };
+	wchar_t ibuf[] = {
+#ifdef __STDC_ISO_10646__
+		0x67DC, 0
+#else
+		/* XXX implementation detail knowledge (wchar_t encoding) */
+		0xcf40, 0
+#endif
+	};
 	wchar_t obuf[20];
 	setlocale(LC_CTYPE, "zh_TW.Big5");
 	ATF_REQUIRE_EQ(swprintf(obuf, sizeof(obuf), L"%ls\n", ibuf), 2);
@@ -139,8 +163,14 @@ ATF_TC_BODY(good_big5_getwc, tc)
 
 	ATF_REQUIRE(fp != NULL);
 	setlocale(LC_CTYPE, "zh_TW.Big5");
-	/* XXX implementation detail knowledge (wchar_t encoding) */
-	ATF_REQUIRE_EQ(getwc(fp), 0xcf40);
+	ATF_REQUIRE_EQ(getwc(fp),
+#ifdef __STDC_ISO_10646__
+		       0x67DC
+#else
+		       /* XXX implementation detail knowledge (wchar_t encoding) */
+		       0xcf40
+#endif
+		);
 	fclose(fp);
 }
 

Index: src/tests/lib/libc/locale/t_mbrtowc.c
diff -u src/tests/lib/libc/locale/t_mbrtowc.c:1.1 src/tests/lib/libc/locale/t_mbrtowc.c:1.1.34.1
--- src/tests/lib/libc/locale/t_mbrtowc.c:1.1	Fri Jul 15 07:35:21 2011
+++ src/tests/lib/libc/locale/t_mbrtowc.c	Thu Mar 15 09:55:23 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: t_mbrtowc.c,v 1.1 2011/07/15 07:35:21 jruoho Exp $ */
+/* $NetBSD: t_mbrtowc.c,v 1.1.34.1 2018/03/15 09:55:23 martin Exp $ */
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -58,7 +58,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2011\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_mbrtowc.c,v 1.1 2011/07/15 07:35:21 jruoho Exp $");
+__RCSID("$NetBSD: t_mbrtowc.c,v 1.1.34.1 2018/03/15 09:55:23 martin Exp $");
 
 #include <errno.h>
 #include <locale.h>
@@ -98,19 +98,31 @@ static struct test {
 }, {
 	"ja_JP.ISO2022-JP2",
 	"\033$BF|K\1348l\033(BA\033$B$\"\033(BB\033$B$$\033(B",
+#ifdef __STDC_ISO_10646__
+	{ 0x65E5, 0x672C, 0x8A9E, 0x41, 0x3042, 0x42, 0x3044 },
+#else
 	{ 0x4200467c, 0x42004b5c, 0x4200386c, 0x41, 0x42002422, 0x42, 0x42002424 },
+#endif
 	{ 5, 2, 2, 4, 5, 4, 5 },
 	7
 }, {
 	"ja_JP.SJIS",
 	"\223\372\226{\214\352A\202\240B\202\242",
-	{ 0x93fa, 0x967b, 0x8cea, 0x41, 0x82a0, 0x42, 0x82a2 },
+#ifdef __STDC_ISO_10646__
+	{ 0x65E5, 0x672C, 0x8A9E, 0x41, 0x3042, 0x42, 0x3044 },
+#else
+	{ 0x93FA, 0x967B, 0x8CEA, 0x41, 0x82A0, 0x42, 0x82A2 },
+#endif
 	{ 2, 2, 2, 1, 2, 1, 2 },
 	7
 }, {
 	"ja_JP.eucJP",
 	"\306\374\313\334\270\354A\244\242B\244\244",
-	{ 0xc6fc, 0xcbdc, 0xb8ec, 0x41, 0xa4a2, 0x42, 0xa4a4 },
+#ifdef __STDC_ISO_10646__
+	{ 0x65E5, 0x672C, 0x8A9E, 0x41, 0x3042, 0x42, 0x3044 },
+#else
+	{ 0xC6FC, 0xCBDC, 0xB8EC, 0x41, 0xA4A2, 0x42, 0xA4A4 },
+#endif
 	{ 2, 2, 2, 1, 2, 1, 2 },
 	7
 }, {
@@ -146,6 +158,8 @@ h_ctype2(const struct test *t, bool use_
 //	mbrtowc(0, 0, 0, &st); /* XXX for ISO2022-JP */
 	stp = use_mbstate ? &st : 0;
 
+	printf("First using repeated mbrtowc\n");
+
 	for (n = 9; n > 0; n--) {
 		const char *src = t->data;
 		wchar_t dst;
@@ -196,6 +210,8 @@ h_ctype2(const struct test *t, bool use_
 			"%zd (expected: %zd)", nchar, t->length);
 	}
 
+	printf("Now using mbsrtowcs\n");
+
 	{
 		wchar_t wbuf[SIZE];
 		size_t rv;
Index: src/tests/lib/libc/locale/t_mbstowcs.c
diff -u src/tests/lib/libc/locale/t_mbstowcs.c:1.1 src/tests/lib/libc/locale/t_mbstowcs.c:1.1.34.1
--- src/tests/lib/libc/locale/t_mbstowcs.c:1.1	Fri Jul 15 07:35:21 2011
+++ src/tests/lib/libc/locale/t_mbstowcs.c	Thu Mar 15 09:55:23 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: t_mbstowcs.c,v 1.1 2011/07/15 07:35:21 jruoho Exp $ */
+/* $NetBSD: t_mbstowcs.c,v 1.1.34.1 2018/03/15 09:55:23 martin Exp $ */
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -55,7 +55,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2011\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_mbstowcs.c,v 1.1 2011/07/15 07:35:21 jruoho Exp $");
+__RCSID("$NetBSD: t_mbstowcs.c,v 1.1.34.1 2018/03/15 09:55:23 martin Exp $");
 
 #include <errno.h>
 #include <locale.h>
@@ -97,9 +97,15 @@ static struct test {
 	"ja_JP.ISO2022-JP",
 	"\033$B#J#I#S$G$9!#\033(Baaaa\033$B$\"$$$&$($*\033(B",
 	{
+#ifdef __STDC_ISO_10646__
+		0xFF2A, 0xFF29, 0xFF33, 0x3067, 0x3059,
+		0x3002, 0x61, 0x61, 0x61, 0x61, 0x3042, 0x3044,
+		0x3046, 0x3048, 0x304A, 0x0A
+#else
 		0x4200234A, 0x42002349, 0x42002353, 0x42002447, 0x42002439,
 		0x42002123, 0x61, 0x61, 0x61, 0x61, 0x42002422, 0x42002424,
 		0x42002426, 0x42002428, 0x4200242A, 0x0A
+#endif
 	},
 	{ 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, -1 },
 	26
@@ -108,8 +114,13 @@ static struct test {
 	"\202r\202i\202h\202r\202\305\202\267\201Baaaa\202\240\202\242"
 	"\202\244\202\246\202\250",
 	{
+#ifdef __STDC_ISO_10646__
+		0xFF33, 0xFF2A, 0xFF29, 0xFF33, 0x3067, 0x3059, 0x3002, 0x61,
+		0x61, 0x61, 0x61, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x0A
+#else
 		0x8272, 0x8269, 0x8268, 0x8272, 0x82C5, 0x82B7, 0x8142, 0x61,
 		0x61, 0x61, 0x61, 0x82A0, 0x82A2, 0x82A4, 0x82A6, 0x82A8, 0x0A
+#endif
 	},
 	{ 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, -1 },
 	28
@@ -118,8 +129,13 @@ static struct test {
 	"\243\305\243\325\243\303\244\307\244\271\241\243aaaa\244\242\244"
 	"\244\244\246\244\250\244\252",
 	{
+#ifdef __STDC_ISO_10646__
+		0xFF25, 0xFF35, 0xFF23, 0x3067, 0x3059, 0x3002, 0x61, 0x61, 0x61,
+		0x61, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x0A
+#else
 		0xA3C5, 0xA3D5, 0xA3C3, 0xA4C7, 0xA4B9, 0xA1A3, 0x61, 0x61, 0x61,
 		0x61, 0xA4A2, 0xA4A4, 0xA4A6, 0xA4A8, 0xA4AA, 0x0A
+#endif
 	},
 	{ 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, -1 },
 	26

Index: src/tests/lib/libc/locale/t_sprintf.c
diff -u src/tests/lib/libc/locale/t_sprintf.c:1.1.2.1 src/tests/lib/libc/locale/t_sprintf.c:1.1.2.2
--- src/tests/lib/libc/locale/t_sprintf.c:1.1.2.1	Wed Mar 14 18:37:00 2018
+++ src/tests/lib/libc/locale/t_sprintf.c	Thu Mar 15 09:55:23 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: t_sprintf.c,v 1.1.2.1 2018/03/14 18:37:00 bouyer Exp $ */
+/* $NetBSD: t_sprintf.c,v 1.1.2.2 2018/03/15 09:55:23 martin Exp $ */
 
 /*-
  * Copyright (c) 2017 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2017\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_sprintf.c,v 1.1.2.1 2018/03/14 18:37:00 bouyer Exp $");
+__RCSID("$NetBSD: t_sprintf.c,v 1.1.2.2 2018/03/15 09:55:23 martin Exp $");
 
 #include <locale.h>
 #include <stdio.h>
@@ -113,9 +113,6 @@ h_sprintf(const struct test *t)
 	ATF_REQUIRE(setlocale(LC_NUMERIC, t->locale) != NULL);
 	printf("Using locale: %s\n", setlocale(LC_ALL, NULL));
 
-	if (!strcmp("POSIX", t->locale))
-        	atf_tc_expect_fail("%s", "PR standards/52282, printf doesn't respect empty thousands separator");
-
 	sprintf(buf, "%'f", t->double_value);
 	ATF_REQUIRE_STREQ(buf, t->double_result);
 

Index: src/tests/lib/libc/locale/t_wcstod.c
diff -u src/tests/lib/libc/locale/t_wcstod.c:1.3 src/tests/lib/libc/locale/t_wcstod.c:1.3.34.1
--- src/tests/lib/libc/locale/t_wcstod.c:1.3	Sat Oct  1 17:56:11 2011
+++ src/tests/lib/libc/locale/t_wcstod.c	Thu Mar 15 09:55:23 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: t_wcstod.c,v 1.3 2011/10/01 17:56:11 christos Exp $ */
+/* $NetBSD: t_wcstod.c,v 1.3.34.1 2018/03/15 09:55:23 martin Exp $ */
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -56,7 +56,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2011\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_wcstod.c,v 1.3 2011/10/01 17:56:11 christos Exp $");
+__RCSID("$NetBSD: t_wcstod.c,v 1.3.34.1 2018/03/15 09:55:23 martin Exp $");
 
 #include <errno.h>
 #include <math.h>
@@ -384,6 +384,35 @@ static struct test {
 };
 #endif /* !defined(__vax__) */
 
+
+ATF_TC(wcstombs);
+ATF_TC_HEAD(wcstombs, tc)
+{
+	atf_tc_set_md_var(tc, "descr", "Checks wcstombs(3) on the inputs to the wcstod test");
+}
+ATF_TC_BODY(wcstombs, tc)
+{
+	struct test *t;
+	size_t n;
+	char *buf;
+
+	/*
+	 * Previously this was part of the wcstod test.
+	 */
+	for (t = &tests[0]; t->wcs != NULL; ++t) {
+		printf("wcslen(\"%S\") = %zu\n", t->wcs, wcslen(t->wcs));
+		n = wcstombs(NULL, t->wcs, 0);
+		printf("wcstombs(NULL, \"%S\", 0) = %d\n", t->wcs, (int)n);
+		ATF_REQUIRE((buf = (void *)calloc(1, n + 1)) != NULL);
+		(void)wcstombs(buf, t->wcs, n + 1);
+		printf("wcstombs(buf, \"%S\", %d) = \"%s\"\n", t->wcs,
+		       (int)(n + 1), buf);
+		ATF_REQUIRE_EQ(strlen(buf), wcslen(t->wcs));
+		
+		free(buf);
+	}
+}
+
 ATF_TC(wcstod);
 ATF_TC_HEAD(wcstod, tc)
 {
@@ -398,17 +427,11 @@ ATF_TC_BODY(wcstod, tc)
 
 #if !defined(__vax__)
 	for (t = &tests[0]; t->wcs != NULL; ++t) {
-		double d;
 		size_t n;
+		double d;
 		wchar_t *tail;
-		char *buf;
 
-		/* we do not supported %ls nor %S yet. */
-		n = wcstombs(NULL, t->wcs, 0);
-		ATF_REQUIRE((buf = (void *)malloc(n + 1)) != NULL);
-		(void)wcstombs(buf, t->wcs, n + 1);
-		(void)printf("Checking wcstod(\"%s\", &tail):\n", buf);
-		free(buf);
+		(void)printf("Checking wcstod(\"%S\", &tail):\n", t->wcs);
 
 		errno = 0;
 		d = wcstod(t->wcs, &tail);
@@ -451,6 +474,7 @@ ATF_TC_BODY(wcstod, tc)
 ATF_TP_ADD_TCS(tp)
 {
 	ATF_TP_ADD_TC(tp, wcstod);
+	ATF_TP_ADD_TC(tp, wcstombs);
 
 	return atf_no_error();
 }

Index: src/tests/lib/libc/locale/t_wctomb.c
diff -u src/tests/lib/libc/locale/t_wctomb.c:1.4 src/tests/lib/libc/locale/t_wctomb.c:1.4.2.1
--- src/tests/lib/libc/locale/t_wctomb.c:1.4	Thu May 25 18:28:54 2017
+++ src/tests/lib/libc/locale/t_wctomb.c	Thu Mar 15 09:55:23 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: t_wctomb.c,v 1.4 2017/05/25 18:28:54 perseant Exp $ */
+/* $NetBSD: t_wctomb.c,v 1.4.2.1 2018/03/15 09:55:23 martin Exp $ */
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -55,7 +55,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2011\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_wctomb.c,v 1.4 2017/05/25 18:28:54 perseant Exp $");
+__RCSID("$NetBSD: t_wctomb.c,v 1.4.2.1 2018/03/15 09:55:23 martin Exp $");
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -149,6 +149,8 @@ h_wctomb(const struct test *t, char tc)
 		(void)printf("At position %zd:\n", i);
 		(void)printf("  expected: %zd\n", t->mblen[i]);
 		(void)printf("  got     : %zd\n", ret);
+		(void)strvis(buf, cs, VIS_WHITE | VIS_OCTAL);
+		(void)printf("  sequence: \"%s\"\n", buf);
 		atf_tc_fail("Test failed");
 		/* NOTREACHED */
 	}

Reply via email to