use arrow2::array::{MutableArray, MutableBooleanArray, TryExtendFromSelf}; 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 pop() { let mut a = MutableBooleanArray::new(); a.push(Some(true)); a.push(Some(false)); a.push(None); a.push_null(); assert_eq!(a.pop(), None); assert_eq!(a.len(), 3); assert_eq!(a.pop(), None); assert_eq!(a.len(), 2); assert_eq!(a.pop(), Some(false)); assert_eq!(a.len(), 1); assert_eq!(a.pop(), Some(true)); assert_eq!(a.len(), 0); assert_eq!(a.pop(), None); assert_eq!(a.len(), 0); } #[test] fn pop_all_some() { let mut a = MutableBooleanArray::new(); for _ in 0..4 { a.push(Some(true)); } for _ in 0..4 { a.push(Some(false)); } a.push(Some(true)); assert_eq!(a.pop(), Some(true)); assert_eq!(a.pop(), Some(false)); assert_eq!(a.pop(), Some(false)); assert_eq!(a.pop(), Some(false)); assert_eq!(a.len(), 5); assert_eq!( a, MutableBooleanArray::from([Some(true), Some(true), Some(true), Some(true), Some(false)]) ); } #[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::try_new( DataType::Boolean, MutableBitmap::new(), Some(MutableBitmap::new()), ) .unwrap(); 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])); } #[test] fn into_iter() { let ve = MutableBitmap::from([true, false]) .into_iter() .collect::>(); assert_eq!(ve, vec![true, false]); let ve = MutableBitmap::from([true, false]) .iter() .collect::>(); assert_eq!(ve, vec![true, false]); } #[test] fn shrink_to_fit() { let mut a = MutableBitmap::with_capacity(100); a.push(true); a.shrink_to_fit(); assert_eq!(a.capacity(), 8); } #[test] fn extend_from_self() { let mut a = MutableBooleanArray::from([Some(true), None]); a.try_extend_from_self(&a.clone()).unwrap(); assert_eq!( a, MutableBooleanArray::from([Some(true), None, Some(true), None]) ); }