1#include <stdio.h>
2#include <stdlib.h>
3
4
5int
6main(int argc, char *argv[])
7{
8	wchar_t w[10];
9	char c[10];
10	int i;
11	int lose = 0;
12
13	i = mbstowcs(w, "bar", 4);
14	if (!(i == 3 && w[1] == 'a')) {
15		puts("mbstowcs FAILED!");
16		lose = 1;
17	}
18
19	mbstowcs(w, "blah", 5);
20	i = wcstombs(c, w, 10);
21	if (i != 4) {
22		puts("wcstombs FAILED!");
23		lose = 1;
24	}
25
26	if (mblen("foobar", 7) != 1) {
27		puts("mblen 1 FAILED!");
28		lose = 1;
29	}
30
31	if (mblen("", 1) != 0) {
32		puts("mblen 2 FAILED!");
33		lose = 1;
34	}
35
36	{
37		int r;
38		char c = 'x';
39		wchar_t wc;
40		char mbc[MB_CUR_MAX];
41
42		if ((r = mbtowc(&wc, &c, MB_CUR_MAX)) <= 0) {
43			printf("conversion to wide failed, result: %d\n", r);
44			lose = 1;
45		} else {
46			printf("wide value: 0x%04lx\n", (unsigned long) wc);
47			mbc[0] = '\0';
48			if ((r = wctomb(mbc, wc)) <= 0) {
49				printf("conversion to multibyte failed, result: %d\n", r);
50				lose = 1;
51			}
52		}
53
54	}
55
56	puts(lose ? "Test FAILED!" : "Test succeeded.");
57	return lose;
58}
59