]>
Commit | Line | Data |
---|---|---|
f57e41a5 UD |
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" |