@@ -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