Helper function that will assert that the provided operation produces the same result for both BitIterator and slice iterator under various consumption patterns (e.g. some calls to next/next_back/consume_all/etc)
()
| 638 | /// produces the same result for both BitIterator and slice iterator |
| 639 | /// under various consumption patterns (e.g. some calls to next/next_back/consume_all/etc) |
| 640 | fn assert_bit_iterator_cases<O: BitIteratorOp>() { |
| 641 | setup_and_assert( |
| 642 | |_iter: &mut dyn SharedBetweenBitIteratorAndSliceIter| {}, |
| 643 | |actual, expected| { |
| 644 | let current_iterator_values: Vec<bool> = expected.clone().collect(); |
| 645 | assert_eq!( |
| 646 | O::get_value(actual), |
| 647 | O::get_value(expected), |
| 648 | "Failed on op {} for new iter (left actual, right expected) ({current_iterator_values:?})", |
| 649 | O::NAME |
| 650 | ); |
| 651 | }, |
| 652 | ); |
| 653 | |
| 654 | setup_and_assert( |
| 655 | |iter: &mut dyn SharedBetweenBitIteratorAndSliceIter| { |
| 656 | iter.next(); |
| 657 | }, |
| 658 | |actual, expected| { |
| 659 | let current_iterator_values: Vec<bool> = expected.clone().collect(); |
| 660 | |
| 661 | assert_eq!( |
| 662 | O::get_value(actual), |
| 663 | O::get_value(expected), |
| 664 | "Failed on op {} for new iter after consuming 1 element from the start (left actual, right expected) ({current_iterator_values:?})", |
| 665 | O::NAME |
| 666 | ); |
| 667 | }, |
| 668 | ); |
| 669 | |
| 670 | setup_and_assert( |
| 671 | |iter: &mut dyn SharedBetweenBitIteratorAndSliceIter| { |
| 672 | iter.next_back(); |
| 673 | }, |
| 674 | |actual, expected| { |
| 675 | let current_iterator_values: Vec<bool> = expected.clone().collect(); |
| 676 | |
| 677 | assert_eq!( |
| 678 | O::get_value(actual), |
| 679 | O::get_value(expected), |
| 680 | "Failed on op {} for new iter after consuming 1 element from the end (left actual, right expected) ({current_iterator_values:?})", |
| 681 | O::NAME |
| 682 | ); |
| 683 | }, |
| 684 | ); |
| 685 | |
| 686 | setup_and_assert( |
| 687 | |iter: &mut dyn SharedBetweenBitIteratorAndSliceIter| { |
| 688 | iter.next(); |
| 689 | iter.next_back(); |
| 690 | }, |
| 691 | |actual, expected| { |
| 692 | let current_iterator_values: Vec<bool> = expected.clone().collect(); |
| 693 | |
| 694 | assert_eq!( |
| 695 | O::get_value(actual), |
| 696 | O::get_value(expected), |
| 697 | "Failed on op {} for new iter after consuming 1 element from start and end (left actual, right expected) ({current_iterator_values:?})", |