@@ -116,3 +116,39 @@ fn test_window_zip() {
116116 }
117117 }
118118}
119+
120+ #[ test]
121+ fn test_window_neg_stride ( ) {
122+ let array = Array :: from_iter ( 1 ..10 ) . into_shape ( ( 3 , 3 ) ) . unwrap ( ) ;
123+
124+ // window neg/pos stride combinations
125+
126+ // Make a 2 x 2 array of the windows of the 3 x 3 array
127+ // and compute test answers from here
128+ let mut answer = Array :: from_iter ( array. windows ( ( 2 , 2 ) ) . into_iter ( ) . map ( |a| a. to_owned ( ) ) )
129+ . into_shape ( ( 2 , 2 ) ) . unwrap ( ) ;
130+
131+ answer. invert_axis ( Axis ( 1 ) ) ;
132+ answer. map_inplace ( |a| a. invert_axis ( Axis ( 1 ) ) ) ;
133+
134+ itertools:: assert_equal (
135+ array. slice ( s ! [ .., ..; -1 ] ) . windows ( ( 2 , 2 ) ) ,
136+ answer. iter ( ) . map ( |a| a. view ( ) )
137+ ) ;
138+
139+ answer. invert_axis ( Axis ( 0 ) ) ;
140+ answer. map_inplace ( |a| a. invert_axis ( Axis ( 0 ) ) ) ;
141+
142+ itertools:: assert_equal (
143+ array. slice ( s ! [ ..; -1 , ..; -1 ] ) . windows ( ( 2 , 2 ) ) ,
144+ answer. iter ( ) . map ( |a| a. view ( ) )
145+ ) ;
146+
147+ answer. invert_axis ( Axis ( 1 ) ) ;
148+ answer. map_inplace ( |a| a. invert_axis ( Axis ( 1 ) ) ) ;
149+
150+ itertools:: assert_equal (
151+ array. slice ( s ! [ ..; -1 , ..] ) . windows ( ( 2 , 2 ) ) ,
152+ answer. iter ( ) . map ( |a| a. view ( ) )
153+ ) ;
154+ }
0 commit comments