1 /* See LICENSE file for copyright and license details. */
5 #include "../gen/line-test.h"
6 #include "../grapheme.h"
9 static const struct unit_test_next_break next_line_break[] = {
11 .description = "NULL input",
19 .description = "empty input",
21 .src = (uint_least32_t *)(uint_least32_t[]){ 0x0 },
27 .description = "empty input, null-terminated",
29 .src = (uint_least32_t *)(uint_least32_t[]){ 0x0 },
35 .description = "one opportunity",
37 .src = (uint_least32_t *)(uint_least32_t[]){ 0x1F1E9, 0x1F1EA, 0x20, 0x2A },
43 .description = "one opportunity, null-terminated",
45 .src = (uint_least32_t *)(uint_least32_t[]){ 0x1F1E9, 0x1F1EA, 0x20, 0x2A, 0x0 },
52 static const struct unit_test_next_break_utf8 next_line_break_utf8[] = {
54 .description = "NULL input",
62 .description = "empty input",
67 .description = "empty input, NUL-terminated",
68 .input = { "", SIZE_MAX },
72 .description = "one opportunity",
73 .input = { "\xF0\x9F\x87\xA9\xF0\x9F\x87\xAA *", 10 },
77 .description = "one opportunity, fragment",
78 .input = { "\xF0\x9F\x87\xA9\xF0", 5 },
82 .description = "one opportunity, NUL-terminated",
83 .input = { "\xF0\x9F\x87\xA9\xF0\x9F\x87\xAA A", SIZE_MAX },
87 .description = "one opportunity, fragment, NUL-terminated",
88 .input = { "\xF0\x9F\x87\xA9\xF0\x9F", SIZE_MAX },
94 unit_test_callback_next_line_break(const void *t, size_t off,
98 return unit_test_callback_next_break(t, off,
99 grapheme_next_line_break,
104 unit_test_callback_next_line_break_utf8(const void *t, size_t off,
108 return unit_test_callback_next_break_utf8(t, off,
109 grapheme_next_line_break_utf8,
114 main(int argc, char *argv[])
118 return run_break_tests(grapheme_next_line_break,
119 line_break_test, LEN(line_break_test),
121 run_unit_tests(unit_test_callback_next_line_break,
122 next_line_break, LEN(next_line_break),
123 "grapheme_next_line_break", argv[0]) +
124 run_unit_tests(unit_test_callback_next_line_break_utf8,
125 next_line_break_utf8, LEN(next_line_break_utf8),
126 "grapheme_next_line_break_utf8", argv[0]);