+2021-12-28 Bruno Haible <bruno@clisp.org>
+
+ uniwbrk: Add unit tests of regional indicators.
+ * tests/uniwbrk/test-u8-wordbreaks.c (main): Add test of regional
+ indicators.
+ * tests/uniwbrk/test-u16-wordbreaks.c (main): Likewise.
+ * tests/uniwbrk/test-u32-wordbreaks.c (main): Likewise.
+
2021-12-28 Bruno Haible <bruno@clisp.org>
unigbrk: Simplify code for regional indicators.
free (p);
}
+ /* Test regional indicators. */
+ {
+ static const uint16_t input[10] =
+ { '.', 0xD83C, 0xDDE9, 0xD83C, 0xDDEA, 0xD83C, 0xDDEB, 0xD83C, 0xDDF7, '.' };
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u16_wordbreaks (input, SIZEOF (input), p);
+ for (i = 0; i < 10; i++)
+ {
+ ASSERT (p[i] == (i == 1 || i == 5 || i == 9 ? 1 : 0));
+ }
+ free (p);
+ }
+
return 0;
}
free (p);
}
+ /* Test regional indicators. */
+ {
+ static const uint32_t input[6] =
+ { '.', 0x1F1E9, 0x1F1EA, 0x1F1EB, 0x1F1F7, '.' };
+ char *p = (char *) malloc (SIZEOF (input));
+ size_t i;
+
+ u32_wordbreaks (input, SIZEOF (input), p);
+ for (i = 0; i < 6; i++)
+ {
+ ASSERT (p[i] == (i == 1 || i == 3 || i == 5 ? 1 : 0));
+ }
+ free (p);
+ }
+
return 0;
}
free (p);
}
+ /* Test regional indicators. */
+ {
+ static const uint8_t input[18] =
+ ".\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_wordbreaks (input, SIZEOF (input), p);
+ for (i = 0; i < 18; i++)
+ {
+ ASSERT (p[i] == (i == 1 || i == 9 || i == 17 ? 1 : 0));
+ }
+ free (p);
+ }
+
return 0;
}