| /* See LICENSE file for copyright and license details. */ |
| #ifndef UTIL_H |
| #define UTIL_H |
| |
| #include "../gen/types.h" |
| #include "../grapheme.h" |
| |
| #undef MIN |
| #define MIN(x, y) ((x) < (y) ? (x) : (y)) |
| #undef LEN |
| #define LEN(x) (sizeof(x) / sizeof(*(x))) |
| |
| struct unit_test_next_break { |
| const char *description; |
| |
| struct { |
| const uint_least32_t *src; |
| size_t srclen; |
| } input; |
| |
| struct { |
| size_t ret; |
| } output; |
| }; |
| |
| struct unit_test_next_break_utf8 { |
| const char *description; |
| |
| struct { |
| const char *src; |
| size_t srclen; |
| } input; |
| |
| struct { |
| size_t ret; |
| } output; |
| }; |
| |
| int run_break_tests(size_t (*next_break)(const uint_least32_t *, size_t), |
| const struct break_test *test, size_t testlen, |
| const char *); |
| int run_unit_tests(int (*unit_test_callback)(const void *, size_t, const char *, |
| const char *), |
| const void *, size_t, const char *, const char *); |
| |
| int unit_test_callback_next_break(const struct unit_test_next_break *, size_t, |
| size_t (*next_break)(const uint_least32_t *, |
| size_t), |
| const char *, const char *); |
| int unit_test_callback_next_break_utf8(const struct unit_test_next_break_utf8 *, |
| size_t, |
| size_t (*next_break_utf8)(const char *, |
| size_t), |
| const char *, const char *); |
| |
| #endif /* UTIL_H */ |