summaryrefslogtreecommitdiff
path: root/test/tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/tests.c')
-rw-r--r--test/tests.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/test/tests.c b/test/tests.c
index be94789..c16576c 100644
--- a/test/tests.c
+++ b/test/tests.c
@@ -23,7 +23,7 @@ main(void)
/* Make sure it can decode every character */
{
long failures = 0;
- for (unsigned long i = 0; i < 0x1ffff; i++) {
+ for (unsigned long i = 0; i < 0x10ffff; i++) {
if (!IS_SURROGATE(i)) {
int e;
uint32_t c;
@@ -36,6 +36,22 @@ main(void)
TEST(failures == 0, "decode all, errors: %ld", failures);
}
+ /* Reject everything outside of U+0000..U+10FFFF */
+ {
+ long failures = 0;
+ for (unsigned long i = 0x110000; i < 0x1fffff; i++) {
+ int e;
+ uint32_t c;
+ unsigned char buf[8] = {0};
+ utf8_encode(buf, i);
+ unsigned char *end = utf8_decode(buf, &c, &e);
+ failures += !e;
+ failures += end - buf != 4;
+ }
+ TEST(failures == 0, "out of range, errors: %ld", failures);
+ }
+
+
/* Does it reject all surrogate halves? */
{
long failures = 0;