annotate tests/test-unicode.c @ 21:887a8fd73d1e

cmake: add support
author David Demelier <markand@malikania.fr>
date Mon, 21 Mar 2022 09:18:14 +0100
parents test/unicode.c@91879958b74d
children 4983392b356f
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 *
19
91879958b74d misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
4 * Copyright (c) 2013-2022 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
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
21 #include <rexo.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
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
49 RX_TEST_CASE(uni8_encode, simple)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
50 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
51 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
52
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
53 /* a -> 1 bytes. */
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
54 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
55 uint8_t buffer[5] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
56
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
57 r = uni8_encode(buffer, sizeof (buffer), U'a');
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
58 RX_INT_REQUIRE_EQUAL(r, 1);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
59 RX_STR_REQUIRE_EQUAL((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
60 }
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 /* é -> 2 bytes. */
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
63 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
64 uint8_t buffer[5] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
65
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
66 r = uni8_encode(buffer, sizeof (buffer), U'é');
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
67 RX_INT_REQUIRE_EQUAL(r, 2);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
68 RX_STR_REQUIRE_EQUAL((const char *)buffer, (const char *)u8"é");
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
69 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
70 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
71
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
72 RX_TEST_CASE(uni8_encode, invalid)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 {
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
74 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
75 uint8_t buffer[5] = { 0 };
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
76
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
77 r = uni8_encode(buffer, sizeof (buffer), 0xffffffff);
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
78 RX_UINT_REQUIRE_EQUAL(r, (size_t)-1);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
79 RX_INT_REQUIRE_EQUAL(errno, EILSEQ);
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
82 RX_TEST_CASE(uni8_encode, toosmall)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
83 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
84 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
85 uint8_t buffer[1] = { 0 };
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 r = uni8_encode(buffer, sizeof (buffer), U'é');
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
88 RX_UINT_REQUIRE_EQUAL(r, (size_t)-1);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
89 RX_INT_REQUIRE_EQUAL(errno, ERANGE);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
90 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
91
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
92 RX_TEST_CASE(unit8_decode, simple)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 {
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
94 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
95
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
96 /* a -> 1 bytes. */
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
97 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
98 uint32_t code = -1;
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
99
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
100 r = uni8_decode((const uint8_t *)u8"a", &code);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
101 RX_UINT_REQUIRE_EQUAL(r, 1U);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
102 RX_INT_REQUIRE_EQUAL(code, 'a');
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
103 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
104
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
105 /* é -> 2 bytes. */
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
106 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
107 uint32_t code = -1;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
108
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
109 r = uni8_decode((const uint8_t *)u8"é", &code);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
110 RX_UINT_REQUIRE_EQUAL(r, 2U);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
111 RX_INT_REQUIRE_EQUAL(code, U'é');
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
112 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
114
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
115 RX_TEST_CASE(uni8_decode, invalid)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
116 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
117 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
118
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
119 /* Invalid UTF-8 sequence. */
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
120 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
121 uint32_t code = -1;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
122
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
123 r = uni8_decode((const uint8_t *)u8"\xff""a", &code);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
124 RX_UINT_REQUIRE_EQUAL(r, (size_t)-1);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
125 RX_UINT_REQUIRE_EQUAL(code, (uint32_t)-1);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
126 RX_INT_REQUIRE_EQUAL(errno, EILSEQ);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
127 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
128
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
129 /* Valid "€" but unfinished sequence. */
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
130 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
131 uint32_t code = -1;
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 r = uni8_decode((const uint8_t []){ -30, 0 }, &code);
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
134 RX_UINT_REQUIRE_EQUAL(r, (size_t)-1);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
135 RX_UINT_REQUIRE_EQUAL(code, (uint32_t)-1);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
136 RX_INT_REQUIRE_EQUAL(errno, EILSEQ);
11
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 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
139
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
140 RX_TEST_CASE(uni8_sizeof, simple)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
142 RX_INT_REQUIRE_EQUAL(uni8_sizeof(u8"a"[0]), 1U);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
143 RX_INT_REQUIRE_EQUAL(uni8_sizeof(u8"é"[0]), 2U);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
144 RX_INT_REQUIRE_EQUAL(uni8_sizeof(u8"€"[0]), 3U);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
145 RX_INT_REQUIRE_EQUAL(uni8_sizeof(u8"𐍈"[0]), 4U);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
146 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
147
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
148 RX_TEST_CASE(uni8_sizeof, invalid)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
149 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
150 RX_UINT_REQUIRE_EQUAL((size_t)-1, uni8_sizeof(u8"\xff"[0]));
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
151 RX_INT_REQUIRE_EQUAL(errno, EILSEQ);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
152 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
153
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
154 RX_TEST_CASE(uni8_length, simple)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
155 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
156 RX_UINT_REQUIRE_EQUAL(uni8_length((const uint8_t *)"abc"), 3U);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
157 RX_UINT_REQUIRE_EQUAL(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
158 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
159
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
160 RX_TEST_CASE(uni8_length, invalid)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
161 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
162 RX_UINT_REQUIRE_EQUAL((size_t)-1, uni8_length((const uint8_t *)"a""\xff""b"));
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
163 RX_INT_REQUIRE_EQUAL(errno, EILSEQ);
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
165
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
166 RX_TEST_CASE(uni8_to32, simple)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 {
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
168 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
169
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
170 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
171 uint32_t buffer[10] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
172 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
173
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
174 r = uni8_to32((const uint8_t *)"abc", buffer, 10);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
175 RX_UINT_REQUIRE_EQUAL(r, 3U);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
176 RX_REQUIRE(u32cmp(buffer, expected));
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
177 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
178
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 uint32_t buffer[10] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
181 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
182
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
183 r = uni8_to32((const uint8_t *)"aéc", buffer, 10);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
184 RX_UINT_REQUIRE_EQUAL(r, 3);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
185 RX_REQUIRE(u32cmp(buffer, expected));
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
186 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
188
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
189 RX_TEST_CASE(uni8_to32, invalid)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
190 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
191 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
192 uint32_t buffer[10] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
193
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
194 /* Invalid UTF-8 sequence. */
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
195 r = uni8_to32((const uint8_t *)u8"\xff""a", buffer, 10);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
196 RX_UINT_REQUIRE_EQUAL(r, (size_t)-1);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
197 RX_INT_REQUIRE_EQUAL(errno, EILSEQ);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
198
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
199 /* Valid "€" but unfinished sequence. */
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
200 r = uni8_to32((const uint8_t []){ -30, 0 }, buffer, 10);
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
201 RX_UINT_REQUIRE_EQUAL(r, (size_t)-1);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
202 RX_INT_REQUIRE_EQUAL(errno, EILSEQ);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
203 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
204
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
205 RX_TEST_CASE(uni8_to32, toosmall)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
206 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
207 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
208 uint32_t buffer[4] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
209
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
210 r = uni8_to32((const uint8_t *)u8"bonjour à tous", buffer, 1);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
211 RX_UINT_REQUIRE_EQUAL(r, (size_t)-1);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
212 RX_INT_REQUIRE_EQUAL(errno, ERANGE);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
213 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
214
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
215 RX_TEST_CASE(uni32_sizeof, simple)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
216 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
217 RX_UINT_REQUIRE_EQUAL(uni32_sizeof(U'a'), 1);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
218 RX_UINT_REQUIRE_EQUAL(uni32_sizeof(U'é'), 2);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
219 RX_UINT_REQUIRE_EQUAL(uni32_sizeof(U'€'), 3);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
220 RX_UINT_REQUIRE_EQUAL(uni32_sizeof(U'𐍈'), 4);
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
222
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
223 RX_TEST_CASE(uni32_sizeof, invalid)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
224 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
225 RX_UINT_REQUIRE_EQUAL((size_t)-1, uni32_sizeof(0xffffffff));
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
226 RX_INT_REQUIRE_EQUAL(errno, EILSEQ);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
227 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
228
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
229 RX_TEST_CASE(uni32_length, simple)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
230 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
231 RX_UINT_REQUIRE_EQUAL(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
232 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
233
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
234 RX_TEST_CASE(uni32_requires, simple)
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
235 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
236 RX_UINT_REQUIRE_EQUAL(uni32_requires(U"abc"), 3U);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
237 RX_UINT_REQUIRE_EQUAL(uni32_requires(U"é€𐍈"), 9U);
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
239
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
240 RX_TEST_CASE(uni32_requires, invalid)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
242 RX_UINT_REQUIRE_EQUAL((size_t)-1, uni32_requires(U"\xffffffff"));
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
243 RX_INT_REQUIRE_EQUAL(errno, EILSEQ);
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
245
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
246 RX_TEST_CASE(uni32_to8, simple)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 {
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
248 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
249
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
250 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
251 uint8_t buffer[10] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
252
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
253 r = uni32_to8(U"abc", buffer, sizeof (buffer));
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
254 RX_UINT_REQUIRE_EQUAL(r, 3U);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
255 RX_STR_REQUIRE_EQUAL((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
256 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
257
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
258 {
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
259 uint8_t buffer[20] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
260
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
261 r = uni32_to8(U"ça va, 5€ ?", buffer, sizeof (buffer));
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
262 RX_UINT_REQUIRE_EQUAL(r, 14U);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
263 RX_STR_REQUIRE_EQUAL((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
264 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
266
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
267 RX_TEST_CASE(uni32_to8, invalid)
11
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
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
271 RX_INT_REQUIRE_EQUAL(uni32_to8(U"\xffffffff", buffer, sizeof (buffer)), (size_t)-1);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
272 RX_UINT_REQUIRE_EQUAL(errno, EILSEQ);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
273 }
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
274
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
275 RX_TEST_CASE(uni32_to8, toosmall)
11
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 size_t r;
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
278 uint8_t buffer[3] = { 0 };
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
279
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
280 r = uni32_to8(U"ça va ?", buffer, sizeof (buffer));
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
281 RX_UINT_REQUIRE_EQUAL(r, (size_t)-1);
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
282 RX_INT_REQUIRE_EQUAL(errno, ERANGE);
11
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
283 }
43a9d763656b unicode: improve C API, removing dynamic allocations
David Demelier <markand@malikania.fr>
parents: 10
diff changeset
284
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
285 RX_TEST_CASE(misc, isalpha)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
286 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
287 RX_REQUIRE(uni_isalpha(U'é'));
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
288 RX_REQUIRE(!uni_isalpha(U'€'));
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
289 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
290
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
291 RX_TEST_CASE(misc, isdigit)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
293 RX_REQUIRE(uni_isdigit(U'۱'));
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
294 RX_REQUIRE(!uni_isdigit(U'€'));
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
295 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
296
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
297 RX_TEST_CASE(misc, islower)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
298 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
299 RX_REQUIRE(uni_islower(U'a'));
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
300 RX_REQUIRE(uni_islower(U'é'));
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
301 RX_REQUIRE(!uni_islower(U'A'));
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
302 RX_REQUIRE(!uni_islower(U'É'));
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
303 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
304
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
305 RX_TEST_CASE(misc, isspace)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
306 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
307 RX_REQUIRE(uni_isspace(U' '));
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
308 RX_REQUIRE(!uni_isspace(U'é'));
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
309 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
310
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
311 RX_TEST_CASE(misc, istitle)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
312 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
313 RX_REQUIRE(uni_istitle(U'Dž'));
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
314 RX_REQUIRE(!uni_istitle(U'€'));
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
315 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
316
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
317 RX_TEST_CASE(misc, isupper)
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
318 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
319 RX_REQUIRE(!uni_isupper('a'));
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
320 RX_REQUIRE(!uni_isupper(U'é'));
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
321 RX_REQUIRE(uni_isupper('A'));
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
322 RX_REQUIRE(uni_isupper(U'É'));
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
323 }
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
324
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
325 int
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
326 main(int argc, char **argv)
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
327 {
18
9b2038be6af4 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 14
diff changeset
328 return rx_main(0, NULL, argc, (const char **)argv) == RX_SUCCESS ? 0 : 1;
10
ae1003c2a284 misc: extreme simplification
David Demelier <markand@malikania.fr>
parents:
diff changeset
329 }