ReactOS 0.4.16-dev-136-g52192f1
money_facets_test.cpp
Go to the documentation of this file.
1#include "locale_test.h"
2
3#if !defined (STLPORT) || !defined (_STLP_USE_NO_IOSTREAMS)
4# include <locale>
5# include <sstream>
6# include <stdexcept>
7
8# if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
9using namespace std;
10# endif
11
13 const char *name;
14 const char *money_int_prefix;
16 const char *money_prefix;
17 const char *money_suffix;
20};
21
22static const ref_monetary tested_locales[] = {
23//{ name, money_int_prefix, money_int_prefix_old, money_prefix, money_suffix, money_decimal_point, money_thousands_sep},
24# if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS)
25 { "fr_FR", "EUR ", "FRF ", "", "", ",",
26# if defined (WIN32) || defined (_WIN32)
27 "\xa0" },
28# else
29 " " },
30# endif
31 { "ru_RU.koi8r", "RUB ", "RUR ", "", "\xd2\xd5\xc2", ".", " " },
32 { "en_GB", "GBP ", "", "\xa3", "", ".", "," },
33 { "en_US", "USD ", "", "$", "", ".", "," },
34# endif
35 { "C", "", "", "", "", " ", " " },
36};
37
38
40{
41 if (i < sizeof(tested_locales) / sizeof(tested_locales[0])) {
42 return tested_locales + i;
43 }
44 return 0;
45}
46
48{
49 return _ref->name;
50}
51
52void LocaleTest::_money_put_get( const locale& loc, const ref_monetary* rl )
53{
54 _money_put_get2(loc, loc, rl);
55}
56
57void LocaleTest::_money_put_get2( const locale& loc, const locale& streamLoc, const ref_monetary* prl )
58{
59 const ref_monetary &rl = *prl;
61 money_put<char> const& fmp = use_facet<money_put<char> >(loc);
63 money_get<char> const& fmg = use_facet<money_get<char> >(loc);
64
65 ostringstream ostr;
66 ostr.imbue(streamLoc);
67 ostr << showbase;
68
69 //Check a positive value (international format)
70 {
71 string str_res;
72 //money_put
73 {
75 moneypunct<char, true> const& intl_fmp = use_facet<moneypunct<char, true> >(loc);
76
77 ostreambuf_iterator<char, char_traits<char> > res = fmp.put(ostr, true, ostr, ' ', 123456);
78
79 CPPUNIT_ASSERT( !res.failed() );
80 str_res = ostr.str();
81 //CPPUNIT_MESSAGE(str_res.c_str());
82
83 size_t fieldIndex = 0;
84 size_t index = 0;
85
86 //On a positive value we skip the sign field if exists:
87 if (intl_fmp.pos_format().field[fieldIndex] == money_base::sign) {
88 ++fieldIndex;
89 }
90 // international currency abbreviation, if it is before value
91
92 /*
93 * int_curr_symbol
94 *
95 * The international currency symbol. The operand is a four-character
96 * string, with the first three characters containing the alphabetic
97 * international currency symbol in accordance with those specified
98 * in the ISO 4217 specification. The fourth character is the character used
99 * to separate the international currency symbol from the monetary quantity.
100 *
101 * (http://www.opengroup.org/onlinepubs/7990989775/xbd/locale.html)
102 */
103 string::size_type p = strlen( rl.money_int_prefix );
104 if (p != 0) {
105 CPPUNIT_ASSERT( intl_fmp.pos_format().field[fieldIndex] == money_base::symbol );
106 string::size_type p_old = strlen( rl.money_int_prefix_old );
107 CPPUNIT_ASSERT( (str_res.substr(index, p) == rl.money_int_prefix) ||
108 ((p_old != 0) &&
109 (str_res.substr(index, p_old) == rl.money_int_prefix_old)) );
110 if ( str_res.substr(index, p) == rl.money_int_prefix ) {
111 index += p;
112 } else {
113 index += p_old;
114 }
115 ++fieldIndex;
116 }
117
118 // space after currency
119 if (intl_fmp.pos_format().field[fieldIndex] == money_base::space ||
120 intl_fmp.pos_format().field[fieldIndex] == money_base::none) {
121 // iternational currency symobol has four chars, one of these chars
122 // is separator, so if format has space on this place, it should
123 // be skipped.
124 ++fieldIndex;
125 }
126
127 // sign
128 if (intl_fmp.pos_format().field[fieldIndex] == money_base::sign) {
129 ++fieldIndex;
130 }
131
132 // value
133 CPPUNIT_ASSERT( str_res[index++] == '1' );
134 if (!intl_fmp.grouping().empty()) {
135 CPPUNIT_ASSERT( str_res[index++] == /* intl_fmp.thousands_sep() */ *rl.money_thousands_sep );
136 }
137 CPPUNIT_ASSERT( str_res[index++] == '2' );
138 CPPUNIT_ASSERT( str_res[index++] == '3' );
139 CPPUNIT_ASSERT( str_res[index++] == '4' );
140 if (intl_fmp.frac_digits() != 0) {
141 CPPUNIT_ASSERT( str_res[index++] == /* intl_fmp.decimal_point() */ *rl.money_decimal_point );
142 }
143 CPPUNIT_ASSERT( str_res[index++] == '5' );
144 CPPUNIT_ASSERT( str_res[index++] == '6' );
145 ++fieldIndex;
146
147 // sign
148 if (intl_fmp.pos_format().field[fieldIndex] == money_base::sign) {
149 ++fieldIndex;
150 }
151
152 // space
153 if (intl_fmp.pos_format().field[fieldIndex] == money_base::space ) {
154 CPPUNIT_ASSERT( str_res[index++] == ' ' );
155 ++fieldIndex;
156 }
157
158 // sign
159 if (intl_fmp.pos_format().field[fieldIndex] == money_base::sign) {
160 ++fieldIndex;
161 }
162
163 //as space cannot be last the only left format can be none:
164 while ( fieldIndex < 3 ) {
165 CPPUNIT_ASSERT( intl_fmp.pos_format().field[fieldIndex] == money_base::none );
166 ++fieldIndex;
167 }
168 }
169
170 //money_get
171 {
172 ios_base::iostate err = ios_base::goodbit;
173 string digits;
174
175 istringstream istr(str_res);
176 ostr.str( "" );
177 ostr.clear();
178 fmg.get(istr, istreambuf_iterator<char, char_traits<char> >(), true, ostr, err, digits);
179 CPPUNIT_ASSERT( (err & (ios_base::failbit | ios_base::badbit)) == 0 );
180 CPPUNIT_ASSERT( digits == "123456" );
181 }
182 }
183
184 ostr.str("");
185 //Check a negative value (national format)
186 {
188 moneypunct<char, false> const& dom_fmp = use_facet<moneypunct<char, false> >(loc);
189 string str_res;
190 //Check money_put
191 {
192 ostreambuf_iterator<char, char_traits<char> > res = fmp.put(ostr, false, ostr, ' ', -123456);
193
194 CPPUNIT_ASSERT( !res.failed() );
195 str_res = ostr.str();
196 //CPPUNIT_MESSAGE(str_res.c_str());
197
198 size_t fieldIndex = 0;
199 size_t index = 0;
200
201 if (dom_fmp.neg_format().field[fieldIndex] == money_base::sign) {
202 CPPUNIT_ASSERT( str_res.substr(index, dom_fmp.negative_sign().size()) == dom_fmp.negative_sign() );
203 index += dom_fmp.negative_sign().size();
204 ++fieldIndex;
205 }
206
207 string::size_type p = strlen( rl.money_prefix );
208 if (p != 0) {
209 CPPUNIT_ASSERT( str_res.substr(index, p) == rl.money_prefix );
210 index += p;
211 ++fieldIndex;
212 }
213 if (dom_fmp.neg_format().field[fieldIndex] == money_base::space ||
214 dom_fmp.neg_format().field[fieldIndex] == money_base::none) {
215 CPPUNIT_ASSERT( str_res[index++] == ' ' );
216 ++fieldIndex;
217 }
218
219 CPPUNIT_ASSERT( str_res[index++] == '1' );
220 if (!dom_fmp.grouping().empty()) {
221 CPPUNIT_ASSERT( str_res[index++] == dom_fmp.thousands_sep() );
222 }
223 CPPUNIT_ASSERT( str_res[index++] == '2' );
224 CPPUNIT_ASSERT( str_res[index++] == '3' );
225 CPPUNIT_ASSERT( str_res[index++] == '4' );
226 if (dom_fmp.frac_digits() != 0) {
227 CPPUNIT_ASSERT( str_res[index++] == dom_fmp.decimal_point() );
228 }
229 CPPUNIT_ASSERT( str_res[index++] == '5' );
230 CPPUNIT_ASSERT( str_res[index++] == '6' );
231 ++fieldIndex;
232
233 //space cannot be last:
234 if ((fieldIndex < 3) &&
235 dom_fmp.neg_format().field[fieldIndex] == money_base::space) {
236 CPPUNIT_ASSERT( str_res[index++] == ' ' );
237 ++fieldIndex;
238 }
239
240 if (fieldIndex == 3) {
241 //If none is last we should not add anything to the resulting string:
242 if (dom_fmp.neg_format().field[fieldIndex] == money_base::none) {
243 CPPUNIT_ASSERT( index == str_res.size() );
244 } else {
245 CPPUNIT_ASSERT( dom_fmp.neg_format().field[fieldIndex] == money_base::symbol );
246 CPPUNIT_ASSERT( str_res.substr(index, strlen(rl.money_suffix)) == rl.money_suffix );
247 }
248 }
249 }
250
251 //money_get
252 {
253 ios_base::iostate err = ios_base::goodbit;
254# if defined (STLPORT)
256# else
257 long double val;
258# endif
259
260 istringstream istr(str_res);
261 fmg.get(istr, istreambuf_iterator<char, char_traits<char> >(), false, ostr, err, val);
262 CPPUNIT_ASSERT( (err & (ios_base::failbit | ios_base::badbit)) == 0 );
263 if (dom_fmp.negative_sign().empty()) {
264 //Without negative sign there is no way to guess the resulting amount sign ("C" locale):
265 CPPUNIT_ASSERT( val == 123456 );
266 }
267 else {
268 CPPUNIT_ASSERT( val == -123456 );
269 }
270 }
271 }
272}
273
274
275// Test for bug in case when number of digits in value less then number
276// of digits in fraction. I.e. '9' should be printed as '0.09',
277// if x.frac_digits() == 2.
278
280{
281 const ref_monetary &rl = *prl;
283 money_put<char> const& fmp = use_facet<money_put<char> >(loc);
284
285 ostringstream ostr;
286 ostr.imbue(loc);
287 ostr << showbase;
288
289 // ostr.str("");
290 // Check value with one decimal digit:
291 {
293 moneypunct<char, false> const& dom_fmp = use_facet<moneypunct<char, false> >(loc);
294 string str_res;
295 // Check money_put
296 {
297 ostreambuf_iterator<char, char_traits<char> > res = fmp.put(ostr, false, ostr, ' ', 9);
298
299 CPPUNIT_ASSERT( !res.failed() );
300 str_res = ostr.str();
301
302 size_t fieldIndex = 0;
303 size_t index = 0;
304
305 if (dom_fmp.pos_format().field[fieldIndex] == money_base::sign) {
306 CPPUNIT_ASSERT( str_res.substr(index, dom_fmp.positive_sign().size()) == dom_fmp.positive_sign() );
307 index += dom_fmp.positive_sign().size();
308 ++fieldIndex;
309 }
310
311 string::size_type p = strlen( rl.money_prefix );
312 if (p != 0) {
313 CPPUNIT_ASSERT( str_res.substr(index, p) == rl.money_prefix );
314 index += p;
315 ++fieldIndex;
316 }
317 if (dom_fmp.neg_format().field[fieldIndex] == money_base::space ||
318 dom_fmp.neg_format().field[fieldIndex] == money_base::none) {
319 CPPUNIT_ASSERT( str_res[index++] == ' ' );
320 ++fieldIndex;
321 }
322 if (dom_fmp.frac_digits() != 0) {
323 CPPUNIT_ASSERT( str_res[index++] == '0' );
324 CPPUNIT_ASSERT( str_res[index++] == dom_fmp.decimal_point() );
325 for ( int fd = 1; fd < dom_fmp.frac_digits(); ++fd ) {
326 CPPUNIT_ASSERT( str_res[index++] == '0' );
327 }
328 }
329 CPPUNIT_ASSERT( str_res[index++] == '9' );
330 ++fieldIndex;
331
332 //space cannot be last:
333 if ((fieldIndex < 3) &&
334 dom_fmp.neg_format().field[fieldIndex] == money_base::space) {
335 CPPUNIT_ASSERT( str_res[index++] == ' ' );
336 ++fieldIndex;
337 }
338
339 if (fieldIndex == 3) {
340 //If none is last we should not add anything to the resulting string:
341 if (dom_fmp.neg_format().field[fieldIndex] == money_base::none) {
342 CPPUNIT_ASSERT( index == str_res.size() );
343 } else {
344 CPPUNIT_ASSERT( dom_fmp.neg_format().field[fieldIndex] == money_base::symbol );
345 CPPUNIT_ASSERT( str_res.substr(index, strlen(rl.money_suffix)) == rl.money_suffix );
346 }
347 }
348 }
349 }
350
351 ostr.str("");
352 // Check value with two decimal digit:
353 {
355 moneypunct<char, false> const& dom_fmp = use_facet<moneypunct<char, false> >(loc);
356 string str_res;
357 // Check money_put
358 {
359 ostreambuf_iterator<char, char_traits<char> > res = fmp.put(ostr, false, ostr, ' ', 90);
360
361 CPPUNIT_ASSERT( !res.failed() );
362 str_res = ostr.str();
363
364 size_t fieldIndex = 0;
365 size_t index = 0;
366
367 if (dom_fmp.pos_format().field[fieldIndex] == money_base::sign) {
368 CPPUNIT_ASSERT( str_res.substr(index, dom_fmp.positive_sign().size()) == dom_fmp.positive_sign() );
369 index += dom_fmp.positive_sign().size();
370 ++fieldIndex;
371 }
372
373 string::size_type p = strlen( rl.money_prefix );
374 if (p != 0) {
375 CPPUNIT_ASSERT( str_res.substr(index, p) == rl.money_prefix );
376 index += p;
377 ++fieldIndex;
378 }
379 if (dom_fmp.neg_format().field[fieldIndex] == money_base::space ||
380 dom_fmp.neg_format().field[fieldIndex] == money_base::none) {
381 CPPUNIT_ASSERT( str_res[index++] == ' ' );
382 ++fieldIndex;
383 }
384 if (dom_fmp.frac_digits() != 0) {
385 CPPUNIT_ASSERT( str_res[index++] == '0' );
386 CPPUNIT_ASSERT( str_res[index++] == dom_fmp.decimal_point() );
387 for ( int fd = 1; fd < dom_fmp.frac_digits() - 1; ++fd ) {
388 CPPUNIT_ASSERT( str_res[index++] == '0' );
389 }
390 }
391 CPPUNIT_ASSERT( str_res[index++] == '9' );
392 if (dom_fmp.frac_digits() != 0) {
393 CPPUNIT_ASSERT( str_res[index++] == '0' );
394 }
395 ++fieldIndex;
396
397 //space cannot be last:
398 if ((fieldIndex < 3) &&
399 dom_fmp.neg_format().field[fieldIndex] == money_base::space) {
400 CPPUNIT_ASSERT( str_res[index++] == ' ' );
401 ++fieldIndex;
402 }
403
404 if (fieldIndex == 3) {
405 //If none is last we should not add anything to the resulting string:
406 if (dom_fmp.neg_format().field[fieldIndex] == money_base::none) {
407 CPPUNIT_ASSERT( index == str_res.size() );
408 } else {
409 CPPUNIT_ASSERT( dom_fmp.neg_format().field[fieldIndex] == money_base::symbol );
410 CPPUNIT_ASSERT( str_res.substr(index, strlen(rl.money_suffix)) == rl.money_suffix );
411 }
412 }
413 }
414 }
415}
416
417typedef void (LocaleTest::*_Test) (const locale&, const ref_monetary*);
418static void test_supported_locale(LocaleTest& inst, _Test __test) {
419 size_t n = sizeof(tested_locales) / sizeof(tested_locales[0]);
420 for (size_t i = 0; i < n; ++i) {
421 locale loc;
422# if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS)
423 try
424# endif
425 {
427 loc = tmp;
428 }
429# if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS)
430 catch (runtime_error const&) {
431 //This locale is not supported.
432 continue;
433 }
434# endif
435 CPPUNIT_MESSAGE( loc.name().c_str() );
436 (inst.*__test)(loc, tested_locales + i);
437
438 {
439 locale tmp(locale::classic(), tested_locales[i].name, locale::monetary);
440 loc = tmp;
441 }
442 (inst.*__test)(loc, tested_locales + i);
443
444 {
447 loc = tmp1;
448 }
449 (inst.*__test)(loc, tested_locales + i);
450 }
451}
452
455
458
460{
461 /*
462 * Check of the 22.1.1.2.7 standard point. Construction of a locale
463 * instance from a null pointer or an unknown name should result in
464 * a runtime_error exception.
465 */
466# if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS)
467# if defined (STLPORT) || !defined (__GNUC__)
468 try {
469 locale loc(locale::classic(), new moneypunct_byname<char, true>(static_cast<char const*>(0)));
471 }
472 catch (runtime_error const&) {
473 }
474 catch (...) {
476 }
477# endif
478
479 try {
480 locale loc(locale::classic(), new moneypunct_byname<char, true>("yasli_language"));
482 }
483 catch (runtime_error const&) {
484 }
485 catch (...) {
487 }
488
489 try {
490 string veryLongFacetName("LC_MONETARY=");
491 veryLongFacetName.append(512, '?');
492 locale loc(locale::classic(), new moneypunct_byname<char, true>(veryLongFacetName.c_str()));
494 }
495 catch (runtime_error const& /* e */) {
496 //CPPUNIT_MESSAGE( e.what() );
497 }
498 catch (...) {
500 }
501
502# if defined (STLPORT) || !defined (__GNUC__)
503 try {
504 locale loc(locale::classic(), new moneypunct_byname<char, false>(static_cast<char const*>(0)));
506 }
507 catch (runtime_error const&) {
508 }
509 catch (...) {
511 }
512# endif
513
514 try {
515 locale loc(locale::classic(), new moneypunct_byname<char, false>("yasli_language"));
517 }
518 catch (runtime_error const&) {
519 }
520 catch (...) {
522 }
523
524 try {
525 string veryLongFacetName("LC_MONETARY=");
526 veryLongFacetName.append(512, '?');
527 locale loc(locale::classic(), new moneypunct_byname<char, false>(veryLongFacetName.c_str()));
529 }
530 catch (runtime_error const& /* e */) {
531 //CPPUNIT_MESSAGE( e.what() );
532 }
533 catch (...) {
535 }
536
537 try {
539 moneypunct<char, false> const& cfacet_byname = use_facet<moneypunct<char, false> >(loc);
540 moneypunct<char, false> const& cfacet = use_facet<moneypunct<char, false> >(locale::classic());
541
542 money_base::pattern cp = cfacet.pos_format();
543 money_base::pattern cp_bn = cfacet_byname.pos_format();
544 CPPUNIT_CHECK( cp_bn.field[0] == cp.field[0] );
545 CPPUNIT_CHECK( cp_bn.field[1] == cp.field[1] );
546 CPPUNIT_CHECK( cp_bn.field[2] == cp.field[2] );
547 CPPUNIT_CHECK( cp_bn.field[3] == cp.field[3] );
548
549 CPPUNIT_CHECK( cfacet_byname.frac_digits() == cfacet.frac_digits() );
550 if (cfacet_byname.frac_digits() != 0)
551 CPPUNIT_CHECK( cfacet_byname.decimal_point() == cfacet.decimal_point() );
552 CPPUNIT_CHECK( cfacet_byname.grouping() == cfacet.grouping() );
553 if (!cfacet_byname.grouping().empty())
554 CPPUNIT_CHECK( cfacet_byname.thousands_sep() == cfacet.thousands_sep() );
555 CPPUNIT_CHECK( cfacet_byname.positive_sign() == cfacet.positive_sign() );
556 CPPUNIT_CHECK( cfacet_byname.negative_sign() == cfacet.negative_sign() );
557 }
558 catch (runtime_error const& /* e */) {
559 /* CPPUNIT_MESSAGE( e.what() ); */
561 }
562 catch (...) {
564 }
565
566 try {
568 moneypunct<char, true> const& cfacet_byname = use_facet<moneypunct<char, true> >(loc);
569 moneypunct<char, true> const& cfacet = use_facet<moneypunct<char, true> >(locale::classic());
570
571 money_base::pattern cp = cfacet.pos_format();
572 money_base::pattern cp_bn = cfacet_byname.pos_format();
573 CPPUNIT_CHECK( cp_bn.field[0] == cp.field[0] );
574 CPPUNIT_CHECK( cp_bn.field[1] == cp.field[1] );
575 CPPUNIT_CHECK( cp_bn.field[2] == cp.field[2] );
576 CPPUNIT_CHECK( cp_bn.field[3] == cp.field[3] );
577
578 CPPUNIT_CHECK( cfacet_byname.frac_digits() == cfacet.frac_digits() );
579 if (cfacet_byname.frac_digits() != 0)
580 CPPUNIT_CHECK( cfacet_byname.decimal_point() == cfacet.decimal_point() );
581 CPPUNIT_CHECK( cfacet_byname.grouping() == cfacet.grouping() );
582 if (!cfacet_byname.grouping().empty())
583 CPPUNIT_CHECK( cfacet_byname.thousands_sep() == cfacet.thousands_sep() );
584 CPPUNIT_CHECK( cfacet_byname.positive_sign() == cfacet.positive_sign() );
585 CPPUNIT_CHECK( cfacet_byname.negative_sign() == cfacet.negative_sign() );
586 }
587 catch (runtime_error const& /* e */) {
588 /* CPPUNIT_MESSAGE( e.what() ); */
590 }
591 catch (...) {
593 }
594
595 try {
596 // On platform without real localization support we should rely on the "C" locale facet.
598 }
599 catch (runtime_error const& /* e */) {
600 /* CPPUNIT_MESSAGE( e.what() ); */
602 }
603 catch (...) {
605 }
606
607# if !defined (STLPORT) || !defined (_STLP_NO_WCHAR_T)
608# if defined (STLPORT) || !defined (__GNUC__)
609 try {
610 locale loc(locale::classic(), new moneypunct_byname<wchar_t, true>(static_cast<char const*>(0)));
612 }
613 catch (runtime_error const&) {
614 }
615 catch (...) {
617 }
618# endif
619
620 try {
621 locale loc(locale::classic(), new moneypunct_byname<wchar_t, true>("yasli_language"));
623 }
624 catch (runtime_error const&) {
625 }
626 catch (...) {
628 }
629
630# if defined (STLPORT) || !defined (__GNUC__)
631 try {
632 locale loc(locale::classic(), new moneypunct_byname<wchar_t, false>(static_cast<char const*>(0)));
634 }
635 catch (runtime_error const&) {
636 }
637 catch (...) {
639 }
640# endif
641
642 try {
643 locale loc(locale::classic(), new moneypunct_byname<wchar_t, false>("yasli_language"));
645 }
646 catch (runtime_error const&) {
647 }
648 catch (...) {
650 }
651# endif
652# endif
653}
654
655#endif
ios_base &_STLP_CALL showbase(ios_base &__s)
Definition: _ios_base.h:273
basic_ostringstream< char, char_traits< char >, allocator< char > > ostringstream
Definition: _iosfwd.h:127
bool has_facet(const locale &__loc) _STLP_NOTHROW
Definition: _locale.h:304
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
void moneypunct_by_name()
void _money_put_get(const STD locale &, const ref_monetary *)
static const char * _get_ref_monetary_name(const ref_monetary *)
void _money_put_get2(const STD locale &loc, const STD locale &streamLoc, const ref_monetary *)
void _money_put_X_bug(const STD locale &, const ref_monetary *)
static const ref_monetary * _get_ref_monetary(size_t)
int iostate
Definition: _ios_base.h:58
Definition: _locale.h:75
string name() const
Definition: locale.cpp:388
static const locale &_STLP_CALL classic()
Definition: locale.cpp:404
iter_type get(iter_type __s, iter_type __end, bool __intl, ios_base &__str, ios_base::iostate &__err, _STLP_LONGEST_FLOAT_TYPE &__units) const
Definition: _monetary.h:61
iter_type put(iter_type __s, bool __intl, ios_base &__str, char_type __fill, _STLP_LONGEST_FLOAT_TYPE __units) const
Definition: _monetary.h:395
#define CPPUNIT_CHECK(X)
Definition: cppunit_mini.h:195
#define CPPUNIT_MESSAGE(m)
Definition: cppunit_mini.h:223
#define CPPUNIT_FAIL
Definition: cppunit_mini.h:206
#define CPPUNIT_ASSERT(X)
Definition: cppunit_mini.h:200
static void test_supported_locale(LocaleTest &inst, _Test __test)
static const char * tested_locales[]
#define _STLP_LONGEST_FLOAT_TYPE
Definition: features.h:213
GLdouble n
Definition: glext.h:7729
GLuint res
Definition: glext.h:9613
GLuint index
Definition: glext.h:6031
GLuint GLfloat * val
Definition: glext.h:7180
GLfloat GLfloat p
Definition: glext.h:8902
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static const int digits[]
Definition: decode.c:71
POINT cp
Definition: magnifier.c:59
static void test_supported_locale(LocaleTest &inst, _Test __test)
static const ref_monetary tested_locales[]
void(LocaleTest::* _Test)(const locale &, const ref_monetary *)
Definition: features.h:417
#define err(...)
static int fd
Definition: io.c:51
Definition: name.c:39
const char * money_decimal_point
const char * money_prefix
const char * money_int_prefix
const char * name
const char * money_int_prefix_old
const char * money_suffix
const char * money_thousands_sep
#define const
Definition: zconf.h:233