|
11 | 11 | // NetBSD does not support LC_MONETARY at the moment
|
12 | 12 | // XFAIL: netbsd
|
13 | 13 |
|
14 |
| -// XFAIL: LIBCXX-AIX-FIXME |
15 |
| - |
16 | 14 | // REQUIRES: locale.fr_FR.UTF-8
|
17 | 15 |
|
18 | 16 | // <locale>
|
|
32 | 30 | #include "platform_support.h" // locale name macros
|
33 | 31 | #include "test_macros.h"
|
34 | 32 |
|
| 33 | +#ifdef _AIX |
| 34 | +// the AIX libc expects U202F as LC_MONETARY thousands_sep |
| 35 | +# define THOUSANDS_SEP L"\u202F" |
| 36 | +#else |
| 37 | +# define THOUSANDS_SEP L" " |
| 38 | +#endif |
| 39 | + |
35 | 40 | typedef std::money_get<char, cpp17_input_iterator<const char*> > Fn;
|
36 | 41 |
|
37 | 42 | class my_facet
|
@@ -432,26 +437,24 @@ int main(int, char**)
|
432 | 437 | assert(ex == -1);
|
433 | 438 | }
|
434 | 439 | { // positive
|
435 |
| - std::wstring v = convert_thousands_sep(L"1 234 567,89 "); |
436 |
| - typedef cpp17_input_iterator<const wchar_t*> I; |
437 |
| - long double ex; |
438 |
| - std::ios_base::iostate err = std::ios_base::goodbit; |
439 |
| - I iter = f.get(I(v.data()), I(v.data() + v.size()), |
440 |
| - false, ios, err, ex); |
441 |
| - assert(base(iter) == v.data() + v.size()); |
442 |
| - assert(err == std::ios_base::eofbit); |
443 |
| - assert(ex == 123456789); |
| 440 | + std::wstring v = convert_thousands_sep(L"1" THOUSANDS_SEP "234" THOUSANDS_SEP "567,89 "); |
| 441 | + typedef cpp17_input_iterator<const wchar_t*> I; |
| 442 | + long double ex; |
| 443 | + std::ios_base::iostate err = std::ios_base::goodbit; |
| 444 | + I iter = f.get(I(v.data()), I(v.data() + v.size()), false, ios, err, ex); |
| 445 | + assert(base(iter) == v.data() + v.size()); |
| 446 | + assert(err == std::ios_base::eofbit); |
| 447 | + assert(ex == 123456789); |
444 | 448 | }
|
445 | 449 | { // negative
|
446 |
| - std::wstring v = convert_thousands_sep(L"-1 234 567,89"); |
447 |
| - typedef cpp17_input_iterator<const wchar_t*> I; |
448 |
| - long double ex; |
449 |
| - std::ios_base::iostate err = std::ios_base::goodbit; |
450 |
| - I iter = f.get(I(v.data()), I(v.data() + v.size()), |
451 |
| - false, ios, err, ex); |
452 |
| - assert(base(iter) == v.data() + v.size()); |
453 |
| - assert(err == std::ios_base::eofbit); |
454 |
| - assert(ex == -123456789); |
| 450 | + std::wstring v = convert_thousands_sep(L"-1" THOUSANDS_SEP "234" THOUSANDS_SEP "567,89"); |
| 451 | + typedef cpp17_input_iterator<const wchar_t*> I; |
| 452 | + long double ex; |
| 453 | + std::ios_base::iostate err = std::ios_base::goodbit; |
| 454 | + I iter = f.get(I(v.data()), I(v.data() + v.size()), false, ios, err, ex); |
| 455 | + assert(base(iter) == v.data() + v.size()); |
| 456 | + assert(err == std::ios_base::eofbit); |
| 457 | + assert(ex == -123456789); |
455 | 458 | }
|
456 | 459 | { // negative
|
457 | 460 | std::wstring v = L"-1234567,89";
|
@@ -512,64 +515,59 @@ int main(int, char**)
|
512 | 515 | assert(ex == -1);
|
513 | 516 | }
|
514 | 517 | { // positive, showbase
|
515 |
| - std::wstring v = convert_thousands_sep(L"1 234 567,89 \u20ac"); // EURO SIGN |
516 |
| - typedef cpp17_input_iterator<const wchar_t*> I; |
517 |
| - long double ex; |
518 |
| - std::ios_base::iostate err = std::ios_base::goodbit; |
519 |
| - I iter = f.get(I(v.data()), I(v.data() + v.size()), |
520 |
| - false, ios, err, ex); |
521 |
| - assert(base(iter) == v.data() + v.size()); |
522 |
| - assert(err == std::ios_base::eofbit); |
523 |
| - assert(ex == 123456789); |
| 518 | + std::wstring v = convert_thousands_sep(L"1" THOUSANDS_SEP "234" THOUSANDS_SEP "567,89 \u20ac"); // EURO SIGN |
| 519 | + typedef cpp17_input_iterator<const wchar_t*> I; |
| 520 | + long double ex; |
| 521 | + std::ios_base::iostate err = std::ios_base::goodbit; |
| 522 | + I iter = f.get(I(v.data()), I(v.data() + v.size()), false, ios, err, ex); |
| 523 | + assert(base(iter) == v.data() + v.size()); |
| 524 | + assert(err == std::ios_base::eofbit); |
| 525 | + assert(ex == 123456789); |
524 | 526 | }
|
525 | 527 | { // positive, showbase
|
526 |
| - std::wstring v = convert_thousands_sep(L"1 234 567,89 \u20ac"); // EURO SIGN |
527 |
| - std::showbase(ios); |
528 |
| - typedef cpp17_input_iterator<const wchar_t*> I; |
529 |
| - long double ex; |
530 |
| - std::ios_base::iostate err = std::ios_base::goodbit; |
531 |
| - I iter = f.get(I(v.data()), I(v.data() + v.size()), |
532 |
| - false, ios, err, ex); |
533 |
| - assert(base(iter) == v.data() + v.size()); |
534 |
| - assert(err == std::ios_base::eofbit); |
535 |
| - assert(ex == 123456789); |
536 |
| - std::noshowbase(ios); |
| 528 | + std::wstring v = convert_thousands_sep(L"1" THOUSANDS_SEP "234" THOUSANDS_SEP "567,89 \u20ac"); // EURO SIGN |
| 529 | + std::showbase(ios); |
| 530 | + typedef cpp17_input_iterator<const wchar_t*> I; |
| 531 | + long double ex; |
| 532 | + std::ios_base::iostate err = std::ios_base::goodbit; |
| 533 | + I iter = f.get(I(v.data()), I(v.data() + v.size()), false, ios, err, ex); |
| 534 | + assert(base(iter) == v.data() + v.size()); |
| 535 | + assert(err == std::ios_base::eofbit); |
| 536 | + assert(ex == 123456789); |
| 537 | + std::noshowbase(ios); |
537 | 538 | }
|
538 | 539 | { // negative, showbase
|
539 |
| - std::wstring v = convert_thousands_sep(L"-1 234 567,89 \u20ac"); // EURO SIGN |
540 |
| - std::showbase(ios); |
541 |
| - typedef cpp17_input_iterator<const wchar_t*> I; |
542 |
| - long double ex; |
543 |
| - std::ios_base::iostate err = std::ios_base::goodbit; |
544 |
| - I iter = f.get(I(v.data()), I(v.data() + v.size()), |
545 |
| - false, ios, err, ex); |
546 |
| - assert(base(iter) == v.data() + v.size()); |
547 |
| - assert(err == std::ios_base::eofbit); |
548 |
| - assert(ex == -123456789); |
549 |
| - std::noshowbase(ios); |
| 540 | + std::wstring v = convert_thousands_sep(L"-1" THOUSANDS_SEP "234" THOUSANDS_SEP "567,89 \u20ac"); // EURO SIGN |
| 541 | + std::showbase(ios); |
| 542 | + typedef cpp17_input_iterator<const wchar_t*> I; |
| 543 | + long double ex; |
| 544 | + std::ios_base::iostate err = std::ios_base::goodbit; |
| 545 | + I iter = f.get(I(v.data()), I(v.data() + v.size()), false, ios, err, ex); |
| 546 | + assert(base(iter) == v.data() + v.size()); |
| 547 | + assert(err == std::ios_base::eofbit); |
| 548 | + assert(ex == -123456789); |
| 549 | + std::noshowbase(ios); |
550 | 550 | }
|
551 | 551 | { // negative, showbase
|
552 |
| - std::wstring v = convert_thousands_sep(L"1 234 567,89 EUR -"); |
553 |
| - std::showbase(ios); |
554 |
| - typedef cpp17_input_iterator<const wchar_t*> I; |
555 |
| - long double ex; |
556 |
| - std::ios_base::iostate err = std::ios_base::goodbit; |
557 |
| - I iter = f.get(I(v.data()), I(v.data() + v.size()), |
558 |
| - false, ios, err, ex); |
559 |
| - assert(base(iter) == v.data() + 13); |
560 |
| - assert(err == std::ios_base::failbit); |
561 |
| - std::noshowbase(ios); |
| 552 | + std::wstring v = convert_thousands_sep(L"1" THOUSANDS_SEP "234" THOUSANDS_SEP "567,89 EUR -"); |
| 553 | + std::showbase(ios); |
| 554 | + typedef cpp17_input_iterator<const wchar_t*> I; |
| 555 | + long double ex; |
| 556 | + std::ios_base::iostate err = std::ios_base::goodbit; |
| 557 | + I iter = f.get(I(v.data()), I(v.data() + v.size()), false, ios, err, ex); |
| 558 | + assert(base(iter) == v.data() + 13); |
| 559 | + assert(err == std::ios_base::failbit); |
| 560 | + std::noshowbase(ios); |
562 | 561 | }
|
563 | 562 | { // negative, showbase
|
564 |
| - std::wstring v = convert_thousands_sep(L"1 234 567,89 EUR -"); |
565 |
| - typedef cpp17_input_iterator<const wchar_t*> I; |
566 |
| - long double ex; |
567 |
| - std::ios_base::iostate err = std::ios_base::goodbit; |
568 |
| - I iter = f.get(I(v.data()), I(v.data() + v.size()), |
569 |
| - false, ios, err, ex); |
570 |
| - assert(base(iter) == v.data() + 13); |
571 |
| - assert(err == std::ios_base::goodbit); |
572 |
| - assert(ex == 123456789); |
| 563 | + std::wstring v = convert_thousands_sep(L"1" THOUSANDS_SEP "234" THOUSANDS_SEP "567,89 EUR -"); |
| 564 | + typedef cpp17_input_iterator<const wchar_t*> I; |
| 565 | + long double ex; |
| 566 | + std::ios_base::iostate err = std::ios_base::goodbit; |
| 567 | + I iter = f.get(I(v.data()), I(v.data() + v.size()), false, ios, err, ex); |
| 568 | + assert(base(iter) == v.data() + 13); |
| 569 | + assert(err == std::ios_base::goodbit); |
| 570 | + assert(ex == 123456789); |
573 | 571 | }
|
574 | 572 | }
|
575 | 573 | {
|
@@ -598,26 +596,24 @@ int main(int, char**)
|
598 | 596 | assert(ex == -1);
|
599 | 597 | }
|
600 | 598 | { // positive
|
601 |
| - std::wstring v = convert_thousands_sep(L"1 234 567,89 "); |
602 |
| - typedef cpp17_input_iterator<const wchar_t*> I; |
603 |
| - long double ex; |
604 |
| - std::ios_base::iostate err = std::ios_base::goodbit; |
605 |
| - I iter = f.get(I(v.data()), I(v.data() + v.size()), |
606 |
| - true, ios, err, ex); |
607 |
| - assert(base(iter) == v.data() + v.size()); |
608 |
| - assert(err == std::ios_base::eofbit); |
609 |
| - assert(ex == 123456789); |
| 599 | + std::wstring v = convert_thousands_sep(L"1" THOUSANDS_SEP "234" THOUSANDS_SEP "567,89 "); |
| 600 | + typedef cpp17_input_iterator<const wchar_t*> I; |
| 601 | + long double ex; |
| 602 | + std::ios_base::iostate err = std::ios_base::goodbit; |
| 603 | + I iter = f.get(I(v.data()), I(v.data() + v.size()), true, ios, err, ex); |
| 604 | + assert(base(iter) == v.data() + v.size()); |
| 605 | + assert(err == std::ios_base::eofbit); |
| 606 | + assert(ex == 123456789); |
610 | 607 | }
|
611 | 608 | { // negative
|
612 |
| - std::wstring v = convert_thousands_sep(L"-1 234 567,89"); |
613 |
| - typedef cpp17_input_iterator<const wchar_t*> I; |
614 |
| - long double ex; |
615 |
| - std::ios_base::iostate err = std::ios_base::goodbit; |
616 |
| - I iter = f.get(I(v.data()), I(v.data() + v.size()), |
617 |
| - true, ios, err, ex); |
618 |
| - assert(base(iter) == v.data() + v.size()); |
619 |
| - assert(err == std::ios_base::eofbit); |
620 |
| - assert(ex == -123456789); |
| 609 | + std::wstring v = convert_thousands_sep(L"-1" THOUSANDS_SEP "234" THOUSANDS_SEP "567,89"); |
| 610 | + typedef cpp17_input_iterator<const wchar_t*> I; |
| 611 | + long double ex; |
| 612 | + std::ios_base::iostate err = std::ios_base::goodbit; |
| 613 | + I iter = f.get(I(v.data()), I(v.data() + v.size()), true, ios, err, ex); |
| 614 | + assert(base(iter) == v.data() + v.size()); |
| 615 | + assert(err == std::ios_base::eofbit); |
| 616 | + assert(ex == -123456789); |
621 | 617 | }
|
622 | 618 | { // negative
|
623 | 619 | std::wstring v = L"-1234567,89";
|
@@ -678,64 +674,59 @@ int main(int, char**)
|
678 | 674 | assert(ex == -1);
|
679 | 675 | }
|
680 | 676 | { // positive, showbase
|
681 |
| - std::wstring v = convert_thousands_sep(L"1 234 567,89 EUR"); |
682 |
| - typedef cpp17_input_iterator<const wchar_t*> I; |
683 |
| - long double ex; |
684 |
| - std::ios_base::iostate err = std::ios_base::goodbit; |
685 |
| - I iter = f.get(I(v.data()), I(v.data() + v.size()), |
686 |
| - true, ios, err, ex); |
687 |
| - assert(base(iter) == v.data() + v.size()); |
688 |
| - assert(err == std::ios_base::eofbit); |
689 |
| - assert(ex == 123456789); |
| 677 | + std::wstring v = convert_thousands_sep(L"1" THOUSANDS_SEP "234" THOUSANDS_SEP "567,89 EUR"); |
| 678 | + typedef cpp17_input_iterator<const wchar_t*> I; |
| 679 | + long double ex; |
| 680 | + std::ios_base::iostate err = std::ios_base::goodbit; |
| 681 | + I iter = f.get(I(v.data()), I(v.data() + v.size()), true, ios, err, ex); |
| 682 | + assert(base(iter) == v.data() + v.size()); |
| 683 | + assert(err == std::ios_base::eofbit); |
| 684 | + assert(ex == 123456789); |
690 | 685 | }
|
691 | 686 | { // positive, showbase
|
692 |
| - std::wstring v = convert_thousands_sep(L"1 234 567,89 EUR"); |
693 |
| - std::showbase(ios); |
694 |
| - typedef cpp17_input_iterator<const wchar_t*> I; |
695 |
| - long double ex; |
696 |
| - std::ios_base::iostate err = std::ios_base::goodbit; |
697 |
| - I iter = f.get(I(v.data()), I(v.data() + v.size()), |
698 |
| - true, ios, err, ex); |
699 |
| - assert(base(iter) == v.data() + v.size()); |
700 |
| - assert(err == std::ios_base::eofbit); |
701 |
| - assert(ex == 123456789); |
702 |
| - std::noshowbase(ios); |
| 687 | + std::wstring v = convert_thousands_sep(L"1" THOUSANDS_SEP "234" THOUSANDS_SEP "567,89 EUR"); |
| 688 | + std::showbase(ios); |
| 689 | + typedef cpp17_input_iterator<const wchar_t*> I; |
| 690 | + long double ex; |
| 691 | + std::ios_base::iostate err = std::ios_base::goodbit; |
| 692 | + I iter = f.get(I(v.data()), I(v.data() + v.size()), true, ios, err, ex); |
| 693 | + assert(base(iter) == v.data() + v.size()); |
| 694 | + assert(err == std::ios_base::eofbit); |
| 695 | + assert(ex == 123456789); |
| 696 | + std::noshowbase(ios); |
703 | 697 | }
|
704 | 698 | { // negative, showbase
|
705 |
| - std::wstring v = convert_thousands_sep(L"-1 234 567,89 EUR"); |
706 |
| - std::showbase(ios); |
707 |
| - typedef cpp17_input_iterator<const wchar_t*> I; |
708 |
| - long double ex; |
709 |
| - std::ios_base::iostate err = std::ios_base::goodbit; |
710 |
| - I iter = f.get(I(v.data()), I(v.data() + v.size()), |
711 |
| - true, ios, err, ex); |
712 |
| - assert(base(iter) == v.data() + v.size()); |
713 |
| - assert(err == std::ios_base::eofbit); |
714 |
| - assert(ex == -123456789); |
715 |
| - std::noshowbase(ios); |
| 699 | + std::wstring v = convert_thousands_sep(L"-1" THOUSANDS_SEP "234" THOUSANDS_SEP "567,89 EUR"); |
| 700 | + std::showbase(ios); |
| 701 | + typedef cpp17_input_iterator<const wchar_t*> I; |
| 702 | + long double ex; |
| 703 | + std::ios_base::iostate err = std::ios_base::goodbit; |
| 704 | + I iter = f.get(I(v.data()), I(v.data() + v.size()), true, ios, err, ex); |
| 705 | + assert(base(iter) == v.data() + v.size()); |
| 706 | + assert(err == std::ios_base::eofbit); |
| 707 | + assert(ex == -123456789); |
| 708 | + std::noshowbase(ios); |
716 | 709 | }
|
717 | 710 | { // negative, showbase
|
718 |
| - std::wstring v = convert_thousands_sep(L"1 234 567,89 Eu-"); |
719 |
| - std::showbase(ios); |
720 |
| - typedef cpp17_input_iterator<const wchar_t*> I; |
721 |
| - long double ex; |
722 |
| - std::ios_base::iostate err = std::ios_base::goodbit; |
723 |
| - I iter = f.get(I(v.data()), I(v.data() + v.size()), |
724 |
| - true, ios, err, ex); |
725 |
| - assert(base(iter) == v.data() + 14); |
726 |
| - assert(err == std::ios_base::failbit); |
727 |
| - std::noshowbase(ios); |
| 711 | + std::wstring v = convert_thousands_sep(L"1" THOUSANDS_SEP "234" THOUSANDS_SEP "567,89 Eu-"); |
| 712 | + std::showbase(ios); |
| 713 | + typedef cpp17_input_iterator<const wchar_t*> I; |
| 714 | + long double ex; |
| 715 | + std::ios_base::iostate err = std::ios_base::goodbit; |
| 716 | + I iter = f.get(I(v.data()), I(v.data() + v.size()), true, ios, err, ex); |
| 717 | + assert(base(iter) == v.data() + 14); |
| 718 | + assert(err == std::ios_base::failbit); |
| 719 | + std::noshowbase(ios); |
728 | 720 | }
|
729 | 721 | { // negative, showbase
|
730 |
| - std::wstring v = convert_thousands_sep(L"1 234 567,89 Eu-"); |
731 |
| - typedef cpp17_input_iterator<const wchar_t*> I; |
732 |
| - long double ex; |
733 |
| - std::ios_base::iostate err = std::ios_base::goodbit; |
734 |
| - I iter = f.get(I(v.data()), I(v.data() + v.size()), |
735 |
| - true, ios, err, ex); |
736 |
| - assert(base(iter) == v.data() + 13); |
737 |
| - assert(err == std::ios_base::goodbit); |
738 |
| - assert(ex == 123456789); |
| 722 | + std::wstring v = convert_thousands_sep(L"1" THOUSANDS_SEP "234" THOUSANDS_SEP "567,89 Eu-"); |
| 723 | + typedef cpp17_input_iterator<const wchar_t*> I; |
| 724 | + long double ex; |
| 725 | + std::ios_base::iostate err = std::ios_base::goodbit; |
| 726 | + I iter = f.get(I(v.data()), I(v.data() + v.size()), true, ios, err, ex); |
| 727 | + assert(base(iter) == v.data() + 13); |
| 728 | + assert(err == std::ios_base::goodbit); |
| 729 | + assert(ex == 123456789); |
739 | 730 | }
|
740 | 731 | }
|
741 | 732 | #endif // TEST_HAS_NO_WIDE_CHARACTERS
|
|
0 commit comments