From 4b4219244f8390b8c0e08a1ac3bf9fe8ba6d52dd Mon Sep 17 00:00:00 2001 From: Lachlan Deakin Date: Thu, 23 Jan 2025 08:19:26 +1100 Subject: [PATCH] RawBytesOffsets tests and from &[usize: N] --- .../array/array_bytes/raw_bytes_offsets.rs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/zarrs/src/array/array_bytes/raw_bytes_offsets.rs b/zarrs/src/array/array_bytes/raw_bytes_offsets.rs index b84dc5c3..4b335014 100644 --- a/zarrs/src/array/array_bytes/raw_bytes_offsets.rs +++ b/zarrs/src/array/array_bytes/raw_bytes_offsets.rs @@ -71,6 +71,14 @@ impl<'a> TryFrom<&'a [usize]> for RawBytesOffsets<'a> { } } +impl<'a, const N: usize> TryFrom<&'a [usize; N]> for RawBytesOffsets<'a> { + type Error = RawBytesOffsetsCreateError; + + fn try_from(value: &'a [usize; N]) -> Result { + Self::new(value) + } +} + impl TryFrom> for RawBytesOffsets<'_> { type Error = RawBytesOffsetsCreateError; @@ -78,3 +86,23 @@ impl TryFrom> for RawBytesOffsets<'_> { Self::new(value) } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn raw_bytes_offsets() { + let offsets = RawBytesOffsets::new(vec![0, 1, 2, 3]).unwrap(); + assert_eq!(&*offsets, &[0, 1, 2, 3]); + assert!(RawBytesOffsets::new(vec![0, 1, 1]).is_ok()); + assert!(RawBytesOffsets::new(vec![0, 1, 0]).is_err()); + assert!(RawBytesOffsets::try_from(vec![0, 1, 2]).is_ok()); + assert!(RawBytesOffsets::try_from(vec![0, 1, 0]).is_err()); + assert!(RawBytesOffsets::try_from([0, 1, 2].as_slice()).is_ok()); + assert!(RawBytesOffsets::try_from([0, 1, 0].as_slice()).is_err()); + assert!(RawBytesOffsets::try_from(&[0, 1, 2]).is_ok()); + assert!(RawBytesOffsets::try_from(&[0, 1, 0]).is_err()); + assert!(RawBytesOffsets::try_from(Cow::Owned(vec![0, 1, 0])).is_err()); + } +}