@@ -2559,8 +2559,7 @@ def test_memoryview_cast_invalid(self):
25592559 ex = ndarray (sitems , shape = [1 ], format = sfmt )
25602560 msrc = memoryview (ex )
25612561 for dfmt , _ , _ in iter_format (1 ):
2562- if (not is_memoryview_format (sfmt ) or
2563- not is_memoryview_format (dfmt )):
2562+ if not is_memoryview_format (dfmt ):
25642563 self .assertRaises (ValueError , msrc .cast , dfmt ,
25652564 [32 // dsize ])
25662565 else :
@@ -2773,6 +2772,32 @@ def test_memoryview_cast_1D_ND(self):
27732772 ndim = ndim , shape = shape , strides = strides ,
27742773 lst = lst , cast = True )
27752774
2775+ if ctypes :
2776+ # format: "T{>l:x:>d:y:}"
2777+ class BEPoint (ctypes .BigEndianStructure ):
2778+ _fields_ = [("x" , ctypes .c_long ), ("y" , ctypes .c_double )]
2779+ point = BEPoint (100 , 200.1 )
2780+ m1 = memoryview (point )
2781+ m2 = m1 .cast ('B' )
2782+ self .assertEqual (m2 .obj , point )
2783+ self .assertEqual (m2 .itemsize , 1 )
2784+ self .assertEqual (m2 .readonly , 0 )
2785+ self .assertEqual (m2 .ndim , 1 )
2786+ self .assertEqual (m2 .shape , (m2 .nbytes ,))
2787+ self .assertEqual (m2 .strides , (1 ,))
2788+ self .assertEqual (m2 .suboffsets , ())
2789+
2790+ x = ctypes .c_double (1.2 )
2791+ m1 = memoryview (x )
2792+ m2 = m1 .cast ('c' )
2793+ self .assertEqual (m2 .obj , x )
2794+ self .assertEqual (m2 .itemsize , 1 )
2795+ self .assertEqual (m2 .readonly , 0 )
2796+ self .assertEqual (m2 .ndim , 1 )
2797+ self .assertEqual (m2 .shape , (m2 .nbytes ,))
2798+ self .assertEqual (m2 .strides , (1 ,))
2799+ self .assertEqual (m2 .suboffsets , ())
2800+
27762801 def test_memoryview_tolist (self ):
27772802
27782803 # Most tolist() tests are in self.verify() etc.
0 commit comments