From 3f45a77deaf2a807f2c99a07912125f9c8abd5bd Mon Sep 17 00:00:00 2001 From: boazberman Date: Sat, 14 Aug 2021 19:04:59 +0300 Subject: [PATCH 1/2] Add get_bit to BooleanBufferBuilder --- 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 8a4ebbff0541..cf916aa41f65 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 @@ -2647,6 +2652,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_eq!(buffer.get_bit(0), true); + } + + #[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_eq!(buffer.get_bit(15), false); + } + + #[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_eq!(buffer.get_bit(11), true); + } + #[test] fn test_boolean_array_builder_append_slice() { let arr1 = From eb2ff69be0bfeefe132c3183bef48d2ad56898c6 Mon Sep 17 00:00:00 2001 From: boazberman Date: Sat, 14 Aug 2021 19:33:23 +0300 Subject: [PATCH 2/2] fix clippy --- arrow/src/array/builder.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arrow/src/array/builder.rs b/arrow/src/array/builder.rs index cf916aa41f65..8065f16ade76 100644 --- a/arrow/src/array/builder.rs +++ b/arrow/src/array/builder.rs @@ -2657,7 +2657,7 @@ mod tests { let mut buffer = BooleanBufferBuilder::new(16); buffer.append_n(8, true); buffer.append_n(8, false); - assert_eq!(buffer.get_bit(0), true); + assert!(buffer.get_bit(0)); } #[test] @@ -2665,7 +2665,7 @@ mod tests { let mut buffer = BooleanBufferBuilder::new(16); buffer.append_n(8, true); buffer.append_n(8, false); - assert_eq!(buffer.get_bit(15), false); + assert!(!buffer.get_bit(15)); } #[test] @@ -2674,7 +2674,7 @@ mod tests { buffer.append_n(4, false); buffer.append_n(8, true); buffer.append_n(4, false); - assert_eq!(buffer.get_bit(11), true); + assert!(buffer.get_bit(11)); } #[test]