@@ -116,3 +116,39 @@ fn test_window_zip() {
116
116
}
117
117
}
118
118
}
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