arrow2 0.10.1

Unofficial implementation of Apache Arrow spec in safe Rust
Documentation
use arrow2::array::{MutableArray, MutableBooleanArray};
use arrow2::bitmap::MutableBitmap;
use arrow2::datatypes::DataType;
use arrow2::error::Result;

#[test]
fn set() {
    let mut a = MutableBooleanArray::from(&[Some(false), Some(true), Some(false)]);

    a.set(1, None);
    a.set(0, Some(true));
    assert_eq!(
        a,
        MutableBooleanArray::from([Some(true), None, Some(false)])
    );
    assert_eq!(a.values(), &MutableBitmap::from([true, false, false]));
}

#[test]
fn push() {
    let mut a = MutableBooleanArray::new();
    a.push(Some(true));
    a.push(Some(false));
    a.push(None);
    a.push_null();
    assert_eq!(
        a,
        MutableBooleanArray::from([Some(true), Some(false), None, None])
    );
}

#[test]
fn from_trusted_len_iter() {
    let iter = std::iter::repeat(true).take(2).map(Some);
    let a = MutableBooleanArray::from_trusted_len_iter(iter);
    assert_eq!(a, MutableBooleanArray::from([Some(true), Some(true)]));
}

#[test]
fn from_iter() {
    let iter = std::iter::repeat(true).take(2).map(Some);
    let a: MutableBooleanArray = iter.collect();
    assert_eq!(a, MutableBooleanArray::from([Some(true), Some(true)]));
}

#[test]
fn try_from_trusted_len_iter() {
    let iter = vec![Some(true), Some(true), None]
        .into_iter()
        .map(Result::Ok);
    let a = MutableBooleanArray::try_from_trusted_len_iter(iter).unwrap();
    assert_eq!(a, MutableBooleanArray::from([Some(true), Some(true), None]));
}

#[test]
fn reserve() {
    let mut a = MutableBooleanArray::from_data(
        DataType::Boolean,
        MutableBitmap::new(),
        Some(MutableBitmap::new()),
    );

    a.reserve(10);
    assert!(a.validity().unwrap().capacity() > 0);
    assert!(a.values().capacity() > 0)
}

#[test]
fn extend_trusted_len() {
    let mut a = MutableBooleanArray::new();

    a.extend_trusted_len(vec![Some(true), Some(false)].into_iter());
    assert_eq!(a.validity(), None);

    a.extend_trusted_len(vec![None, Some(true)].into_iter());
    assert_eq!(
        a.validity(),
        Some(&MutableBitmap::from([true, true, false, true]))
    );
    assert_eq!(a.values(), &MutableBitmap::from([true, false, false, true]));
}

#[test]
fn extend_trusted_len_values() {
    let mut a = MutableBooleanArray::new();

    a.extend_trusted_len_values(vec![true, true, false].into_iter());
    assert_eq!(a.validity(), None);
    assert_eq!(a.values(), &MutableBitmap::from([true, true, false]));

    let mut a = MutableBooleanArray::new();
    a.push(None);
    a.extend_trusted_len_values(vec![true, false].into_iter());
    assert_eq!(
        a.validity(),
        Some(&MutableBitmap::from([false, true, true]))
    );
    assert_eq!(a.values(), &MutableBitmap::from([false, true, false]));
}