| 614 | } |
| 615 | |
| 616 | void |
| 617 | testIterators() |
| 618 | { |
| 619 | array a({1, true, str_}); |
| 620 | auto const& ac(a); |
| 621 | |
| 622 | { |
| 623 | auto it = a.begin(); |
| 624 | BOOST_TEST(it->is_number()); ++it; |
| 625 | BOOST_TEST(it->is_bool()); it++; |
| 626 | BOOST_TEST(it->is_string()); ++it; |
| 627 | BOOST_TEST(it == a.end()); |
| 628 | } |
| 629 | { |
| 630 | auto it = a.cbegin(); |
| 631 | BOOST_TEST(it->is_number()); ++it; |
| 632 | BOOST_TEST(it->is_bool()); it++; |
| 633 | BOOST_TEST(it->is_string()); ++it; |
| 634 | BOOST_TEST(it == a.cend()); |
| 635 | } |
| 636 | { |
| 637 | auto it = ac.begin(); |
| 638 | BOOST_TEST(it->is_number()); ++it; |
| 639 | BOOST_TEST(it->is_bool()); it++; |
| 640 | BOOST_TEST(it->is_string()); ++it; |
| 641 | BOOST_TEST(it == ac.end()); |
| 642 | } |
| 643 | { |
| 644 | auto it = a.end(); |
| 645 | --it; BOOST_TEST(it->is_string()); |
| 646 | it--; BOOST_TEST(it->is_bool()); |
| 647 | --it; BOOST_TEST(it->is_number()); |
| 648 | BOOST_TEST(it == a.begin()); |
| 649 | } |
| 650 | { |
| 651 | auto it = a.cend(); |
| 652 | --it; BOOST_TEST(it->is_string()); |
| 653 | it--; BOOST_TEST(it->is_bool()); |
| 654 | --it; BOOST_TEST(it->is_number()); |
| 655 | BOOST_TEST(it == a.cbegin()); |
| 656 | } |
| 657 | { |
| 658 | auto it = ac.end(); |
| 659 | --it; BOOST_TEST(it->is_string()); |
| 660 | it--; BOOST_TEST(it->is_bool()); |
| 661 | --it; BOOST_TEST(it->is_number()); |
| 662 | BOOST_TEST(it == ac.begin()); |
| 663 | } |
| 664 | |
| 665 | { |
| 666 | auto it = a.rbegin(); |
| 667 | BOOST_TEST(it->is_string()); ++it; |
| 668 | BOOST_TEST(it->is_bool()); it++; |
| 669 | BOOST_TEST(it->is_number()); ++it; |
| 670 | BOOST_TEST(it == a.rend()); |
| 671 | } |
| 672 | { |
| 673 | auto it = a.crbegin(); |