about summary refs log tree commit diff
path: root/localedata/tst-digits.c
blob: 372e8acd8c1303cb87a8ef7a7a18a2349dea0ff4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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;
}