@@ -291,5 +291,70 @@ def test_join(self):
291291            bytes_join (b'' , NULL )
292292
293293
294+ class  PyBytesWriterTest (unittest .TestCase ):
295+     def  create_writer (self , prealloc ):
296+         return  _testcapi .PyBytesWriter (prealloc )
297+ 
298+     def  test_empty (self ):
299+         # Test PyBytesWriter_Create() 
300+         writer  =  self .create_writer (0 )
301+         self .assertEqual (writer .finish (), b'' )
302+ 
303+     def  test_write_bytes (self ):
304+         # Test PyBytesWriter_WriteBytes() 
305+ 
306+         writer  =  self .create_writer (0 )
307+         writer .write_bytes (b'Hello World!' , - 1 )
308+         self .assertEqual (writer .finish (), b'Hello World!' )
309+ 
310+         writer  =  self .create_writer (0 )
311+         writer .write_bytes (b'Hello ' , - 1 )
312+         writer .write_bytes (b'World! <truncated>' , 6 )
313+         self .assertEqual (writer .finish (), b'Hello World!' )
314+ 
315+     def  test_extend (self ):
316+         # Test PyBytesWriter_Extend() and PyBytesWriter_SetSizeFromBuf() 
317+ 
318+         writer  =  self .create_writer (0 )
319+         writer .extend (13 , b'number=123456' )
320+         writer .extend (0 , b'' )
321+         self .assertEqual (writer .finish (), b'number=123456' )
322+ 
323+         writer  =  self .create_writer (0 )
324+         writer .extend (0 , b'' )
325+         writer .extend (13 , b'number=123456' )
326+         self .assertEqual (writer .finish (), b'number=123456' )
327+ 
328+         writer  =  self .create_writer (0 )
329+         writer .extend (10 , b'number=' )
330+         writer .extend (10 , b'123456' )
331+         self .assertEqual (writer .finish (), b'number=123456' )
332+ 
333+         writer  =  self .create_writer (0 )
334+         writer .extend (7 , b'number=' )
335+         writer .extend (0 , b'' )
336+         writer .extend (6 , b'123456' )
337+         self .assertEqual (writer .finish (), b'number=123456' )
338+ 
339+         writer  =  self .create_writer (0 )
340+         writer .extend (6 , b'number' )
341+         writer .extend (1 , b'=' )
342+         writer .extend (3 , b'123' )
343+         writer .extend (3 , b'456' )
344+         self .assertEqual (writer .finish (), b'number=123456' )
345+ 
346+     def  test_hello_world (self ):
347+         self .assertEqual (_testcapi .byteswriter_hello_world (),
348+                          b'Hello World' )
349+ 
350+     def  test_alloc (self ):
351+         self .assertEqual (_testcapi .byteswriter_alloc (),
352+                          b'abc' )
353+ 
354+     def  test_extend (self ):
355+         self .assertEqual (_testcapi .byteswriter_extend (),
356+                          b'Hello World' )
357+ 
358+ 
294359if  __name__  ==  "__main__" :
295360    unittest .main ()
0 commit comments