@@ -2877,6 +2877,32 @@ class BEPoint:
28772877 self .assertEqual (m2 .strides , (1 ,))
28782878 self .assertEqual (m2 .suboffsets , ())
28792879
2880+ def test_memoryview_cast_f_contiguous_ND_1D (self ):
2881+ nd = ndarray (list (range (12 )), shape = [3 , 4 ], format = 'B' , flags = ND_FORTRAN )
2882+ m = memoryview (nd )
2883+ self .assertTrue (m .f_contiguous )
2884+ self .assertTrue (m .contiguous )
2885+
2886+ m1 = m .cast ('B' )
2887+ self .assertEqual (m1 .ndim , 1 )
2888+ self .assertEqual (m1 .shape , (m .nbytes ,))
2889+ self .assertEqual (m1 .strides , (1 ,))
2890+ self .assertTrue (m1 .c_contiguous )
2891+ self .assertTrue (m1 .contiguous )
2892+ self .assertEqual (m1 .tobytes (), memoryview (nd ).tobytes (order = 'F' ))
2893+
2894+ for fmt in ('B' , 'b' , 'c' , 'H' , 'I' ):
2895+ size = struct .calcsize (fmt )
2896+ if m .nbytes % size == 0 :
2897+ m2 = m .cast (fmt )
2898+ self .assertEqual (m2 .ndim , 1 )
2899+ self .assertEqual (m2 .shape , (m .nbytes // size ,))
2900+ self .assertTrue (m2 .contiguous )
2901+
2902+ m3 = m [::- 1 ]
2903+ with self .assertRaises (TypeError ):
2904+ m3 .cast ('B' )
2905+
28802906 def test_memoryview_tolist (self ):
28812907
28822908 # Most tolist() tests are in self.verify() etc.
0 commit comments