annotate tests/test-unicode.c @ 28:f06312a7432b

cmake: enable tests
author David Demelier <markand@malikania.fr>
date Tue, 07 Feb 2023 14:30:33 +0100
parents 4da5819148c6
children 303403de1314
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
2 * unicode.c -- main test file for unicode
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
27
4da5819148c6 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 24
diff changeset
4 * Copyright (c) 2013-2023 David Demelier <markand@malikania.fr>
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <errno.h>
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
21 #include <dt.h>
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include "unicode.h"
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 /*
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 * /!\ Be sure to keep this file with UTF-8 encoding /!\
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 */
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 static size_t
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 u32len(const uint32_t *s)
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 {
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 size_t t = 0;
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
33
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 while (*s++)
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 ++t;
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 return t;
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
39
14
153c09cc6dcb misc: miscellaneous cleanups for 2021
David Demelier <markand@malikania.fr>
parents: 12
diff changeset
40 static int
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 u32cmp(const uint32_t *s1, const uint32_t *s2)
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 {
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 const size_t l1 = u32len(s1);
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 const size_t l2 = u32len(s2);
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
45
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 return l1 == l2 && memcmp(s1, s2, l1) == 0;
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
49 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
50 uni8_encode_simple(void)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
51 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
52 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
53
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
54 /* a -> 1 bytes. */
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
55 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
56 uint8_t buffer[5] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
57
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
58 r = uni8_encode(buffer, sizeof (buffer), U'a');
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
59 DT_EQ_INT(r, 1);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
60 DT_EQ_STR((const char *)buffer, (const char *)u8"a");
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
61 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
62
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
63 /* é -> 2 bytes. */
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
64 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
65 uint8_t buffer[5] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
66
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
67 r = uni8_encode(buffer, sizeof (buffer), U'é');
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
68 DT_EQ_INT(r, 2);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
69 DT_EQ_STR((const char *)buffer, (const char *)u8"é");
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
70 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
71 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
73 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
74 uni8_encode_invalid(void)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 {
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
76 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
77 uint8_t buffer[5] = { 0 };
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
78
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
79 r = uni8_encode(buffer, sizeof (buffer), 0xffffffff);
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
80 DT_EQ_SIZE(r, (size_t)-1);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
81 DT_EQ_INT(errno, EILSEQ);
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
83
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
84 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
85 uni8_encode_toosmall(void)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
86 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
87 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
88 uint8_t buffer[1] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
89
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
90 r = uni8_encode(buffer, sizeof (buffer), U'é');
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
91 DT_EQ_SIZE(r, (size_t)-1);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
92 DT_EQ_INT(errno, ERANGE);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
93 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
94
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
95 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
96 uni8_decode_simple(void)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 {
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
98 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
99
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
100 /* a -> 1 bytes. */
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
101 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
102 uint32_t code = -1;
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
103
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
104 r = uni8_decode((const uint8_t *)u8"a", &code);
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
105 DT_EQ_SIZE(r, 1U);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
106 DT_EQ_INT(code, 'a');
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
107 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
108
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
109 /* é -> 2 bytes. */
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
110 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
111 uint32_t code = -1;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
112
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
113 r = uni8_decode((const uint8_t *)u8"é", &code);
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
114 DT_EQ_SIZE(r, 2U);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
115 DT_EQ_INT(code, U'é');
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
116 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
118
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
119 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
120 uni8_decode_invalid(void)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
121 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
122 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
123
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
124 /* Invalid UTF-8 sequence. */
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
125 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
126 uint32_t code = -1;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
127
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
128 r = uni8_decode((const uint8_t *)u8"\xff""a", &code);
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
129 DT_EQ_SIZE(r, (size_t)-1);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
130 DT_EQ_SIZE(code, (uint32_t)-1);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
131 DT_EQ_INT(errno, EILSEQ);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
132 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
133
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
134 /* Valid "€" but unfinished sequence. */
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
135 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
136 uint32_t code = -1;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
137
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
138 r = uni8_decode((const uint8_t []){ -30, 0 }, &code);
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
139 DT_EQ_SIZE(r, (size_t)-1);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
140 DT_EQ_SIZE(code, (uint32_t)-1);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
141 DT_EQ_INT(errno, EILSEQ);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
142 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
143 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
144
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
145 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
146 uni8_sizeof_simple(void)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
148 DT_EQ_INT(uni8_sizeof(u8"a"[0]), 1U);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
149 DT_EQ_INT(uni8_sizeof(u8"é"[0]), 2U);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
150 DT_EQ_INT(uni8_sizeof(u8"€"[0]), 3U);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
151 DT_EQ_INT(uni8_sizeof(u8"𐍈"[0]), 4U);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
152 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
153
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
154 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
155 uni8_sizeof_invalid(void)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
156 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
157 DT_EQ_SIZE((size_t)-1, uni8_sizeof(u8"\xff"[0]));
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
158 DT_EQ_INT(errno, EILSEQ);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
159 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
160
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
161 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
162 uni8_length_simple(void)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
163 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
164 DT_EQ_SIZE(uni8_length((const uint8_t *)"abc"), 3U);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
165 DT_EQ_SIZE(uni8_length((const uint8_t *)"5€"), 2U);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
166 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
167
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
168 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
169 uni8_length_invalid(void)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
170 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
171 DT_EQ_SIZE((size_t)-1, uni8_length((const uint8_t *)"a""\xff""b"));
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
172 DT_EQ_INT(errno, EILSEQ);
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
174
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
175 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
176 uni8_to32_simple(void)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 {
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
178 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
179
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
180 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
181 uint32_t buffer[10] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
182 uint32_t expected[] = { U'a', U'b', U'c', 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
183
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
184 r = uni8_to32((const uint8_t *)"abc", buffer, 10);
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
185 DT_EQ_SIZE(r, 3U);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
186 DT_ASSERT(u32cmp(buffer, expected));
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
187 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
188
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
189 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
190 uint32_t buffer[10] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
191 uint32_t expected[] = { U'a', U'é', U'c', 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
192
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
193 r = uni8_to32((const uint8_t *)"aéc", buffer, 10);
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
194 DT_EQ_SIZE(r, 3);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
195 DT_ASSERT(u32cmp(buffer, expected));
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
196 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
198
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
199 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
200 uni8_to32_invalid(void)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
201 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
202 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
203 uint32_t buffer[10] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
204
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
205 /* Invalid UTF-8 sequence. */
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
206 r = uni8_to32((const uint8_t *)u8"\xff""a", buffer, 10);
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
207 DT_EQ_SIZE(r, (size_t)-1);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
208 DT_EQ_INT(errno, EILSEQ);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
209
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
210 /* Valid "€" but unfinished sequence. */
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
211 r = uni8_to32((const uint8_t []){ -30, 0 }, buffer, 10);
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
212 DT_EQ_SIZE(r, (size_t)-1);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
213 DT_EQ_INT(errno, EILSEQ);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
214 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
215
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
216 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
217 uni8_to32_toosmall(void)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
218 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
219 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
220 uint32_t buffer[4] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
221
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
222 r = uni8_to32((const uint8_t *)u8"bonjour à tous", buffer, 1);
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
223 DT_EQ_SIZE(r, (size_t)-1);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
224 DT_EQ_INT(errno, ERANGE);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
225 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
226
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
227 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
228 uni32_sizeof_simple(void)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
229 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
230 DT_EQ_SIZE(uni32_sizeof(U'a'), 1);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
231 DT_EQ_SIZE(uni32_sizeof(U'é'), 2);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
232 DT_EQ_SIZE(uni32_sizeof(U'€'), 3);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
233 DT_EQ_SIZE(uni32_sizeof(U'𐍈'), 4);
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
235
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
236 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
237 uni32_sizeof_invalid(void)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
238 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
239 DT_EQ_SIZE((size_t)-1, uni32_sizeof(0xffffffff));
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
240 DT_EQ_INT(errno, EILSEQ);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
241 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
242
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
243 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
244 uni32_length_simple(void)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
245 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
246 DT_EQ_SIZE(uni32_length((const uint32_t []){ U'a', U'é', U'c', 0 }), 3U);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
247 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
248
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
249 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
250 uni32_requires_simple(void)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
251 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
252 DT_EQ_SIZE(uni32_requires(U"abc"), 3U);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
253 DT_EQ_SIZE(uni32_requires(U"é€𐍈"), 9U);
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
255
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
256 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
257 uni32_requires_invalid(void)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
258 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
259 DT_EQ_SIZE((size_t)-1, uni32_requires(U"\xffffffff"));
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
260 DT_EQ_INT(errno, EILSEQ);
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
261 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
262
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
263 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
264 uni32_to8_simple(void)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 {
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
266 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
267
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
268 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
269 uint8_t buffer[10] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
270
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
271 r = uni32_to8(U"abc", buffer, sizeof (buffer));
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
272 DT_EQ_SIZE(r, 3U);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
273 DT_EQ_STR((const char *)buffer, (const char *)u8"abc");
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
274 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
275
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
276 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
277 uint8_t buffer[20] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
278
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
279 r = uni32_to8(U"ça va, 5€ ?", buffer, sizeof (buffer));
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
280 DT_EQ_SIZE(r, 14U);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
281 DT_EQ_STR((const char *)buffer, (const char *)u8"ça va, 5€ ?");
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
282 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
283 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
284
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
285 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
286 uni32_to8_invalid(void)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
287 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
288 uint8_t buffer[10] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
289
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
290 DT_EQ_SIZE(uni32_to8(U"\xffffffff", buffer, sizeof (buffer)), (size_t)-1);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
291 DT_EQ_INT(errno, EILSEQ);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
292 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
293
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
294 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
295 uni32_to8_toosmall(void)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
296 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
297 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
298 uint8_t buffer[3] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
299
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
300 r = uni32_to8(U"ça va ?", buffer, sizeof (buffer));
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
301 DT_EQ_SIZE(r, (size_t)-1);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
302 DT_EQ_INT(errno, ERANGE);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
303 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
304
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
305 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
306 misc_isalpha(void)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
307 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
308 DT_ASSERT(uni_isalpha(U'é'));
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
309 DT_ASSERT(!uni_isalpha(U'€'));
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
310 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
311
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
312 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
313 misc_isdigit(void)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
315 DT_ASSERT(uni_isdigit(U'۱'));
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
316 DT_ASSERT(!uni_isdigit(U'€'));
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
317 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
318
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
319 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
320 misc_islower(void)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
321 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
322 DT_ASSERT(uni_islower(U'a'));
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
323 DT_ASSERT(uni_islower(U'é'));
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
324 DT_ASSERT(!uni_islower(U'A'));
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
325 DT_ASSERT(!uni_islower(U'É'));
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
326 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
327
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
328 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
329 misc_isspace(void)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
330 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
331 DT_ASSERT(uni_isspace(U' '));
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
332 DT_ASSERT(!uni_isspace(U'é'));
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
333 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
334
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
335 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
336 misc_istitle(void)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
337 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
338 DT_ASSERT(uni_istitle(U'Dž'));
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
339 DT_ASSERT(!uni_istitle(U'€'));
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
340 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
341
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
342 static void
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
343 misc_isupper(void)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
344 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
345 DT_ASSERT(!uni_isupper('a'));
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
346 DT_ASSERT(!uni_isupper(U'é'));
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
347 DT_ASSERT(uni_isupper('A'));
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
348 DT_ASSERT(uni_isupper(U'É'));
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
349 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
350
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
351 int
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
352 main(int argc, char **argv)
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
353 {
28
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
354 DT_RUN(uni8_encode_simple);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
355 DT_RUN(uni8_encode_invalid);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
356 DT_RUN(uni8_encode_toosmall);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
357 DT_RUN(uni8_decode_simple);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
358 DT_RUN(uni8_decode_invalid);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
359 DT_RUN(uni8_sizeof_simple);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
360 DT_RUN(uni8_sizeof_invalid);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
361 DT_RUN(uni8_length_simple);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
362 DT_RUN(uni8_length_invalid);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
363 DT_RUN(uni8_to32_simple);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
364 DT_RUN(uni8_to32_invalid);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
365 DT_RUN(uni8_to32_toosmall);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
366 DT_RUN(uni32_sizeof_simple);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
367 DT_RUN(uni32_sizeof_invalid);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
368 DT_RUN(uni32_length_simple);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
369 DT_RUN(uni32_requires_simple);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
370 DT_RUN(uni32_requires_invalid);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
371 DT_RUN(uni32_to8_simple);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
372 DT_RUN(uni32_to8_invalid);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
373 DT_RUN(uni32_to8_toosmall);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
374 DT_RUN(misc_isalpha);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
375 DT_RUN(misc_isdigit);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
376 DT_RUN(misc_islower);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
377 DT_RUN(misc_isspace);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
378 DT_RUN(misc_istitle);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
379 DT_RUN(misc_isupper);
f06312a7432b cmake: enable tests
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
380 DT_SUMMARY();
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
381 }