1#include <assert.h>2#include <errno.h>3#include <stdio.h>4#include <stdlib.h>5#include <string.h>6#include <wchar.h>78#include "mbtest.h"910/*11output:12testing13testing mbrtowc114testing mbrtowc215testing mbtowc16done17end:18*/1920#define NELEM(x) (sizeof(x)/sizeof(x[0]))2122void23tests_mbrtowc(void)24{25 struct mbtest *tp;26 int r;27 mbstate_t s;2829 puts("testing mbrtowc1");30 for (tp = tests; tp < &tests[NELEM(tests)]; ++tp) {31 wc = -1;32 errno = 0;33 r = mbrtowc(tp->pwc, tp->s, tp->l, NULL);34 assert(tp->rmbr == r);35 assert(tp->syserr == errno);36 if (tp->rmbr != -1)37 assert(tp->wc == wc);38 }3940 puts("testing mbrtowc2");41 memset(&s, 0, sizeof(s));42 for (tp = tests; tp < &tests[NELEM(tests)]; ++tp) {43 wc = -1;44 errno = 0;45 r = mbrtowc(tp->pwc, tp->s, tp->l, &s);46 assert(tp->rmbr == r);47 assert(tp->syserr == errno);48 if (tp->rmbr != -1)49 assert(tp->wc == wc);50 assert(mbsinit(&s) != 0 == tp->mbstate);51 }52}5354void55tests_mbtowc(void)56{57 struct mbtest *tp;58 int r, rt;5960 puts("testing mbtowc");61 for (tp = tests; tp < &tests[NELEM(tests)]; ++tp) {62 wc = -1;63 r = mbtowc(tp->pwc, tp->s, tp->l);64 assert(tp->rmb == r);65 if (tp->rmb >= 0)66 assert(tp->wc == wc);67 }68}6970int71main()72{73 puts("testing");74 tests_mbrtowc();75 tests_mbtowc();76 puts("done");77 return 0;78}