MCPcopy Create free account
hub / github.com/apache/arrow-rs / assert_bit_iterator_cases

Function assert_bit_iterator_cases

arrow-buffer/src/util/bit_iterator.rs:640–770  ·  view source on GitHub ↗

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)

()

Source from the content-addressed store, hash-verified

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:?})",

Callers

nothing calls this directly

Calls 6

setup_and_assertFunction · 0.85
collectMethod · 0.80
cloneMethod · 0.45
nextMethod · 0.45
next_backMethod · 0.45
lenMethod · 0.45

Tested by

no test coverage detected