You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by al...@apache.org on 2021/08/06 21:00:36 UTC
[arrow-rs] branch active_release updated: Doctests for from_iter
for BooleanArray & for BooleanBuilder. (#647) (#669)
This is an automated email from the ASF dual-hosted git repository.
alamb pushed a commit to branch active_release
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/active_release by this push:
new dace74b Doctests for from_iter for BooleanArray & for BooleanBuilder. (#647) (#669)
dace74b is described below
commit dace74b840baae239e6feb379ce152db01bdf155
Author: Andrew Lamb <an...@nerdnetworks.org>
AuthorDate: Fri Aug 6 17:00:32 2021 -0400
Doctests for from_iter for BooleanArray & for BooleanBuilder. (#647) (#669)
Co-authored-by: Navin <na...@novemberkilo.com>
---
arrow/src/array/array_boolean.rs | 31 +++++++++++++++++++++++++++++++
arrow/src/array/builder.rs | 29 +++++++++++++++++++++++++++++
2 files changed, 60 insertions(+)
diff --git a/arrow/src/array/array_boolean.rs b/arrow/src/array/array_boolean.rs
index d9c4480..5357614 100644
--- a/arrow/src/array/array_boolean.rs
+++ b/arrow/src/array/array_boolean.rs
@@ -47,6 +47,23 @@ use crate::util::bit_util;
/// assert_eq!(true, arr.value(3));
/// ```
///
+/// Using `from_iter`
+/// ```
+/// use arrow::array::{Array, BooleanArray};
+/// let v = vec![Some(false), Some(true), Some(false), Some(true)];
+/// let arr = v.into_iter().collect::<BooleanArray>();
+/// assert_eq!(4, arr.len());
+/// assert_eq!(0, arr.offset());
+/// assert_eq!(0, arr.null_count());
+/// assert!(arr.is_valid(0));
+/// assert_eq!(false, arr.value(0));
+/// assert!(arr.is_valid(1));
+/// assert_eq!(true, arr.value(1));
+/// assert!(arr.is_valid(2));
+/// assert_eq!(false, arr.value(2));
+/// assert!(arr.is_valid(3));
+/// assert_eq!(true, arr.value(3));
+/// ```
pub struct BooleanArray {
data: ArrayData,
/// Pointer to the value array. The lifetime of this must be <= to the value buffer
@@ -271,6 +288,20 @@ mod tests {
}
#[test]
+ fn test_boolean_array_from_iter() {
+ let v = vec![Some(false), Some(true), Some(false), Some(true)];
+ let arr = v.into_iter().collect::<BooleanArray>();
+ assert_eq!(4, arr.len());
+ assert_eq!(0, arr.offset());
+ assert_eq!(0, arr.null_count());
+ for i in 0..3 {
+ assert!(!arr.is_null(i));
+ assert!(arr.is_valid(i));
+ assert_eq!(i == 1 || i == 3, arr.value(i), "failed at {}", i)
+ }
+ }
+
+ #[test]
fn test_boolean_array_builder() {
// Test building a boolean array with ArrayData builder and offset
// 000011011
diff --git a/arrow/src/array/builder.rs b/arrow/src/array/builder.rs
index a7bc53f..c3835f9 100644
--- a/arrow/src/array/builder.rs
+++ b/arrow/src/array/builder.rs
@@ -472,6 +472,35 @@ pub trait ArrayBuilder: Any + Send {
}
/// Array builder for fixed-width primitive types
+///
+/// # Example
+///
+/// Create a `BooleanArray` from a `BooleanBuilder`
+///
+/// ```
+/// use arrow::array::{Array, BooleanArray, BooleanBuilder};
+///
+/// let mut b = BooleanBuilder::new(4);
+/// b.append_value(true);
+/// b.append_null();
+/// b.append_value(false);
+/// b.append_value(true);
+/// let arr = b.finish();
+///
+/// assert_eq!(4, arr.len());
+/// assert_eq!(1, arr.null_count());
+/// assert_eq!(true, arr.value(0));
+/// assert!(arr.is_valid(0));
+/// assert!(!arr.is_null(0));
+/// assert!(!arr.is_valid(1));
+/// assert!(arr.is_null(1));
+/// assert_eq!(false, arr.value(2));
+/// assert!(arr.is_valid(2));
+/// assert!(!arr.is_null(2));
+/// assert_eq!(true, arr.value(3));
+/// assert!(arr.is_valid(3));
+/// assert!(!arr.is_null(3));
+/// ```
#[derive(Debug)]
pub struct BooleanBuilder {
values_builder: BooleanBufferBuilder,