Mercurial > hg > octave-lojdl > gnulib-hg
annotate tests/unistdio/test-ulc-vasnprintf2.c @ 9030:870029929d86
Formatted output functions for Unicode strings.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Mon, 02 Jul 2007 01:34:46 +0000 |
parents | |
children | bbbbbf4cd1c5 |
rev | line source |
---|---|
9030
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1 /* Test of ulc_vasnprintf() function in an ISO-8859-1 locale. |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
2 Copyright (C) 2007 Free Software Foundation, Inc. |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
3 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
4 This program is free software; you can redistribute it and/or modify |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
5 it under the terms of the GNU General Public License as published by |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
6 the Free Software Foundation; either version 2, or (at your option) |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
7 any later version. |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
8 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
9 This program is distributed in the hope that it will be useful, |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
10 but WITHOUT ANY WARRANTY; without even the implied warranty of |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
12 GNU General Public License for more details. |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
13 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
14 You should have received a copy of the GNU General Public License |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
15 along with this program; if not, write to the Free Software Foundation, |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
16 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
17 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
18 /* Written by Bruno Haible <bruno@clisp.org>, 2007. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
19 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
20 #include <config.h> |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
21 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
22 #include "unistdio.h" |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
23 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
24 #include <locale.h> |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
25 #include <stdarg.h> |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
26 #include <stdio.h> |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
27 #include <stdint.h> |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
28 #include <stdlib.h> |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
29 #include <string.h> |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
30 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
31 #define SIZEOF(array) (sizeof (array) / sizeof (array[0])) |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
32 #define ASSERT(expr) \ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
33 do \ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
34 { \ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
35 if (!(expr)) \ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
36 { \ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
37 fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
38 abort (); \ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
39 } \ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
40 } \ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
41 while (0) |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
42 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
43 static void |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
44 test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
45 { |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
46 /* Test the support of the 'U' conversion specifier for Unicode strings. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
47 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
48 { |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
49 static const uint8_t unicode_string[] = "Rafa\305\202 Maszkowski"; /* Rafał Maszkowski */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
50 { |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
51 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
52 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
53 my_asnprintf (NULL, &length, "%U %d", unicode_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
54 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
55 ASSERT (strcmp (result, "Rafa? Maszkowski 33") == 0 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
56 || strcmp (result, "Rafal Maszkowski 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
57 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
58 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
59 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
60 { /* Width. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
61 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
62 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
63 my_asnprintf (NULL, &length, "%20U %d", unicode_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
64 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
65 ASSERT (strcmp (result, " Rafa? Maszkowski 33") == 0 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
66 || strcmp (result, " Rafal Maszkowski 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
67 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
68 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
69 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
70 { /* FLAG_LEFT. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
71 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
72 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
73 my_asnprintf (NULL, &length, "%-20U %d", unicode_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
74 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
75 ASSERT (strcmp (result, "Rafa? Maszkowski 33") == 0 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
76 || strcmp (result, "Rafal Maszkowski 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
77 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
78 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
79 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
80 { /* FLAG_ZERO: no effect. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
81 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
82 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
83 my_asnprintf (NULL, &length, "%020U %d", unicode_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
84 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
85 ASSERT (strcmp (result, " Rafa? Maszkowski 33") == 0 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
86 || strcmp (result, " Rafal Maszkowski 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
87 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
88 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
89 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
90 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
91 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
92 { |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
93 static const uint16_t unicode_string[] = /* Rafał Maszkowski */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
94 { |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
95 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w', |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
96 's', 'k', 'i', 0 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
97 }; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
98 { |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
99 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
100 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
101 my_asnprintf (NULL, &length, "%lU %d", unicode_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
102 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
103 ASSERT (strcmp (result, "Rafa? Maszkowski 33") == 0 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
104 || strcmp (result, "Rafal Maszkowski 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
105 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
106 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
107 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
108 { /* Width. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
109 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
110 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
111 my_asnprintf (NULL, &length, "%20lU %d", unicode_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
112 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
113 ASSERT (strcmp (result, " Rafa? Maszkowski 33") == 0 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
114 || strcmp (result, " Rafal Maszkowski 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
115 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
116 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
117 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
118 { /* FLAG_LEFT. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
119 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
120 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
121 my_asnprintf (NULL, &length, "%-20lU %d", unicode_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
122 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
123 ASSERT (strcmp (result, "Rafa? Maszkowski 33") == 0 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
124 || strcmp (result, "Rafal Maszkowski 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
125 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
126 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
127 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
128 { /* FLAG_ZERO: no effect. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
129 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
130 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
131 my_asnprintf (NULL, &length, "%020lU %d", unicode_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
132 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
133 ASSERT (strcmp (result, " Rafa? Maszkowski 33") == 0 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
134 || strcmp (result, " Rafal Maszkowski 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
135 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
136 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
137 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
138 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
139 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
140 { |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
141 static const uint32_t unicode_string[] = /* Rafał Maszkowski */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
142 { |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
143 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z', 'k', 'o', 'w', |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
144 's', 'k', 'i', 0 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
145 }; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
146 { |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
147 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
148 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
149 my_asnprintf (NULL, &length, "%llU %d", unicode_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
150 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
151 ASSERT (strcmp (result, "Rafa? Maszkowski 33") == 0 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
152 || strcmp (result, "Rafal Maszkowski 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
153 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
154 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
155 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
156 { /* Width. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
157 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
158 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
159 my_asnprintf (NULL, &length, "%20llU %d", unicode_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
160 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
161 ASSERT (strcmp (result, " Rafa? Maszkowski 33") == 0 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
162 || strcmp (result, " Rafal Maszkowski 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
163 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
164 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
165 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
166 { /* FLAG_LEFT. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
167 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
168 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
169 my_asnprintf (NULL, &length, "%-20llU %d", unicode_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
170 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
171 ASSERT (strcmp (result, "Rafa? Maszkowski 33") == 0 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
172 || strcmp (result, "Rafal Maszkowski 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
173 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
174 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
175 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
176 { /* FLAG_ZERO: no effect. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
177 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
178 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
179 my_asnprintf (NULL, &length, "%020llU %d", unicode_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
180 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
181 ASSERT (strcmp (result, " Rafa? Maszkowski 33") == 0 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
182 || strcmp (result, " Rafal Maszkowski 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
183 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
184 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
185 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
186 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
187 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
188 /* Test the support of the 's' conversion specifier for strings. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
189 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
190 { |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
191 const char *locale_string = "\304rger"; /* Ärger */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
192 { |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
193 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
194 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
195 my_asnprintf (NULL, &length, "%s %d", locale_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
196 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
197 ASSERT (strcmp (result, "\304rger 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
198 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
199 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
200 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
201 { /* Width. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
202 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
203 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
204 my_asnprintf (NULL, &length, "%10s %d", locale_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
205 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
206 ASSERT (strcmp (result, " \304rger 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
207 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
208 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
209 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
210 { /* FLAG_LEFT. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
211 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
212 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
213 my_asnprintf (NULL, &length, "%-10s %d", locale_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
214 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
215 ASSERT (strcmp (result, "\304rger 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
216 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
217 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
218 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
219 { /* FLAG_ZERO: no effect. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
220 size_t length; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
221 char *result = |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
222 my_asnprintf (NULL, &length, "%010s %d", locale_string, 33, 44, 55); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
223 ASSERT (result != NULL); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
224 ASSERT (strcmp (result, " \304rger 33") == 0); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
225 ASSERT (length == strlen (result)); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
226 free (result); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
227 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
228 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
229 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
230 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
231 static char * |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
232 my_asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...) |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
233 { |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
234 va_list args; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
235 char *ret; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
236 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
237 va_start (args, format); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
238 ret = ulc_vasnprintf (resultbuf, lengthp, format, args); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
239 va_end (args); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
240 return ret; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
241 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
242 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
243 static void |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
244 test_vasnprintf () |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
245 { |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
246 test_function (my_asnprintf); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
247 } |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
248 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
249 int |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
250 main (int argc, char *argv[]) |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
251 { |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
252 /* configure should already have checked that the locale is supported. */ |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
253 if (setlocale (LC_ALL, "") == NULL) |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
254 return 1; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
255 |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
256 test_vasnprintf (); |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
257 return 0; |
870029929d86
Formatted output functions for Unicode strings.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
258 } |