Introduction
Introduction Statistics Contact Development Disclaimer Help
word.c - libgrapheme - unicode string library
git clone git://git.suckless.org/libgrapheme
Log
Files
Refs
README
LICENSE
---
word.c (3000B)
---
1 /* See LICENSE file for copyright and license details. */
2 #include <stdbool.h>
3 #include <stdint.h>
4
5 #include "../gen/word-test.h"
6 #include "../grapheme.h"
7 #include "util.h"
8
9 static const struct unit_test_next_break next_word_break[] = {
10 {
11 .description = "NULL input",
12 .input = {
13 .src = NULL,
14 .srclen = 0,
15 },
16 .output = { 0 },
17 },
18 {
19 .description = "empty input",
20 .input = {
21 .src = (uint_least32_t *)(uint_least32_t[]){ …
22 .srclen = 0,
23 },
24 .output = { 0 },
25 },
26 {
27 .description = "empty input, null-terminated",
28 .input = {
29 .src = (uint_least32_t *)(uint_least32_t[]){ …
30 .srclen = SIZE_MAX,
31 },
32 .output = { 0 },
33 },
34 {
35 .description = "one word",
36 .input = {
37 .src = (uint_least32_t *)(uint_least32_t[]){ …
38 .srclen = 4,
39 },
40 .output = { 2 },
41 },
42 {
43 .description = "one word, null-terminated",
44 .input = {
45 .src = (uint_least32_t *)(uint_least32_t[]){ …
46 .srclen = SIZE_MAX,
47 },
48 .output = { 2 },
49 },
50 };
51
52 static const struct unit_test_next_break_utf8 next_word_break_utf8[] = {
53 {
54 .description = "NULL input",
55 .input = {
56 .src = NULL,
57 .srclen = 0,
58 },
59 .output = { 0 },
60 },
61 {
62 .description = "empty input",
63 .input = { "", 0 },
64 .output = { 0 },
65 },
66 {
67 .description = "empty input, NUL-terminated",
68 .input = { "", SIZE_MAX },
69 .output = { 0 },
70 },
71 {
72 .description = "one word",
73 .input = { "\xF0\x9F\x87\xA9\xF0\x9F\x87\xAA is", 11 },
74 .output = { 8 },
75 },
76 {
77 .description = "one word, fragment",
78 .input = { "\xF0\x9F\x87\xA9\xF0", 5 },
79 .output = { 4 },
80 },
81 {
82 .description = "one word, NUL-terminated",
83 .input = { "\xF0\x9F\x87\xA9\xF0\x9F\x87\xAA is", SIZE_M…
84 .output = { 8 },
85 },
86 {
87 .description = "one word, fragment, NUL-terminated",
88 .input = { "\xF0\x9F\x87\xA9\xF0\x9F", SIZE_MAX },
89 .output = { 4 },
90 },
91 };
92
93 static int
94 unit_test_callback_next_word_break(const void *t, size_t off, const char…
95 const char *argv0)
96 {
97 return unit_test_callback_next_break(t, off, grapheme_next_word_…
98 name, argv0);
99 }
100
101 static int
102 unit_test_callback_next_word_break_utf8(const void *t, size_t off,
103 const char *name, const char *ar…
104 {
105 return unit_test_callback_next_break_utf8(
106 t, off, grapheme_next_word_break_utf8, name, argv0);
107 }
108
109 int
110 main(int argc, char *argv[])
111 {
112 (void)argc;
113
114 return run_break_tests(grapheme_next_word_break, word_break_test,
115 LEN(word_break_test), argv[0]) +
116 run_unit_tests(unit_test_callback_next_word_break,
117 next_word_break, LEN(next_word_break),
118 "grapheme_next_word_break", argv[0]) +
119 run_unit_tests(unit_test_callback_next_word_break_utf8,
120 next_word_break_utf8, LEN(next_word_break_…
121 "grapheme_next_word_break_utf8", argv[0]);
122 }
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.