@@ -149,35 +149,41 @@ class X(Structure):
149
149
150
150
def test_signed (self ):
151
151
for c_typ in signed_int_types :
152
- class X (Structure ):
153
- _fields_ = [("dummy" , c_typ ),
154
- ("a" , c_typ , 3 ),
155
- ("b" , c_typ , 3 ),
156
- ("c" , c_typ , 1 )]
157
- self .assertEqual (sizeof (X ), sizeof (c_typ )* 2 )
158
-
159
- x = X ()
160
- self .assertEqual ((c_typ , x .a , x .b , x .c ), (c_typ , 0 , 0 , 0 ))
161
- x .a = - 1
162
- self .assertEqual ((c_typ , x .a , x .b , x .c ), (c_typ , - 1 , 0 , 0 ))
163
- x .a , x .b = 0 , - 1
164
- self .assertEqual ((c_typ , x .a , x .b , x .c ), (c_typ , 0 , - 1 , 0 ))
152
+ with self .subTest (c_typ ):
153
+ if sizeof (c_typ ) != alignment (c_typ ):
154
+ self .skipTest ('assumes size=alignment' )
155
+ class X (Structure ):
156
+ _fields_ = [("dummy" , c_typ ),
157
+ ("a" , c_typ , 3 ),
158
+ ("b" , c_typ , 3 ),
159
+ ("c" , c_typ , 1 )]
160
+ self .assertEqual (sizeof (X ), sizeof (c_typ )* 2 )
161
+
162
+ x = X ()
163
+ self .assertEqual ((c_typ , x .a , x .b , x .c ), (c_typ , 0 , 0 , 0 ))
164
+ x .a = - 1
165
+ self .assertEqual ((c_typ , x .a , x .b , x .c ), (c_typ , - 1 , 0 , 0 ))
166
+ x .a , x .b = 0 , - 1
167
+ self .assertEqual ((c_typ , x .a , x .b , x .c ), (c_typ , 0 , - 1 , 0 ))
165
168
166
169
167
170
def test_unsigned (self ):
168
171
for c_typ in unsigned_int_types :
169
- class X (Structure ):
170
- _fields_ = [("a" , c_typ , 3 ),
171
- ("b" , c_typ , 3 ),
172
- ("c" , c_typ , 1 )]
173
- self .assertEqual (sizeof (X ), sizeof (c_typ ))
174
-
175
- x = X ()
176
- self .assertEqual ((c_typ , x .a , x .b , x .c ), (c_typ , 0 , 0 , 0 ))
177
- x .a = - 1
178
- self .assertEqual ((c_typ , x .a , x .b , x .c ), (c_typ , 7 , 0 , 0 ))
179
- x .a , x .b = 0 , - 1
180
- self .assertEqual ((c_typ , x .a , x .b , x .c ), (c_typ , 0 , 7 , 0 ))
172
+ with self .subTest (c_typ ):
173
+ if sizeof (c_typ ) != alignment (c_typ ):
174
+ self .skipTest ('assumes size=alignment' )
175
+ class X (Structure ):
176
+ _fields_ = [("a" , c_typ , 3 ),
177
+ ("b" , c_typ , 3 ),
178
+ ("c" , c_typ , 1 )]
179
+ self .assertEqual (sizeof (X ), sizeof (c_typ ))
180
+
181
+ x = X ()
182
+ self .assertEqual ((c_typ , x .a , x .b , x .c ), (c_typ , 0 , 0 , 0 ))
183
+ x .a = - 1
184
+ self .assertEqual ((c_typ , x .a , x .b , x .c ), (c_typ , 7 , 0 , 0 ))
185
+ x .a , x .b = 0 , - 1
186
+ self .assertEqual ((c_typ , x .a , x .b , x .c ), (c_typ , 0 , 7 , 0 ))
181
187
182
188
def fail_fields (self , * fields ):
183
189
return self .get_except (type (Structure ), "X" , (),
@@ -211,22 +217,28 @@ def test_c_wchar(self):
211
217
212
218
def test_single_bitfield_size (self ):
213
219
for c_typ in int_types :
214
- result = self .fail_fields (("a" , c_typ , - 1 ))
215
- self .assertEqual (result , (ValueError , "number of bits invalid for bit field 'a'" ))
220
+ with self .subTest (c_typ ):
221
+ if sizeof (c_typ ) != alignment (c_typ ):
222
+ self .skipTest ('assumes size=alignment' )
223
+ result = self .fail_fields (("a" , c_typ , - 1 ))
224
+ self .assertEqual (result , (ValueError ,
225
+ "number of bits invalid for bit field 'a'" ))
216
226
217
- result = self .fail_fields (("a" , c_typ , 0 ))
218
- self .assertEqual (result , (ValueError , "number of bits invalid for bit field 'a'" ))
227
+ result = self .fail_fields (("a" , c_typ , 0 ))
228
+ self .assertEqual (result , (ValueError ,
229
+ "number of bits invalid for bit field 'a'" ))
219
230
220
- class X (Structure ):
221
- _fields_ = [("a" , c_typ , 1 )]
222
- self .assertEqual (sizeof (X ), sizeof (c_typ ))
231
+ class X (Structure ):
232
+ _fields_ = [("a" , c_typ , 1 )]
233
+ self .assertEqual (sizeof (X ), sizeof (c_typ ))
223
234
224
- class X (Structure ):
225
- _fields_ = [("a" , c_typ , sizeof (c_typ )* 8 )]
226
- self .assertEqual (sizeof (X ), sizeof (c_typ ))
235
+ class X (Structure ):
236
+ _fields_ = [("a" , c_typ , sizeof (c_typ )* 8 )]
237
+ self .assertEqual (sizeof (X ), sizeof (c_typ ))
227
238
228
- result = self .fail_fields (("a" , c_typ , sizeof (c_typ )* 8 + 1 ))
229
- self .assertEqual (result , (ValueError , "number of bits invalid for bit field 'a'" ))
239
+ result = self .fail_fields (("a" , c_typ , sizeof (c_typ )* 8 + 1 ))
240
+ self .assertEqual (result , (ValueError ,
241
+ "number of bits invalid for bit field 'a'" ))
230
242
231
243
def test_multi_bitfields_size (self ):
232
244
class X (Structure ):
@@ -318,6 +330,8 @@ class X(Structure):
318
330
a .B = 1
319
331
self .assertEqual (1 , a .B )
320
332
333
+ @unittest .skipIf (sizeof (c_uint64 ) != alignment (c_uint64 ),
334
+ 'assumes size=alignment' )
321
335
def test_mixed_7 (self ):
322
336
class X (Structure ):
323
337
_fields_ = [
@@ -353,6 +367,8 @@ class X(Structure):
353
367
else :
354
368
self .assertEqual (4 , sizeof (X ))
355
369
370
+ @unittest .skipIf (sizeof (c_uint64 ) != alignment (c_uint64 ),
371
+ 'assumes size=alignment' )
356
372
def test_mixed_10 (self ):
357
373
class X (Structure ):
358
374
_fields_ = [
0 commit comments