|
39 | 39 | #include "Poco/Stopwatch.h" |
40 | 40 | #include <iostream> |
41 | 41 | #include <iomanip> |
| 42 | +#include <cstdio> |
42 | 43 |
|
43 | 44 |
|
44 | 45 | using Poco::trimLeft; |
@@ -527,39 +528,44 @@ void StringTest::testStringToFloatError() |
527 | 528 | void StringTest::testNumericLocale() |
528 | 529 | { |
529 | 530 | #if !defined(POCO_NO_LOCALE) |
530 | | - char dp = decimalSeparator(); |
531 | | - char ts = thousandSeparator(); |
532 | | - std::locale loc; |
533 | | - std::cout << "Original locale: '" << loc.c_str() << '\'' << std::endl; |
534 | | - std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl; |
535 | | - std::cout << "Thousand separator: '" << ts << '\'' << std::endl; |
536 | | - |
537 | | - std::locale::global(std::locale("German")); |
538 | | - std::locale locGerman; |
539 | | - assert (',' == decimalSeparator()); |
540 | | - assert ('.' == thousandSeparator()); |
541 | | - std::cout << "New locale: '" << locGerman.c_str() << '\'' << std::endl; |
542 | | - std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl; |
543 | | - std::cout << "Thousand separator: '" << thousandSeparator() << '\'' << std::endl; |
544 | | - |
545 | | - std::locale::global(std::locale("US")); |
546 | | - std::locale locUS; |
547 | | - assert ('.' == decimalSeparator()); |
548 | | - assert (',' == thousandSeparator()); |
549 | | - std::cout << "New locale: '" << locUS.c_str() << '\'' << std::endl; |
550 | | - std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl; |
551 | | - std::cout << "Thousand separator: '" << thousandSeparator() << '\'' << std::endl; |
552 | | - |
553 | | - std::locale::global(loc); |
554 | | - dp = decimalSeparator(); |
555 | | - ts = thousandSeparator(); |
556 | | - std::cout << "Final locale: '" << loc.c_str() << '\'' << std::endl; |
557 | | - std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl; |
558 | | - std::cout << "Thousand separator: '" << thousandSeparator() << '\'' << std::endl; |
559 | | - assert (dp == decimalSeparator()); |
560 | | - assert (ts == thousandSeparator()); |
561 | | -#else |
562 | | - std::cout << "No locale available, skipping." << std::endl; |
| 531 | + try |
| 532 | + { |
| 533 | + char dp = decimalSeparator(); |
| 534 | + char ts = thousandSeparator(); |
| 535 | + std::locale loc; |
| 536 | + std::cout << "Original locale: '" << loc.name() << '\'' << std::endl; |
| 537 | + std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl; |
| 538 | + std::cout << "Thousand separator: '" << ts << '\'' << std::endl; |
| 539 | + |
| 540 | + std::locale::global(std::locale("German")); |
| 541 | + std::locale locGerman; |
| 542 | + assert (',' == decimalSeparator()); |
| 543 | + assert ('.' == thousandSeparator()); |
| 544 | + std::cout << "New locale: '" << locGerman.name() << '\'' << std::endl; |
| 545 | + std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl; |
| 546 | + std::cout << "Thousand separator: '" << thousandSeparator() << '\'' << std::endl; |
| 547 | + |
| 548 | + std::locale::global(std::locale("US")); |
| 549 | + std::locale locUS; |
| 550 | + assert ('.' == decimalSeparator()); |
| 551 | + assert (',' == thousandSeparator()); |
| 552 | + std::cout << "New locale: '" << locUS.name() << '\'' << std::endl; |
| 553 | + std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl; |
| 554 | + std::cout << "Thousand separator: '" << thousandSeparator() << '\'' << std::endl; |
| 555 | + |
| 556 | + std::locale::global(loc); |
| 557 | + dp = decimalSeparator(); |
| 558 | + ts = thousandSeparator(); |
| 559 | + std::cout << "Final locale: '" << loc.name() << '\'' << std::endl; |
| 560 | + std::cout << "Decimal point: '" << decimalSeparator() << '\'' << std::endl; |
| 561 | + std::cout << "Thousand separator: '" << thousandSeparator() << '\'' << std::endl; |
| 562 | + assert (dp == decimalSeparator()); |
| 563 | + assert (ts == thousandSeparator()); |
| 564 | + } catch (std::runtime_error& ex) |
| 565 | + { |
| 566 | + std::cout << ex.what() << std::endl; |
| 567 | + warn ("Locale not found, skipping test"); |
| 568 | + } |
563 | 569 | #endif |
564 | 570 | } |
565 | 571 |
|
|
0 commit comments