scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

0041-mbrlen.c (1078B)


      1 #include <assert.h>
      2 #include <errno.h>
      3 #include <stdio.h>
      4 #include <stdlib.h>
      5 #include <string.h>
      6 #include <wchar.h>
      7 
      8 #include "mbtest.h"
      9 
     10 /*
     11 output:
     12 testing
     13 testing mbrlen1
     14 testing mbrlen2
     15 testing mblen
     16 done
     17 end:
     18 */
     19 
     20 #define NELEM(x) (sizeof(x)/sizeof(x[0]))
     21 
     22 void
     23 tests_mbrlen(void)
     24 {
     25 	struct mbtest *tp;
     26 	int r;
     27 	mbstate_t s;
     28 
     29 	puts("testing mbrlen1");
     30 	for (tp = tests; tp < &tests[NELEM(tests)]; ++tp) {
     31 		wc = -1;
     32 		errno = 0;
     33 		r = mbrlen(tp->s, tp->l, NULL);
     34 		assert(tp->rmbr == r);
     35 		assert(tp->syserr == errno);
     36 	}
     37 
     38 	puts("testing mbrlen2");
     39 	memset(&s, 0, sizeof(s));
     40 	for (tp = tests; tp < &tests[NELEM(tests)]; ++tp) {
     41 		wc = -1;
     42 		errno = 0;
     43 		r = mbrlen(tp->s, tp->l, &s);
     44 		assert(tp->rmbr == r);
     45 		assert(tp->syserr == errno);
     46 		assert(mbsinit(&s) != 0 == tp->mbstate);
     47 	}
     48 }
     49 
     50 void
     51 tests_mblen(void)
     52 {
     53 	struct mbtest *tp;
     54 	int r, rt;
     55 
     56 	puts("testing mblen");
     57 	for (tp = tests; tp < &tests[NELEM(tests)]; ++tp) {
     58 		r = mblen(tp->s, tp->l);
     59 		assert(tp->rmb == r);
     60 	}
     61 }
     62 
     63 int
     64 main()
     65 {
     66 	puts("testing");
     67 	tests_mbrlen();
     68 	tests_mblen();
     69 	puts("done");
     70 	return 0;
     71 }