Regression tests for libc locale (LC_CTYPE) functions.
Based on Citrus repository xpg4dl/test/*, written by tshiozak and yamt.
This commit is contained in:
parent
b240241362
commit
a2bb3221ba
|
@ -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>
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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>
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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>
|
Loading…
Reference in New Issue