Module Name: src
Committed By: perseant
Date: Thu Aug 10 19:08:43 UTC 2017
Modified Files:
src/tests/lib/libc/locale: t_btowc.c
Log Message:
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.2 -r1.3 src/tests/lib/libc/locale/t_btowc.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.2 src/tests/lib/libc/locale/t_btowc.c:1.3
--- src/tests/lib/libc/locale/t_btowc.c:1.2 Wed Jul 12 17:32:51 2017
+++ src/tests/lib/libc/locale/t_btowc.c Thu Aug 10 19:08:43 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: t_btowc.c,v 1.2 2017/07/12 17:32:51 perseant Exp $ */
+/* $NetBSD: t_btowc.c,v 1.3 2017/08/10 19:08:43 perseant 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_btowc.c,v 1.2 2017/07/12 17:32:51 perseant Exp $");
+__RCSID("$NetBSD: t_btowc.c,v 1.3 2017/08/10 19:08:43 perseant Exp $");
#include <locale.h>
#include <stdio.h>
@@ -52,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",
@@ -193,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();