From ba2f168c63f8f2f805cb126f060c1aa8cf41e487 Mon Sep 17 00:00:00 2001 From: Boaz Date: Sun, 15 Aug 2021 21:58:14 +0300 Subject: [PATCH] Add get_bit to BooleanBufferBuilder (#693) * Add get_bit to BooleanBufferBuilder * fix clippy --- arrow/src/array/builder.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/arrow/src/array/builder.rs b/arrow/src/array/builder.rs index d0d144af7e25..1d3e9571915e 100644 --- a/arrow/src/array/builder.rs +++ b/arrow/src/array/builder.rs @@ -311,6 +311,11 @@ impl BooleanBufferBuilder { } } + #[inline] + pub fn get_bit(&mut self, index: usize) -> bool { + bit_util::get_bit(self.buffer.as_slice(), index) + } + #[inline] pub fn is_empty(&self) -> bool { self.len == 0 @@ -2490,6 +2495,31 @@ mod tests { assert_eq!(buffer.finish().as_slice(), &[0b01010110_u8, 0b1011100_u8]); } + #[test] + fn test_bool_buffer_builder_get_first_bit() { + let mut buffer = BooleanBufferBuilder::new(16); + buffer.append_n(8, true); + buffer.append_n(8, false); + assert!(buffer.get_bit(0)); + } + + #[test] + fn test_bool_buffer_builder_get_last_bit() { + let mut buffer = BooleanBufferBuilder::new(16); + buffer.append_n(8, true); + buffer.append_n(8, false); + assert!(!buffer.get_bit(15)); + } + + #[test] + fn test_bool_buffer_builder_get_an_inner_bit() { + let mut buffer = BooleanBufferBuilder::new(16); + buffer.append_n(4, false); + buffer.append_n(8, true); + buffer.append_n(4, false); + assert!(buffer.get_bit(11)); + } + #[test] fn test_boolean_array_builder_append_slice() { let arr1 =