Test case for swptinf.
authordrepper <drepper>
Tue, 5 Sep 2000 22:41:48 +0000 (22:41 +0000)
committerdrepper <drepper>
Tue, 5 Sep 2000 22:41:48 +0000 (22:41 +0000)
stdio-common/tst-swprintf.c [new file with mode: 0644]

diff --git a/stdio-common/tst-swprintf.c b/stdio-common/tst-swprintf.c
new file mode 100644 (file)
index 0000000..a7e232d
--- /dev/null
@@ -0,0 +1,56 @@
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <wchar.h>
+
+/* This is the relevant piece from the charmap:
+<UFF61>     /x8e/xa1     HALFWIDTH IDEOGRAPHIC FULL STOP
+<UFF62>     /x8e/xa2     HALFWIDTH LEFT CORNER BRACKET
+<UFF63>     /x8e/xa3     HALFWIDTH RIGHT CORNER BRACKET
+<UFF64>     /x8e/xa4     HALFWIDTH IDEOGRAPHIC COMMA
+ */
+
+const char input[] = "\x8e\xa1g\x8e\xa2h\x8e\xa3i\x8e\xa4j";
+
+int
+main (void)
+{
+  wchar_t buf[1000];
+#define nbuf (sizeof (buf) / sizeof (buf[0]))
+  int result = 0;
+  ssize_t n;
+
+  if (setlocale (LC_ALL, "ja_JP.EUC-JP") == NULL)
+    {
+      puts ("cannot set locale");
+      exit (1);
+    }
+
+#define CHECK(fmt, nexp, exp) \
+  n = swprintf (buf, nbuf, fmt, input);                                              \
+  if (n != nexp)                                                             \
+    {                                                                        \
+      printf ("swprintf (.., .., L\"%ls\", \"%ls\") return %d, not %d\n",     \
+             fmt, input, (int) n, (int) nexp);                               \
+      result = 1;                                                            \
+    }                                                                        \
+  else if (wcscmp (buf, exp) != 0)                                           \
+    {                                                                        \
+      printf ("\
+swprintf (.., .., L\"%ls\", \"%ls\") produced \"%ls\", not \"%ls\"\n",       \
+            fmt, input, buf, exp );                                          \
+      result = 1;                                                            \
+    }
+
+  CHECK (L"[%-6.0s]", 8, L"[      ]");
+  CHECK (L"[%-6.1s]", 8, L"[\xff61     ]");
+  CHECK (L"[%-6.2s]", 8, L"[\xff61g    ]");
+  CHECK (L"[%-6.3s]", 8, L"[\xff61g\xff62   ]");
+  CHECK (L"[%-6.4s]", 8, L"[\xff61g\xff62h  ]");
+  CHECK (L"[%-6.5s]", 8, L"[\xff61g\xff62h\xff63 ]");
+  CHECK (L"[%-6.6s]", 8, L"[\xff61g\xff62h\xff63i]");
+  CHECK (L"[%-6.7s]", 9, L"[\xff61g\xff62h\xff63i\xff64]");
+  CHECK (L"[%-6.8s]", 10, L"[\xff61g\xff62h\xff63i\xff64j]");
+
+  return result;
+}