1use crate::Mask;
5
6impl PartialEq for Mask {
7 fn eq(&self, other: &Self) -> bool {
8 if self.len() != other.len() {
9 return false;
10 }
11 if self.true_count() != other.true_count() {
12 return false;
13 }
14
15 self.boolean_buffer() == other.boolean_buffer()
17 }
18}
19
20impl Eq for Mask {}
21
22#[cfg(test)]
23mod test {
24 use arrow_buffer::BooleanBuffer;
25
26 use crate::Mask;
27
28 #[test]
29 fn filter_mask_eq() {
30 assert_eq!(
31 Mask::new_true(5),
32 Mask::from_buffer(BooleanBuffer::new_set(5))
33 );
34 assert_eq!(
35 Mask::new_false(5),
36 Mask::from_buffer(BooleanBuffer::new_unset(5))
37 );
38 assert_eq!(
39 Mask::from_indices(5, vec![0, 2, 3]),
40 Mask::from_slices(5, vec![(0, 1), (2, 4)])
41 );
42 assert_eq!(
43 Mask::from_indices(5, vec![0, 2, 3]),
44 Mask::from_buffer(BooleanBuffer::from_iter([true, false, true, true, false]))
45 );
46 }
47}