From 4f1b84f57f319b982fd6d34fce390c16b644d898 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Fri, 20 Aug 2004 11:43:10 +0000 Subject: [PATCH] Added unit tests for UTF8 macros. --- lib/unicode-utf8.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++ lib/unicode-utf8.t | 33 ++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 lib/unicode-utf8.t diff --git a/lib/unicode-utf8.c b/lib/unicode-utf8.c index 5a9d1bfc..3a758589 100644 --- a/lib/unicode-utf8.c +++ b/lib/unicode-utf8.c @@ -35,3 +35,57 @@ utf8_strnlen(byte *str, uns n) } return len; } + +#ifdef TEST +#include +#include +int main(int argc, char **argv) +{ + byte buf[256]; + if (argc > 1 && !strncmp(argv[1], "get", 3)) + { + int f32 = !strcmp(argv[1], "get32"); + byte *p = buf; + uns u; + while (scanf("%x", &u) == 1) + *p++ = u; + *p = 0; + p = buf; + while (*p) + { + if (p != buf) + putchar(' '); + if (f32) + GET_UTF8_32(p, u); + else + GET_UTF8(p, u); + printf("%04x", u); + } + putchar('\n'); + } + else if (argc > 1 && !strncmp(argv[1], "put", 3)) + { + uns u, i=0; + int f32 = !strcmp(argv[1], "put32"); + while (scanf("%x", &u) == 1) + { + byte *p = buf; + if (f32) + PUT_UTF8_32(p, u); + else + PUT_UTF8(p, u); + *p = 0; + for (p=buf; *p; p++) + { + if (i++) + putchar(' '); + printf("%02x", *p); + } + } + putchar('\n'); + } + else + puts("?"); + return 0; +} +#endif diff --git a/lib/unicode-utf8.t b/lib/unicode-utf8.t new file mode 100644 index 00000000..f41fb5a1 --- /dev/null +++ b/lib/unicode-utf8.t @@ -0,0 +1,33 @@ +# Tests for the Unicode UTF-8 module + +Run: obj/lib/unicode-utf8-t put +In: 0041 0048 004f 004a +Out: 41 48 4f 4a + +Run: obj/lib/unicode-utf8-t put +In: 00aa 01aa 02a5 05a5 0a5a 15a5 2a5a 5a5a a5a5 +Out: c2 aa c6 aa ca a5 d6 a5 e0 a9 9a e1 96 a5 e2 a9 9a e5 a9 9a ea 96 a5 + +Run: obj/lib/unicode-utf8-t get +In: 41 48 4f 4a +Out: 0041 0048 004f 004a + +Run: obj/lib/unicode-utf8-t get +In: c2 aa c6 aa ca a5 d6 a5 e0 a9 9a e1 96 a5 e2 a9 9a e5 a9 9a ea 96 a5 +Out: 00aa 01aa 02a5 05a5 0a5a 15a5 2a5a 5a5a a5a5 + +Run: obj/lib/unicode-utf8-t get +In: 84 ff f9 f8 c2 aa 41 +Out: fffc fffc fffc fffc 00aa 0041 + +Run: obj/lib/unicode-utf8-t put32 +In: 15a5a 2a5a5 5a5a5 a5a5a 15a5a5 2a5a5a 5a5a5a a5a5a5 15a5a5a 2a5a5a5 5a5a5a5 a5a5a5a 15a5a5a5 2a5a5a5a 5a5a5a5a +Out: f0 95 a9 9a f0 aa 96 a5 f1 9a 96 a5 f2 a5 a9 9a f5 9a 96 a5 f8 8a a5 a9 9a f8 96 a5 a9 9a f8 a9 9a 96 a5 f9 96 a5 a9 9a fa a9 9a 96 a5 fc 85 a9 9a 96 a5 fc 8a 96 a5 a9 9a fc 95 a9 9a 96 a5 fc aa 96 a5 a9 9a fd 9a 96 a5 a9 9a + +Run: obj/lib/unicode-utf8-t get32 +In: f0 95 a9 9a f0 aa 96 a5 f1 9a 96 a5 f2 a5 a9 9a f5 9a 96 a5 f8 8a a5 a9 9a f8 96 a5 a9 9a f8 a9 9a 96 a5 f9 96 a5 a9 9a fa a9 9a 96 a5 fc 85 a9 9a 96 a5 fc 8a 96 a5 a9 9a fc 95 a9 9a 96 a5 fc aa 96 a5 a9 9a fd 9a 96 a5 a9 9a +Out: 15a5a 2a5a5 5a5a5 a5a5a 15a5a5 2a5a5a 5a5a5a a5a5a5 15a5a5a 2a5a5a5 5a5a5a5 a5a5a5a 15a5a5a5 2a5a5a5a 5a5a5a5a + +Run: obj/lib/unicode-utf8-t get32 +In: fe 83 81 +Out: fffc fffc fffc -- 2.39.2