0039-mbrtowc.c - scc - simple c99 compiler
 (HTM) git clone git://git.simple-cc.org/scc
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
       0039-mbrtowc.c (1268B)
       ---
            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 mbrtowc1
           14 testing mbrtowc2
           15 testing mbtowc
           16 done
           17 end:
           18 */
           19 
           20 #define NELEM(x) (sizeof(x)/sizeof(x[0]))
           21 
           22 void
           23 tests_mbrtowc(void)
           24 {
           25         struct mbtest *tp;
           26         int r;
           27         mbstate_t s;
           28 
           29         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         }
           39 
           40         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 }
           53 
           54 void
           55 tests_mbtowc(void)
           56 {
           57         struct mbtest *tp;
           58         int r, rt;
           59 
           60         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 }
           69 
           70 int
           71 main()
           72 {
           73         puts("testing");
           74         tests_mbrtowc();
           75         tests_mbtowc();
           76         puts("done");
           77         return 0;
           78 }