Blame


1 3448adb0 2022-11-02 op /* See LICENSE file for copyright and license details. */
2 3448adb0 2022-11-02 op #ifndef UTIL_H
3 3448adb0 2022-11-02 op #define UTIL_H
4 3448adb0 2022-11-02 op
5 3448adb0 2022-11-02 op #include "../gen/types.h"
6 3448adb0 2022-11-02 op #include "../grapheme.h"
7 3448adb0 2022-11-02 op
8 3448adb0 2022-11-02 op #undef MIN
9 3448adb0 2022-11-02 op #define MIN(x,y) ((x) < (y) ? (x) : (y))
10 3448adb0 2022-11-02 op #undef LEN
11 3448adb0 2022-11-02 op #define LEN(x) (sizeof(x) / sizeof(*(x)))
12 3448adb0 2022-11-02 op
13 3448adb0 2022-11-02 op struct unit_test_next_break {
14 3448adb0 2022-11-02 op const char *description;
15 3448adb0 2022-11-02 op struct {
16 3448adb0 2022-11-02 op const uint_least32_t *src;
17 3448adb0 2022-11-02 op size_t srclen;
18 3448adb0 2022-11-02 op } input;
19 3448adb0 2022-11-02 op struct {
20 3448adb0 2022-11-02 op size_t ret;
21 3448adb0 2022-11-02 op } output;
22 3448adb0 2022-11-02 op };
23 3448adb0 2022-11-02 op
24 3448adb0 2022-11-02 op struct unit_test_next_break_utf8 {
25 3448adb0 2022-11-02 op const char *description;
26 3448adb0 2022-11-02 op struct {
27 3448adb0 2022-11-02 op const char *src;
28 3448adb0 2022-11-02 op size_t srclen;
29 3448adb0 2022-11-02 op } input;
30 3448adb0 2022-11-02 op struct {
31 3448adb0 2022-11-02 op size_t ret;
32 3448adb0 2022-11-02 op } output;
33 3448adb0 2022-11-02 op };
34 3448adb0 2022-11-02 op
35 3448adb0 2022-11-02 op int run_break_tests(size_t (*next_break)(const uint_least32_t *, size_t),
36 3448adb0 2022-11-02 op const struct break_test *test, size_t testlen,
37 3448adb0 2022-11-02 op const char *);
38 3448adb0 2022-11-02 op int run_unit_tests(int (*unit_test_callback)(const void *, size_t, const char *,
39 3448adb0 2022-11-02 op const char *), const void *, size_t, const char *, const char *);
40 3448adb0 2022-11-02 op
41 3448adb0 2022-11-02 op int unit_test_callback_next_break(const struct unit_test_next_break *, size_t,
42 3448adb0 2022-11-02 op size_t (*next_break)(const uint_least32_t *, size_t),
43 3448adb0 2022-11-02 op const char *, const char *);
44 3448adb0 2022-11-02 op int unit_test_callback_next_break_utf8(const struct unit_test_next_break_utf8 *,
45 3448adb0 2022-11-02 op size_t,
46 3448adb0 2022-11-02 op size_t (*next_break_utf8)(const char *, size_t),
47 3448adb0 2022-11-02 op const char *, const char *);
48 3448adb0 2022-11-02 op
49 3448adb0 2022-11-02 op #endif /* UTIL_H */