diff options
author | Bruno Haible <bruno@clisp.org> | 2021-12-29 00:06:17 +0100 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2021-12-29 00:06:17 +0100 |
commit | 6967c03d3b03a93c050354e05b97b64360aa9c61 (patch) | |
tree | e26c4df132f9e58216a53a3c9776be1cd0f55f42 /tests/unilbrk | |
parent | 2995fb5e993a5d7434d96465758087b35a1488ac (diff) | |
download | gnulib-6967c03d3b03a93c050354e05b97b64360aa9c61.tar.gz |
unilbrk: Update handling of regional indicators for Unicode 10.0.0.
* lib/unilbrk/u8-possible-linebreaks.c (u8_possible_linebreaks): Add
code for handling regional indicators.
* lib/unilbrk/u16-possible-linebreaks.c (u16_possible_linebreaks):
Likewise.
* lib/unilbrk/u32-possible-linebreaks.c (u32_possible_linebreaks):
Likewise.
* tests/unilbrk/test-u8-possible-linebreaks.c (main): Add a test
regarding regional indicators.
* tests/unilbrk/test-u16-possible-linebreaks.c (main): Likewise.
* tests/unilbrk/test-u32-possible-linebreaks.c (main): Likewise.
Diffstat (limited to 'tests/unilbrk')
-rw-r--r-- | tests/unilbrk/test-u16-possible-linebreaks.c | 15 | ||||
-rw-r--r-- | tests/unilbrk/test-u32-possible-linebreaks.c | 15 | ||||
-rw-r--r-- | tests/unilbrk/test-u8-possible-linebreaks.c | 15 |
3 files changed, 45 insertions, 0 deletions
diff --git a/tests/unilbrk/test-u16-possible-linebreaks.c b/tests/unilbrk/test-u16-possible-linebreaks.c index d8dd863472..87d712fcc6 100644 --- a/tests/unilbrk/test-u16-possible-linebreaks.c +++ b/tests/unilbrk/test-u16-possible-linebreaks.c @@ -164,5 +164,20 @@ main () free (p); } + /* Test line breaking of regional indicators. */ + { + static const uint16_t input[8] = + { 0xD83C, 0xDDE9, 0xD83C, 0xDDEA, 0xD83C, 0xDDEB, 0xD83C, 0xDDF7 }; + char *p = (char *) malloc (SIZEOF (input)); + size_t i; + + u16_possible_linebreaks (input, SIZEOF (input), "UTF-8", p); + for (i = 0; i < 8; i++) + { + ASSERT (p[i] == (i == 4 ? UC_BREAK_POSSIBLE : UC_BREAK_PROHIBITED)); + } + free (p); + } + return 0; } diff --git a/tests/unilbrk/test-u32-possible-linebreaks.c b/tests/unilbrk/test-u32-possible-linebreaks.c index 97c08ad5a9..c140ca3b55 100644 --- a/tests/unilbrk/test-u32-possible-linebreaks.c +++ b/tests/unilbrk/test-u32-possible-linebreaks.c @@ -164,5 +164,20 @@ main () free (p); } + /* Test line breaking of regional indicators. */ + { + static const uint32_t input[4] = + { 0x1F1E9, 0x1F1EA, 0x1F1EB, 0x1F1F7 }; + char *p = (char *) malloc (SIZEOF (input)); + size_t i; + + u32_possible_linebreaks (input, SIZEOF (input), "UTF-8", p); + for (i = 0; i < 4; i++) + { + ASSERT (p[i] == (i == 2 ? UC_BREAK_POSSIBLE : UC_BREAK_PROHIBITED)); + } + free (p); + } + return 0; } diff --git a/tests/unilbrk/test-u8-possible-linebreaks.c b/tests/unilbrk/test-u8-possible-linebreaks.c index 9dd5666954..0fdb66d367 100644 --- a/tests/unilbrk/test-u8-possible-linebreaks.c +++ b/tests/unilbrk/test-u8-possible-linebreaks.c @@ -149,5 +149,20 @@ main () free (p); } + /* Test line breaking of regional indicators. */ + { + static const uint8_t input[16] = + "\360\237\207\251\360\237\207\252\360\237\207\253\360\237\207\267"; + char *p = (char *) malloc (SIZEOF (input)); + size_t i; + + u8_possible_linebreaks (input, SIZEOF (input), "UTF-8", p); + for (i = 0; i < 16; i++) + { + ASSERT (p[i] == (i == 8 ? UC_BREAK_POSSIBLE : UC_BREAK_PROHIBITED)); + } + free (p); + } + return 0; } |