Regression tests for libc locale (LC_CTYPE) functions.

Based on Citrus repository xpg4dl/test/*, written by tshiozak and yamt.
This commit is contained in:
minoura 2002-09-11 14:54:33 +00:00
parent b240241362
commit a2bb3221ba
19 changed files with 359 additions and 0 deletions

View File

@ -0,0 +1,5 @@
# $NetBSD: Makefile,v 1.1 2002/09/11 14:54:33 minoura Exp $
SUBDIR+= ctype1 ctype2 ctype3
.include <bsd.subdir.mk>

View File

@ -0,0 +1,26 @@
PROG= ctype1
NOMAN= # defined
TESTS= en_US.UTF-8 ja_JP.ISO2022-JP ja_JP.SJIS ja_JP.eucJP
INPUTS= ${TESTS:S/$/.in/}
EXPECTS= ${TESTS:S/$/.exp/}
OUTPUTS= ${TESTS:S/$/.out/}
CLEANFILES+= ${OUTPUTS} ${INPUTS} ${EXPECTS}
regress: ${PROG} ${INPUTS} ${EXPECTS}
.for L in ${TESTS}
@env LC_CTYPE=$L LC_ALL= LANG= ./${PROG} < $L.in > $L.out
@cmp $L.exp $L.out && echo "ok." 1>&2
.endfor
# paranoia: protect against non-ASCII characters
.for L in ${TESTS}
$L.in: $L.in.uu
uudecode ${.ALLSRC}
$L.exp: $L.exp.uu
uudecode ${.ALLSRC}
.endfor
.include <bsd.prog.mk>

View File

@ -0,0 +1,50 @@
/* $NetBSD: ctype1.c,v 1.1 2002/09/11 14:54:34 minoura Exp $ */
#include <stdio.h>
#include <stdlib.h>
#include <err.h>
#include <locale.h>
#include <wchar.h>
int
main(int ac, char **av)
{
char buf[256];
char *str;
int c;
wchar_t wbuf[256];
wchar_t *p;
str = setlocale(LC_ALL, "");
if (str == 0)
err(1, "setlocale");
fprintf(stderr, "===> Testing for locale %s... ", str);
for (str=buf; 1; str++) {
c = getchar();
if ( c==EOF || c=='\n' )
break;
*str=c;
}
*str='\0';
strcat(buf, "\n");
mbstowcs(wbuf, buf, 255);
wcstombs(buf, wbuf, 255);
printf("%s\n", buf);
for ( p=wbuf; *p; p++) {
printf("0x%04X ", (unsigned)*p);
}
putchar('\n');
printf("width:\n", buf);
for ( p=wbuf; *p; p++) {
printf("%d ", wcwidth(*p));
}
putchar('\n');
printf("wcswidth=%d\n", wcswidth(wbuf, 255));
return 0;
}

View File

