You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@arrow.apache.org by GitBox <gi...@apache.org> on 2021/05/23 11:17:51 UTC

[GitHub] [arrow-rs] alamb commented on a change in pull request #338: Doctests for BooleanArray.

alamb commented on a change in pull request #338:
URL: https://github.com/apache/arrow-rs/pull/338#discussion_r637529335



##########
File path: arrow/src/array/array_boolean.rs
##########
@@ -27,6 +27,86 @@ use crate::buffer::{Buffer, MutableBuffer};
 use crate::util::bit_util;
 
 /// Array of bools
+///
+/// # Example **using a builder**
+///
+/// ```
+///     use arrow::array::{Array, BooleanArray};
+///     let mut builder = BooleanArray::builder(3);
+///     builder.append_value(true).unwrap();
+///     builder.append_null().unwrap();
+///     builder.append_value(false).unwrap();
+///     let arr = builder.finish();
+///     assert_eq!(3, arr.len());
+///     assert_eq!(1, arr.null_count());
+/// ```
+///
+/// # Example **from a vector**
+///
+/// ```
+///     use arrow::array::{Array, BooleanArray};
+///     use arrow::buffer::Buffer;
+///     let buf = Buffer::from([10_u8]);
+///     let arr = BooleanArray::from(vec![false, true, false, true]);

Review comment:
       I think a single example from `Option<bool>` would be good enough. 

##########
File path: arrow/src/array/array_boolean.rs
##########
@@ -27,6 +27,86 @@ use crate::buffer::{Buffer, MutableBuffer};
 use crate::util::bit_util;
 
 /// Array of bools
+///
+/// # Example **using a builder**
+///
+/// ```
+///     use arrow::array::{Array, BooleanArray};
+///     let mut builder = BooleanArray::builder(3);
+///     builder.append_value(true).unwrap();
+///     builder.append_null().unwrap();
+///     builder.append_value(false).unwrap();
+///     let arr = builder.finish();
+///     assert_eq!(3, arr.len());
+///     assert_eq!(1, arr.null_count());
+/// ```
+///
+/// # Example **from a vector**
+///
+/// ```
+///     use arrow::array::{Array, BooleanArray};
+///     use arrow::buffer::Buffer;
+///     let buf = Buffer::from([10_u8]);
+///     let arr = BooleanArray::from(vec![false, true, false, true]);
+///     assert_eq!(&buf, arr.values());
+///     assert_eq!(4, arr.len());
+///     assert_eq!(0, arr.offset());
+///     assert_eq!(0, arr.null_count());
+///     for i in 0..4 {
+///        assert!(!arr.is_null(i));
+///        assert!(arr.is_valid(i));
+///        assert_eq!(i == 1 || i == 3, arr.value(i), "failed at {}", i)
+///     }
+/// ```
+///
+/// # Example **from a vector of Option values**
+///
+/// ```
+///     use arrow::array::{Array, BooleanArray};
+///     use arrow::buffer::Buffer;
+///     let buf = Buffer::from([10_u8]);
+///     let arr = BooleanArray::from(vec![Some(false), Some(true), None, Some(true)]);
+///     assert_eq!(&buf, arr.values());
+///     assert_eq!(4, arr.len());
+///     assert_eq!(0, arr.offset());
+///     assert_eq!(1, arr.null_count());
+///     for i in 0..4 {
+///         if i == 2 {
+///             assert!(arr.is_null(i));
+///             assert!(!arr.is_valid(i));
+///         } else {
+///             assert!(!arr.is_null(i));
+///             assert!(arr.is_valid(i));
+///             assert_eq!(i == 1 || i == 3, arr.value(i), "failed at {}", i)
+///         }
+///     }
+/// ```
+///
+/// # Example **using an array builder**

Review comment:
       I think the array data version is a more advanced feature and we should probably not put that example on `BooleanArray` (perhaps it would go better on `ArrayDataBuilder`?)

##########
File path: arrow/src/array/array_boolean.rs
##########
@@ -27,6 +27,86 @@ use crate::buffer::{Buffer, MutableBuffer};
 use crate::util::bit_util;
 
 /// Array of bools
+///
+/// # Example **using a builder**
+///
+/// ```
+///     use arrow::array::{Array, BooleanArray};
+///     let mut builder = BooleanArray::builder(3);
+///     builder.append_value(true).unwrap();
+///     builder.append_null().unwrap();
+///     builder.append_value(false).unwrap();
+///     let arr = builder.finish();
+///     assert_eq!(3, arr.len());
+///     assert_eq!(1, arr.null_count());
+/// ```
+///
+/// # Example **from a vector**
+///
+/// ```
+///     use arrow::array::{Array, BooleanArray};
+///     use arrow::buffer::Buffer;
+///     let buf = Buffer::from([10_u8]);
+///     let arr = BooleanArray::from(vec![false, true, false, true]);
+///     assert_eq!(&buf, arr.values());

Review comment:
       I think the use of `Buffer` here is confusing as Buffer shouldn't be needed for most usecases. 
   
   What about just illustrating the resulting array with some calls like
   
   ```
   assert_eq!(arr.is_valid(0))
   assert_eq!(true, arr.value(0))
   ```
   etc




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org