Skip to content

Commit cee5124

Browse files
authored
Implement Eq and Default for OffsetBuffer (#7418)
1 parent efe7bfd commit cee5124

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

arrow-buffer/src/buffer/offset.rs

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ use std::ops::Deref;
5555
/// (offsets[i],
5656
/// offsets[i+1])
5757
/// ```
58-
#[derive(Debug, Clone)]
58+
#[derive(Debug, Clone, PartialEq, Eq)]
5959
pub struct OffsetBuffer<O: ArrowNativeType>(ScalarBuffer<O>);
6060

6161
impl<O: ArrowNativeType> OffsetBuffer<O> {
@@ -216,6 +216,12 @@ impl<O: ArrowNativeType> From<OffsetBufferBuilder<O>> for OffsetBuffer<O> {
216216
}
217217
}
218218

219+
impl<O: ArrowNativeType> Default for OffsetBuffer<O> {
220+
fn default() -> Self {
221+
Self::new_empty()
222+
}
223+
}
224+
219225
#[cfg(test)]
220226
mod tests {
221227
use super::*;
@@ -296,4 +302,25 @@ mod tests {
296302
let offsets = OffsetBuffer::<i32>::new_empty();
297303
assert_eq!(offsets.lengths().collect::<Vec<usize>>(), vec![]);
298304
}
305+
306+
#[test]
307+
fn impl_eq() {
308+
fn are_equal<T: Eq>(a: &T, b: &T) -> bool {
309+
a.eq(b)
310+
}
311+
312+
assert!(
313+
are_equal(
314+
&OffsetBuffer::new(ScalarBuffer::<i32>::from(vec![0, 1, 4, 9])),
315+
&OffsetBuffer::new(ScalarBuffer::<i32>::from(vec![0, 1, 4, 9]))
316+
),
317+
"OffsetBuffer should implement Eq."
318+
);
319+
}
320+
321+
#[test]
322+
fn impl_default() {
323+
let default = OffsetBuffer::<i32>::default();
324+
assert_eq!(default.as_ref(), &[0]);
325+
}
299326
}

0 commit comments

Comments
 (0)