use proptest::prelude::*;
use arrow2::bitmap::{and, or, xor, Bitmap};
use crate::bitmap::bitmap_strategy;
proptest! {
#[test]
#[cfg_attr(miri, ignore)] fn not(bitmap in bitmap_strategy()) {
let not_bitmap: Bitmap = bitmap.iter().map(|x| !x).collect();
assert_eq!(!&bitmap, not_bitmap);
}
}
#[test]
fn test_fast_paths() {
let all_true = Bitmap::from(&[true, true]);
let all_false = Bitmap::from(&[false, false]);
let toggled = Bitmap::from(&[true, false]);
assert_eq!(and(&all_true, &all_true), all_true);
assert_eq!(and(&all_false, &all_true), all_false);
assert_eq!(and(&all_true, &all_false), all_false);
assert_eq!(and(&toggled, &all_false), all_false);
assert_eq!(and(&toggled, &all_true), toggled);
assert_eq!(or(&all_true, &all_true), all_true);
assert_eq!(or(&all_true, &all_false), all_true);
assert_eq!(or(&all_false, &all_true), all_true);
assert_eq!(or(&all_false, &all_false), all_false);
assert_eq!(or(&toggled, &all_false), toggled);
assert_eq!(xor(&all_true, &all_true), all_false);
assert_eq!(xor(&all_true, &all_false), all_true);
assert_eq!(xor(&all_false, &all_true), all_true);
assert_eq!(xor(&all_false, &all_false), all_false);
assert_eq!(xor(&toggled, &toggled), all_false);
}