summaryrefslogtreecommitdiff
path: root/localedata/tst-digits.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-07-29 06:45:51 +0000
committerUlrich Drepper <drepper@redhat.com>2000-07-29 06:45:51 +0000
commit69c69fe11da745ee591a17570c2be5b529ec2fa6 (patch)
treea6a20ad924fc78b78dc855d9c12cda1649f5ad71 /localedata/tst-digits.c
parent5e4633932782f08412e8cee75236f4f458591a3d (diff)
downloadglibc-69c69fe11da745ee591a17570c2be5b529ec2fa6.tar.gz
Update.
2000-07-28 Ulrich Drepper <drepper@redhat.com> * stdio-common/_i18n_itoa.c: Removed. * stdio-common/_i18n_itoa.h: Removed. * stdio-common/_i18n_itowa.c: Removed. * stdio-common/_i18n_itowa.h: Removed. * stdio-common/_i18n_number.h: New file. * stdio-common/Depend: New file. * stdio-common/printf-parse.h: Handle I modifier correctly. Optimize. * stdio-common/vfprintf.c: Rewrite buffer handling for integer printing. Change printing of numbers with locale specific digits to use new code in _i18n_number.h. * stdio-common/bug13.c: Improve messages. * locale/programs/ld-ctype.c (ctype_read): Improve error message. (set_class_defaults): Always search also for Uxxxx names. Detect insufficient number of outdigits. * locale/Makefile (C-translit.h): Use mv not $(move-if-changed).
Diffstat (limited to 'localedata/tst-digits.c')
-rw-r--r--localedata/tst-digits.c81
1 files changed, 81 insertions, 0 deletions
diff --git a/localedata/tst-digits.c b/localedata/tst-digits.c
new file mode 100644
index 0000000000..372e8acd8c
--- /dev/null
+++ b/localedata/tst-digits.c
@@ -0,0 +1,81 @@
+#include <locale.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+
+#define ZERO "\xe2\x82\x80"
+#define ONE "\xe2\x82\x81"
+#define TWO "\xe2\x82\x82"
+#define THREE "\xe2\x82\x83"
+#define FOUR "\xe2\x82\x84"
+#define FIVE "\xe2\x82\x85"
+#define SIX "\xe2\x82\x86"
+#define SEVEN "\xe2\x82\x87"
+#define EIGHT "\xe2\x82\x88"
+#define NINE "\xe2\x82\x89"
+
+static struct printf_int_test
+{
+ int n;
+ const char *format;
+ const char *expected;
+} printf_int_tests[] =
+{
+ { 0, "%I'10d", " " ZERO },
+ { 1, "%I'10d", " " ONE },
+ { 2, "%I'10d", " " TWO },
+ { 3, "%I'10d", " " THREE },
+ { 4, "%I'10d", " " FOUR },
+ { 5, "%I'10d", " " FIVE },
+ { 6, "%I'10d", " " SIX },
+ { 7, "%I'10d", " " SEVEN },
+ { 8, "%I'10d", " " EIGHT },
+ { 9, "%I'10d", " " NINE },
+ { 11, "%I'10d", " " ONE ONE },
+ { 12, "%I'10d", " " ONE TWO },
+ { 123, "%I10d", " " ONE TWO THREE },
+ { 123, "%I'10d", " " ONE TWO THREE },
+ { 1234, "%I10d", ONE TWO THREE FOUR },
+ { 1234, "%I'10d", ONE "," TWO THREE FOUR },
+ { 12345, "%I'10d", ONE TWO "," THREE FOUR FIVE },
+ { 123456, "%I'10d", ONE TWO THREE "," FOUR FIVE SIX },
+ { 1234567, "%I'10d", ONE "," TWO THREE FOUR "," FIVE SIX SEVEN }
+};
+
+
+
+int
+main (void)
+{
+ int cnt;
+ int printf_failures = 0;
+
+ if (setlocale (LC_ALL, "test7") == NULL)
+ {
+ puts ("cannot set locale `test7'");
+ exit (1);
+ }
+
+ /* First: printf tests. */
+ for (cnt = 0; cnt < sizeof (printf_int_tests) / sizeof (printf_int_tests[0]);
+ ++cnt)
+ {
+ char buf[100];
+ ssize_t n;
+
+ n = snprintf (buf, sizeof buf, printf_int_tests[cnt].format,
+ printf_int_tests[cnt].n);
+
+ if (n != strlen (printf_int_tests[cnt].expected)
+ || strcmp (buf, printf_int_tests[cnt].expected) != 0)
+ {
+ printf ("%3d: got \"%s\", expected \"%s\"\n",
+ cnt, buf, printf_int_tests[cnt].expected);
+ ++printf_failures;
+ }
+ }
+
+ printf ("\n%d failures in printf tests\n", printf_failures);
+
+ return printf_failures != 0;
+}