(root)/
glibc-2.38/
stdio-common/
tst-grouping.c
       1  /* BZ 12394, test by Bruno Haible.  */
       2  #include <locale.h>
       3  #include <stdio.h>
       4  #include <stdlib.h>
       5  #include <string.h>
       6  
       7  
       8  static int
       9  do_test (void)
      10  {
      11    char buf1[1000];
      12    char buf2[1000];
      13    int result = 0;
      14  
      15    if (setlocale (LC_NUMERIC, "de_DE.UTF-8") == NULL)
      16      return 1;
      17  
      18    sprintf (buf1, "%'.2f",  999.996);
      19    sprintf (buf2, "%'.2f", 1000.004);
      20    printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
      21    if (strcmp (buf1, buf2) != 0)
      22      result |= 2;
      23  
      24    sprintf (buf1, "%'.2f",  999999.996);
      25    sprintf (buf2, "%'.2f", 1000000.004);
      26    printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
      27    if (strcmp (buf1, buf2) != 0)
      28      result |= 2;
      29  
      30    sprintf (buf1, "%'.2f",  999999999.996);
      31    sprintf (buf2, "%'.2f", 1000000000.004);
      32    printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
      33    if (strcmp (buf1, buf2) != 0)
      34      result |= 2;
      35  
      36    sprintf (buf1, "%'.2f",  999999999999.996);
      37    sprintf (buf2, "%'.2f", 1000000000000.004);
      38    printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
      39    if (strcmp (buf1, buf2) != 0)
      40      result |= 2;
      41  
      42    sprintf (buf1, "%'.2f",  999999999999999.996);
      43    sprintf (buf2, "%'.2f", 1000000000000000.004);
      44    printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
      45    if (strcmp (buf1, buf2) != 0)
      46      result |= 2;
      47  
      48    sprintf (buf1, "%'.5g",  999.996);
      49    sprintf (buf2, "%'.5g", 1000.004);
      50    printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
      51    if (strcmp (buf1, buf2) != 0)
      52      result |= 4;
      53  
      54    sprintf (buf1, "%'.4g",  9999.996);
      55    sprintf (buf2, "%'.4g", 10000.004);
      56    printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
      57    if (strcmp (buf1, buf2) != 0)
      58      result |= 8;
      59  
      60    sprintf (buf1, "%'.5g",  99999.996);
      61    sprintf (buf2, "%'.5g", 100000.004);
      62    printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
      63    if (strcmp (buf1, buf2) != 0)
      64      result |= 8;
      65  
      66    sprintf (buf1, "%'.6g",  999999.996);
      67    sprintf (buf2, "%'.6g", 1000000.004);
      68    printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
      69    if (strcmp (buf1, buf2) != 0)
      70      result |= 8;
      71  
      72    sprintf (buf1, "%'.7g",  9999999.996);
      73    sprintf (buf2, "%'.7g", 10000000.004);
      74    printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
      75    if (strcmp (buf1, buf2) != 0)
      76      result |= 8;
      77  
      78    return result;
      79  }
      80  
      81  
      82  #define TEST_FUNCTION do_test ()
      83  #include "../test-skeleton.c"