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