scc

A fork of https://git.simple-cc.org/scc/ for Qute

git clone https://git.8pit.net/scc.git

 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/*
11output:
12testing
13testing mbrtowc1
14testing mbrtowc2
15testing mbtowc
16done
17end:
18*/
19
20#define NELEM(x) (sizeof(x)/sizeof(x[0]))
21
22void
23tests_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
54void
55tests_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
70int
71main()
72{
73	puts("testing");
74	tests_mbrtowc();
75	tests_mbtowc();
76	puts("done");
77	return 0;
78}