Skip to content

Commit bc9d0a2

Browse files
committed
rework stride method names, don't expose stride check methods
1 parent 2853d54 commit bc9d0a2

File tree

4 files changed

+33
-39
lines changed

4 files changed

+33
-39
lines changed

src/dimension.rs

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,16 @@ pub fn can_index_slice<A, D: Dimension>(data: &[A],
8080
// offset is guaranteed to be positive so no issue converting
8181
// to usize here
8282
if (offset as usize) >= data.len() {
83-
return Err(StrideError::OutOfBoundsStride);
83+
return Err(StrideError::OutOfBounds);
8484
}
8585
if dim_stride_overlap(dim, strides) {
86-
return Err(StrideError::OutOfBoundsStride);
86+
return Err(StrideError::Aliasing);
8787
}
8888
}
8989
Ok(())
9090
}
9191
else {
92-
Err(StrideError::NegativeStride)
92+
Err(StrideError::Aliasing)
9393
}
9494
}
9595

@@ -635,12 +635,36 @@ unsafe impl<'a> NdIndex for &'a [Ix] {
635635

636636
#[cfg(test)]
637637
mod test {
638-
use super::Dimension;
638+
use super::{Dimension};
639+
use stride_error::StrideError;
639640

640641
#[test]
641642
fn fastest_varying_order() {
642643
let strides = (2, 8, 4, 1);
643644
let order = super::fastest_varying_order(&strides);
644645
assert_eq!(order.slice(), &[3, 0, 2, 1]);
645646
}
647+
648+
#[test]
649+
fn slice_indexing_uncommon_strides()
650+
{
651+
let v: Vec<_> = (0..12).collect();
652+
let dim = (2, 3, 2);
653+
let strides = (1, 2, 6);
654+
assert!(super::can_index_slice(&v, &dim, &strides).is_ok());
655+
656+
let strides = (2, 4, 12);
657+
assert_eq!(super::can_index_slice(&v, &dim, &strides),
658+
Err(StrideError::OutOfBounds));
659+
}
660+
661+
#[test]
662+
fn overlapping_strides_dim()
663+
{
664+
let dim = (2, 3, 2);
665+
let strides = (5, 2, 1);
666+
assert!(super::dim_stride_overlap(&dim, &strides));
667+
let strides = (6, 2, 1);
668+
assert!(!super::dim_stride_overlap(&dim, &strides));
669+
}
646670
}

src/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,8 @@ use itertools::ZipSlices;
7878
pub use dimension::{
7979
Dimension,
8080
RemoveAxis,
81-
can_index_slice,
82-
dim_stride_overlap,
8381
};
82+
8483
pub use dimension::NdIndex;
8584
pub use indexes::Indexes;
8685
pub use shape_error::ShapeError;

src/stride_error.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,18 @@ use std::error::Error;
55
#[derive(Clone, Debug, PartialEq)]
66
pub enum StrideError {
77
/// stride leads to out of bounds indexing
8-
OutOfBoundsStride,
8+
OutOfBounds,
99
/// stride leads to aliasing array elements
10-
AliasingStride,
11-
/// negative strides are unsafe in constructors
12-
NegativeStride,
10+
Aliasing,
1311
}
1412

1513
impl Error for StrideError {
1614
fn description(&self) -> &str {
1715
match *self {
18-
StrideError::OutOfBoundsStride =>
16+
StrideError::OutOfBounds =>
1917
"stride leads to out of bounds indexing",
20-
StrideError::AliasingStride =>
18+
StrideError::Aliasing =>
2119
"stride leads to aliasing array elements",
22-
StrideError::NegativeStride =>
23-
"negative strides are unsafe in constructors",
2420
}
2521
}
2622
}

tests/dimension.rs

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ use ndarray::{
44
Array,
55
RemoveAxis,
66
arr2,
7-
can_index_slice,
8-
dim_stride_overlap,
9-
StrideError,
107
};
118

129
#[test]
@@ -39,25 +36,3 @@ fn dyn_dimension()
3936
assert_eq!(z.shape(), &dim[..]);
4037
}
4138

42-
#[test]
43-
fn slice_indexing_uncommon_strides()
44-
{
45-
let v: Vec<_> = (0..12).collect();
46-
let dim = (2, 3, 2);
47-
let strides = (1, 2, 6);
48-
assert!(can_index_slice(&v, &dim, &strides).is_ok());
49-
50-
let strides = (2, 4, 12);
51-
assert_eq!(can_index_slice(&v, &dim, &strides),
52-
Err(StrideError::OutOfBoundsStride));
53-
}
54-
55-
#[test]
56-
fn overlapping_strides_dim()
57-
{
58-
let dim = (2, 3, 2);
59-
let strides = (5, 2, 1);
60-
assert!(dim_stride_overlap(&dim, &strides));
61-
let strides = (6, 2, 1);
62-
assert!(!dim_stride_overlap(&dim, &strides));
63-
}

0 commit comments

Comments
 (0)