@@ -10,7 +10,7 @@ def __init__(self):
1010 self ._init_called = True
1111
1212class Test (unittest .TestCase ):
13- def test_fom_buffer (self ):
13+ def test_from_buffer (self ):
1414 a = array .array ("i" , range (16 ))
1515 x = (c_int * 16 ).from_buffer (a )
1616
@@ -23,25 +23,37 @@ def test_fom_buffer(self):
2323 a [0 ], a [- 1 ] = 200 , - 200
2424 self .assertEqual (x [:], a .tolist ())
2525
26- self .assertIn (a , x ._objects .values ())
26+ self .assertRaises (BufferError , a .append , 100 )
27+ self .assertRaises (BufferError , a .pop )
2728
28- self .assertRaises (ValueError ,
29- c_int .from_buffer , a , - 1 )
29+ del x ; del y ; gc .collect (); gc .collect (); gc .collect ()
30+ a .append (100 )
31+ a .pop ()
32+ x = (c_int * 16 ).from_buffer (a )
33+
34+ self .assertIn (a , [obj .obj if isinstance (obj , memoryview ) else obj
35+ for obj in x ._objects .values ()])
3036
3137 expected = x [:]
3238 del a ; gc .collect (); gc .collect (); gc .collect ()
3339 self .assertEqual (x [:], expected )
3440
35- self .assertRaises (TypeError ,
36- (c_char * 16 ).from_buffer , "a" * 16 )
41+ with self .assertRaises (TypeError ):
42+ (c_char * 16 ).from_buffer (b"a" * 16 )
43+ with self .assertRaises (TypeError ):
44+ (c_char * 16 ).from_buffer ("a" * 16 )
3745
38- def test_fom_buffer_with_offset (self ):
46+ def test_from_buffer_with_offset (self ):
3947 a = array .array ("i" , range (16 ))
4048 x = (c_int * 15 ).from_buffer (a , sizeof (c_int ))
4149
4250 self .assertEqual (x [:], a .tolist ()[1 :])
43- self .assertRaises (ValueError , lambda : (c_int * 16 ).from_buffer (a , sizeof (c_int )))
44- self .assertRaises (ValueError , lambda : (c_int * 1 ).from_buffer (a , 16 * sizeof (c_int )))
51+ with self .assertRaises (ValueError ):
52+ c_int .from_buffer (a , - 1 )
53+ with self .assertRaises (ValueError ):
54+ (c_int * 16 ).from_buffer (a , sizeof (c_int ))
55+ with self .assertRaises (ValueError ):
56+ (c_int * 1 ).from_buffer (a , 16 * sizeof (c_int ))
4557
4658 def test_from_buffer_copy (self ):
4759 a = array .array ("i" , range (16 ))
@@ -56,26 +68,30 @@ def test_from_buffer_copy(self):
5668 a [0 ], a [- 1 ] = 200 , - 200
5769 self .assertEqual (x [:], list (range (16 )))
5870
59- self .assertEqual (x ._objects , None )
71+ a .append (100 )
72+ self .assertEqual (x [:], list (range (16 )))
6073
61- self .assertRaises (ValueError ,
62- c_int .from_buffer , a , - 1 )
74+ self .assertEqual (x ._objects , None )
6375
6476 del a ; gc .collect (); gc .collect (); gc .collect ()
6577 self .assertEqual (x [:], list (range (16 )))
6678
6779 x = (c_char * 16 ).from_buffer_copy (b"a" * 16 )
6880 self .assertEqual (x [:], b"a" * 16 )
81+ with self .assertRaises (TypeError ):
82+ (c_char * 16 ).from_buffer_copy ("a" * 16 )
6983
70- def test_fom_buffer_copy_with_offset (self ):
84+ def test_from_buffer_copy_with_offset (self ):
7185 a = array .array ("i" , range (16 ))
7286 x = (c_int * 15 ).from_buffer_copy (a , sizeof (c_int ))
7387
7488 self .assertEqual (x [:], a .tolist ()[1 :])
75- self .assertRaises (ValueError ,
76- (c_int * 16 ).from_buffer_copy , a , sizeof (c_int ))
77- self .assertRaises (ValueError ,
78- (c_int * 1 ).from_buffer_copy , a , 16 * sizeof (c_int ))
89+ with self .assertRaises (ValueError ):
90+ c_int .from_buffer_copy (a , - 1 )
91+ with self .assertRaises (ValueError ):
92+ (c_int * 16 ).from_buffer_copy (a , sizeof (c_int ))
93+ with self .assertRaises (ValueError ):
94+ (c_int * 1 ).from_buffer_copy (a , 16 * sizeof (c_int ))
7995
8096if __name__ == '__main__' :
8197 unittest .main ()
0 commit comments