@@ -318,6 +318,11 @@ def test_join(self):
318318 bytes_join (b'' , NULL )
319319
320320
321+ def get_data_canary (writer ):
322+ size = writer .get_size () + 1
323+ return writer .get_data (size )
324+
325+
321326class BaseWriterTest :
322327 RESULT_TYPE = NotImplementedError
323328 SMALL_BUFFER = 11 # bytes
@@ -426,6 +431,25 @@ def test_resize(self):
426431 writer .resize (len (b'number=123' )) # noop
427432 self .assertEqual (writer .finish (), b'number=123' )
428433
434+ CANARY_BYTE = self .CANARY_BYTE
435+ for size in (self .SMALL_BUFFER , self .LARGE_BUFFER ):
436+ with self .subTest (size = size ):
437+ # Truncate the last byte
438+ data = b'x' * size
439+ writer = self .create_writer (size )
440+ writer .write (0 , data )
441+ self .assertEqual (get_data_canary (writer ), data + CANARY_BYTE )
442+ writer .resize (size - 1 )
443+ self .assertEqual (get_data_canary (writer ), data [:- 1 ] + CANARY_BYTE )
444+ self .assertEqual (writer .finish (), data [:- 1 ])
445+
446+ # Make the buffer empty
447+ writer = self .create_writer (size )
448+ writer .write (0 , data )
449+ writer .resize (0 )
450+ self .assertEqual (writer .get_data (), b'' )
451+ self .assertEqual (writer .finish (), b'' )
452+
429453 # Switch from small buffer to large buffer
430454 writer = self .create_writer ()
431455 small , large = self .SMALL_BUFFER , self .LARGE_BUFFER
@@ -465,15 +489,16 @@ def test_grow(self):
465489 writer .grow (0 ) # noop
466490 self .assertEqual (writer .finish (), b'number=123' )
467491
492+ CANARY_BYTE = self .CANARY_BYTE
468493 for size in (self .SMALL_BUFFER , self .LARGE_BUFFER ):
469494 with self .subTest (size = size ):
470495 # Truncate the last byte
471496 data = b'x' * size
472497 writer = self .create_writer (size )
473498 writer .write (0 , data )
474- self .assertEqual (writer . get_data ( ), data )
499+ self .assertEqual (get_data_canary ( writer ), data + CANARY_BYTE )
475500 writer .grow (- 1 )
476- self .assertEqual (writer . get_data ( ), data [:- 1 ])
501+ self .assertEqual (get_data_canary ( writer ), data [:- 1 ] + CANARY_BYTE )
477502 self .assertEqual (writer .finish (), data [:- 1 ])
478503
479504 # Make the buffer empty
@@ -567,18 +592,16 @@ def test_get_data_canary(self):
567592 # Test PyBytesWriter_GetData()
568593 NEW_BYTE = self .NEW_BYTE
569594 CANARY_BYTE = self .CANARY_BYTE
570- canary_byte_size = len (CANARY_BYTE )
571-
572- def get_data_canary ():
573- size = writer .get_size () + canary_byte_size
574- return writer .get_data (size )
575595
576596 writer = self .create_writer (6 )
577- self .assertEqual (get_data_canary (), NEW_BYTE * 6 + CANARY_BYTE )
597+ self .assertEqual (get_data_canary (writer ),
598+ NEW_BYTE * 6 + CANARY_BYTE )
578599 writer .write (0 , b'abc' )
579- self .assertEqual (get_data_canary (), b'abc' + NEW_BYTE * 3 + CANARY_BYTE )
600+ self .assertEqual (get_data_canary (writer ),
601+ b'abc' + NEW_BYTE * 3 + CANARY_BYTE )
580602 writer .write (3 , b'123' )
581- self .assertEqual (get_data_canary (), b'abc123' + CANARY_BYTE )
603+ self .assertEqual (get_data_canary (writer ),
604+ b'abc123' + CANARY_BYTE )
582605
583606
584607class BytesWriterTest (BaseWriterTest , unittest .TestCase ):
0 commit comments