summaryrefslogtreecommitdiff
path: root/tests/unilbrk
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2021-12-29 00:06:17 +0100
committerBruno Haible <bruno@clisp.org>2021-12-29 00:06:17 +0100
commit6967c03d3b03a93c050354e05b97b64360aa9c61 (patch)
treee26c4df132f9e58216a53a3c9776be1cd0f55f42 /tests/unilbrk
parent2995fb5e993a5d7434d96465758087b35a1488ac (diff)
downloadgnulib-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.c15
-rw-r--r--tests/unilbrk/test-u32-possible-linebreaks.c15
-rw-r--r--tests/unilbrk/test-u8-possible-linebreaks.c15
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;
}