]> mj.ucw.cz Git - libucw.git/commitdiff
Added unit tests for UTF8 macros.
authorMartin Mares <mj@ucw.cz>
Fri, 20 Aug 2004 11:43:10 +0000 (11:43 +0000)
committerMartin Mares <mj@ucw.cz>
Fri, 20 Aug 2004 11:43:10 +0000 (11:43 +0000)
lib/unicode-utf8.c
lib/unicode-utf8.t [new file with mode: 0644]

index 5a9d1bfc9ff3531fba8d30760c647fd0a9facae2..3a758589455c16918d8ed5e475fdd0a0862f43d3 100644 (file)
@@ -35,3 +35,57 @@ utf8_strnlen(byte *str, uns n)
     }
   return len;
 }
+
+#ifdef TEST
+#include <string.h>
+#include <stdio.h>
+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 (file)
index 0000000..f41fb5a
--- /dev/null
@@ -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