@ -0,0 +1,13 @@
# $NetBSD: en_US.UTF-8.exp.uu,v 1.1 2002/09/11 14:54:34 minoura Exp $
begin 664 en_US.UTF-8.exp
M6P%_75O"@-^_75O@H(#OO[]=6_"0@(#WO[^_75OXB("`@/N_O[^_75O\A("`
M@(#]O[^_O[]="@HP>#`P-4(@(#!X,#`P,2`@,'@P,#=&("`P>#`P-40@(#!X
M,#`U0B`@,'@P,#@P("`P>#`W1D8@(#!X,#`U1"`@,'@P,#5"("`P>#`X,#`@
M(#!X1D9&1B`@,'@P,#5$("`P>#`P-4(@(#!X,3`P,#`@(#!X,49&1D9&("`P
M>#`P-40@(#!X,#`U0B`@,'@R,#`P,#`@(#!X,T9&1D9&1B`@,'@P,#5$("`P
M>#`P-4(@(#!X-#`P,#`P,"`@,'@W1D9&1D9&1B`@,'@P,#5$("`P>#`P,$$@
M(`IW:61T:#H*,2`P(#`@,2`Q(#`@,"`Q(#$@,"`P(#$@,2`P(#`@,2`Q(#`@
;,"`Q(#$@,"`P(#$@,"`*=V-S=VED=&@],3(*
`
end

View File

@ -0,0 +1,7 @@
# $NetBSD: en_US.UTF-8.in.uu,v 1.1 2002/09/11 14:54:34 minoura Exp $
begin 644 en_US.UTF-8.in
M6P%_75O"@-^_75O@H(#OO[]=6_"0@(#WO[^_75OXB("`@/N_O[^_75O\A("`
*@(#]O[^_O[]="EO@
`
end

View File

@ -0,0 +1,11 @@
# $NetBSD: ja_JP.ISO2022-JP.exp.uu,v 1.1 2002/09/11 14:54:34 minoura Exp $
begin 664 ja_JP.ISO2022-JP.exp
M&R1"(THC22-3)$<D.2$C&RA"86%A81LD0B0B)"0D)B0H)"H;*$(*"C!X-#(P
M,#(S-$$@(#!X-#(P,#(S-#D@(#!X-#(P,#(S-3,@(#!X-#(P,#(T-#<@(#!X
M-#(P,#(T,SD@(#!X-#(P,#(Q,C,@(#!X,#`V,2`@,'@P,#8Q("`P>#`P-C$@
M(#!X,#`V,2`@,'@T,C`P,C0R,B`@,'@T,C`P,C0R-"`@,'@T,C`P,C0R-B`@
M,'@T,C`P,C0R."`@,'@T,C`P,C0R02`@,'@P,#!!("`*=VED=&@Z"C(@,B`R
H(#(@,B`R(#$@,2`Q(#$@,B`R(#(@,B`R(#`@"G=C<W=I9'1H/3(V"C(@
`
end

View File

@ -0,0 +1,6 @@
# $NetBSD: ja_JP.ISO2022-JP.in.uu,v 1.1 2002/09/11 14:54:34 minoura Exp $
begin 644 ja_JP.ISO2022-JP.in
G&R1"(THC22-3)$<D.2$C&RA"86%A81LD0B0B)"0D)B0H)"H;*$(*
`
end

View File

@ -0,0 +1,10 @@
# $NetBSD: ja_JP.SJIS.exp.uu,v 1.1 2002/09/11 14:54:34 minoura Exp $
begin 664 ja_JP.SJIS.exp
M@G*":8)H@G*"Q8*W@4)A86%A@J""HH*D@J:"J`H*,'@X,C<R("`P>#@R-CD@
M(#!X.#(V."`@,'@X,C<R("`P>#@R0S4@(#!X.#)"-R`@,'@X,30R("`P>#`P
M-C$@(#!X,#`V,2`@,'@P,#8Q("`P>#`P-C$@(#!X.#)!,"`@,'@X,D$R("`P
M>#@R030@(#!X.#)!-B`@,'@X,D$X("`P>#`P,$$@(`IW:61T:#H*,B`R(#(@
I,B`R(#(@,B`Q(#$@,2`Q(#(@,B`R(#(@,B`P(`IW8W-W:61T:#TR.`HR
`
end

View File

@ -0,0 +1,6 @@
# $NetBSD: ja_JP.SJIS.in.uu,v 1.1 2002/09/11 14:54:34 minoura Exp $
begin 644 ja_JP.SJIS.in
=@G*":8)H@G*"Q8*W@4)A86%A@J""HH*D@J:"J`H`
`
end

View File

@ -0,0 +1,10 @@
# $NetBSD: ja_JP.eucJP.exp.uu,v 1.1 2002/09/11 14:54:34 minoura Exp $
begin 664 ja_JP.eucJP.exp
MH\6CU:/#I,>DN:&C86%A8:2BI*2DIJ2HI*H*"C!X03-#-2`@,'A!,T0U("`P
M>$$S0S,@(#!X031#-R`@,'A!-$(Y("`P>$$Q03,@(#!X,#`V,2`@,'@P,#8Q
M("`P>#`P-C$@(#!X,#`V,2`@,'A!-$$R("`P>$$T030@(#!X031!-B`@,'A!
M-$$X("`P>$$T04$@(#!X,#`P02`@"G=I9'1H.@HR(#(@,B`R(#(@,B`Q(#$@
=,2`Q(#(@,B`R(#(@,B`P(`IW8W-W:61T:#TR-@HR
`
end

View File

@ -0,0 +1,6 @@
# $NetBSD: ja_JP.eucJP.in.uu,v 1.1 2002/09/11 14:54:34 minoura Exp $
begin 644 ja_JP.eucJP.in
;H\6CU:/#I,>DN:&C86%A8:2BI*2DIJ2HI*H*
`
end

View File

@ -0,0 +1,6 @@
# $NetBSD: C.in.uu,v 1.1 2002/09/11 14:54:34 minoura Exp $
begin 664 C.in
,04)#1#`Q,C,T7UP*
`
end

View File

@ -0,0 +1,27 @@
# $NetBSD: Makefile,v 1.1 2002/09/11 14:54:34 minoura Exp $
PROG= mbrtowc
NOMAN= # defined
TESTS= C en_US.UTF-8 ja_JP.ISO2022-JP2 ja_JP.SJIS ja_JP.eucJP
INPUTS= ${TESTS:S/$/.in/}
OUTPUTS= ${TESTS:S/$/.out/}
CLEANFILES+= ${OUTPUTS} ${INPUTS}
regress: ${PROG} ${TESTS}
.PHONY: ${TESTS}
.for L in ${TESTS}
$L: $L.in
@env LC_CTYPE=$L LC_ALL= LANG= ./${PROG} `cat ${.ALLSRC}` > $L.out
.endfor
# paranoia: protect against non-ASCII characters
.for L in ${TESTS}
$L.in: $L.in.uu
uudecode ${.ALLSRC}
.endfor
.include <bsd.prog.mk>

View File

@ -0,0 +1,7 @@
# $NetBSD: en_US.UTF-8.in.uu,v 1.1 2002/09/11 14:54:35 minoura Exp $
begin 664 en_US.UTF-8.in
M6P%_75O"@-^_75O@H(#OO[]=6_"0@(#WO[^_75OXB("`@/N_O[^_75O\A("`
*@(#]O[^_O[]="EO@
`
end

View File

@ -0,0 +1,6 @@
# $NetBSD: ja_JP.ISO2022-JP2.in.uu,v 1.1 2002/09/11 14:54:35 minoura Exp $
begin 664 ja_JP.ISO2022-JP2.in
?&R1"1GQ+7#AL&RA"01LD0B0B&RA"0ALD0B0D&RA""@!4
`
end

View File

@ -0,0 +1,6 @@
# $NetBSD: ja_JP.SJIS.in.uu,v 1.1 2002/09/11 14:54:35 minoura Exp $
begin 664 ja_JP.SJIS.in
-D_J6>XSJ08*@0H*B"@``
`
end

View File

@ -0,0 +1,6 @@
# $NetBSD: ja_JP.eucJP.in.uu,v 1.1 2002/09/11 14:54:35 minoura Exp $
begin 664 ja_JP.eucJP.in
-QOS+W+CL0:2B0J2D"@``
`
end

View File

@ -0,0 +1,122 @@
/* $NetBSD: mbrtowc.c,v 1.1 2002/09/11 14:54:35 minoura Exp $ */
/*
* test code for mbrtowc
* by YAMAMOTO Takashi
*
* this file uses following mb/ws functions.
* setlocale, mbrtowc, mbsrtowcs, mbsinit, wcscmp
*/
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>
#include <assert.h>
#include <errno.h>
#include <sys/types.h>
#define WBSIZE 100
/*
* test mbrtowc
*/
int test_mbrtowc(char const *text)
{
wchar_t* wbuf[10];
//wchar_t wbuf[10][WBSIZE];
size_t rv;
size_t n;
wchar_t *dst;
mbstate_t *stp;
#ifdef USE_MBSTATE
mbstate_t st;
memset(&st, 0, sizeof(st));
// mbrtowc(0, 0, 0, &st); /* XXX for ISO2022-JP */
stp = &st;
#else
stp = 0;
#endif
for (n = 0; n<10; n++) {
wbuf[n] = malloc(sizeof(wchar_t)*WBSIZE);
assert(wbuf[n]);
memset(wbuf[n], 0xff, sizeof(wchar_t)*WBSIZE);
}
for (n = 9; n>0; n--) {
int m;
char const *src = text;
assert(mbsinit(stp));
printf("n = %u:\t", n);
dst = wbuf[n];
m = n;
for (;;) {
rv = mbrtowc(dst, src, m, stp);
printf("%d ", rv);
if (rv == 0) {
printf("(%d chars)", dst - wbuf[n]);
printf("(%x)", (u_int)*dst);
assert(!*dst);
break;
}
if (rv == (size_t)-2) {
src += m;
continue;
}
if (rv == (size_t)-1) {
assert(errno == EILSEQ);
break;
}
printf("(%x) ", (u_int)*dst);
src += rv;
dst ++;
}
printf("\n");
}
{
wchar_t *pwc;
size_t rv, len;
char const *src = text;
rv = mbsrtowcs(wbuf[0], &src, WBSIZE, 0);
assert(!src);
printf("mbsrtowcs: ");
for (pwc=wbuf[0], len=0; *pwc; pwc++, len++) {
printf("(%x) ", (u_int)*pwc);
}
assert(len == rv);
printf("(%d chars)\n", len);
}
for (n = 1; n<10; n++) {
if (wcscmp(wbuf[n], wbuf[0])) {
fprintf(stderr, "err:%d\n", n);
return EXIT_FAILURE;
}
}
fprintf(stderr, "ok\n");
return EXIT_SUCCESS;
}
int
main(int argc, char**argv)
{
char *loc;
loc = setlocale(LC_ALL, "");
if (loc)
fprintf(stderr, "===> Testing for locale %s... ", loc);
else
return EXIT_FAILURE;
if (argc == 2)
return test_mbrtowc(argv[1]);
return EXIT_FAILURE;
}

View File

@ -0,0 +1,29 @@
# $NetBSD: Makefile,v 1.1 2002/09/11 14:54:35 minoura Exp $
PROG= mbrtowc
NOMAN= # defined
CPPFLAGS+= -DUSE_MBSTATE
.PATH: ${.CURDIR}/../ctype2
TESTS= C en_US.UTF-8 ja_JP.ISO2022-JP2 ja_JP.SJIS ja_JP.eucJP
INPUTS= ${TESTS:S/$/.in/}
OUTPUTS= ${TESTS:S/$/.out/}
CLEANFILES+= ${OUTPUTS} ${INPUTS}
regress: ${PROG} ${TESTS}
.PHONY: ${TESTS}
.for L in ${TESTS}
$L: $L.in
@env LC_CTYPE=$L LC_ALL= LANG= ./${PROG} `cat ${.ALLSRC}` > $L.out
.endfor
# paranoia: protect against non-ASCII characters
.for L in ${TESTS}
$L.in: $L.in.uu
uudecode ${.ALLSRC}
.endfor
.include <bsd.prog.mk>