@@ -2657,6 +2657,7 @@ fn stream_encoder_reader_handles_small_reads() {
26572657 let mut reader = EncoderReader :: new ( & b"hello" [ ..] , STANDARD ) ;
26582658 assert_eq ! ( reader. engine( ) , STANDARD ) ;
26592659 assert ! ( reader. is_padded( ) ) ;
2660+ assert ! ( !reader. has_finished_input( ) ) ;
26602661 assert ! ( !reader. is_finished( ) ) ;
26612662 assert_eq ! ( reader. pending_len( ) , 0 ) ;
26622663 assert ! ( !reader. has_pending_input( ) ) ;
@@ -2676,6 +2677,7 @@ fn stream_encoder_reader_handles_small_reads() {
26762677 assert ! ( !reader. has_pending_input( ) ) ;
26772678 assert_eq ! ( reader. buffered_output_len( ) , 0 ) ;
26782679 assert ! ( !reader. has_buffered_output( ) ) ;
2680+ assert ! ( reader. has_finished_input( ) ) ;
26792681 assert ! ( reader. is_finished( ) ) ;
26802682}
26812683
@@ -2691,13 +2693,40 @@ fn stream_encoder_reader_reports_buffered_output() {
26912693 assert ! ( reader. has_pending_input( ) ) ;
26922694 assert_eq ! ( reader. buffered_output_len( ) , 3 ) ;
26932695 assert ! ( reader. has_buffered_output( ) ) ;
2696+ assert ! ( !reader. has_finished_input( ) ) ;
26942697 assert ! ( !reader. is_finished( ) ) ;
26952698
26962699 let mut rest = Vec :: new ( ) ;
26972700 reader. read_to_end ( & mut rest) . unwrap ( ) ;
26982701 assert_eq ! ( rest, b"GVsbG8=" ) ;
26992702 assert_eq ! ( reader. buffered_output_len( ) , 0 ) ;
27002703 assert ! ( !reader. has_buffered_output( ) ) ;
2704+ assert ! ( reader. has_finished_input( ) ) ;
2705+ assert ! ( reader. is_finished( ) ) ;
2706+ }
2707+
2708+ #[ cfg( feature = "stream" ) ]
2709+ #[ test]
2710+ fn stream_encoder_reader_finished_input_before_buffer_drain ( ) {
2711+ let mut reader = EncoderReader :: new ( & b"h" [ ..] , STANDARD ) ;
2712+ assert ! ( !reader. has_finished_input( ) ) ;
2713+ assert ! ( !reader. is_finished( ) ) ;
2714+
2715+ let mut first = [ 0u8 ; 1 ] ;
2716+ assert_eq ! ( reader. read( & mut first) . unwrap( ) , 1 ) ;
2717+ assert_eq ! ( first, [ b'a' ] ) ;
2718+ assert_eq ! ( reader. pending_len( ) , 0 ) ;
2719+ assert_eq ! ( reader. buffered_output_len( ) , 3 ) ;
2720+ assert ! ( reader. has_buffered_output( ) ) ;
2721+ assert ! ( reader. has_finished_input( ) ) ;
2722+ assert ! ( !reader. is_finished( ) ) ;
2723+
2724+ let mut rest = Vec :: new ( ) ;
2725+ reader. read_to_end ( & mut rest) . unwrap ( ) ;
2726+ assert_eq ! ( rest, b"A==" ) ;
2727+ assert_eq ! ( reader. buffered_output_len( ) , 0 ) ;
2728+ assert ! ( !reader. has_buffered_output( ) ) ;
2729+ assert ! ( reader. has_finished_input( ) ) ;
27012730 assert ! ( reader. is_finished( ) ) ;
27022731}
27032732
@@ -2885,6 +2914,7 @@ fn stream_decoder_reader_handles_small_reads() {
28852914 let mut reader = DecoderReader :: new ( & b"aGVsbG8=" [ ..] , STANDARD ) ;
28862915 assert_eq ! ( reader. engine( ) , STANDARD ) ;
28872916 assert ! ( reader. is_padded( ) ) ;
2917+ assert ! ( !reader. has_finished_input( ) ) ;
28882918 assert ! ( !reader. is_finished( ) ) ;
28892919 assert_eq ! ( reader. pending_len( ) , 0 ) ;
28902920 assert ! ( !reader. has_pending_input( ) ) ;
@@ -2905,6 +2935,7 @@ fn stream_decoder_reader_handles_small_reads() {
29052935 assert_eq ! ( reader. buffered_output_len( ) , 0 ) ;
29062936 assert ! ( !reader. has_buffered_output( ) ) ;
29072937 assert ! ( reader. has_terminal_padding( ) ) ;
2938+ assert ! ( reader. has_finished_input( ) ) ;
29082939 assert ! ( reader. is_finished( ) ) ;
29092940}
29102941
@@ -2919,6 +2950,7 @@ fn stream_decoder_reader_reports_buffered_output() {
29192950 assert_eq ! ( reader. buffered_output_len( ) , 2 ) ;
29202951 assert ! ( reader. has_buffered_output( ) ) ;
29212952 assert ! ( !reader. has_terminal_padding( ) ) ;
2953+ assert ! ( !reader. has_finished_input( ) ) ;
29222954 assert ! ( !reader. is_finished( ) ) ;
29232955
29242956 let mut rest = Vec :: new ( ) ;
@@ -2927,6 +2959,7 @@ fn stream_decoder_reader_reports_buffered_output() {
29272959 assert_eq ! ( reader. buffered_output_len( ) , 0 ) ;
29282960 assert ! ( !reader. has_buffered_output( ) ) ;
29292961 assert ! ( reader. has_terminal_padding( ) ) ;
2962+ assert ! ( reader. has_finished_input( ) ) ;
29302963 assert ! ( reader. is_finished( ) ) ;
29312964}
29322965
@@ -2940,6 +2973,7 @@ fn stream_decoder_reader_terminal_padding_finishes_after_buffer_drain() {
29402973 assert_eq ! ( reader. buffered_output_len( ) , 1 ) ;
29412974 assert ! ( reader. has_buffered_output( ) ) ;
29422975 assert ! ( reader. has_terminal_padding( ) ) ;
2976+ assert ! ( reader. has_finished_input( ) ) ;
29432977 assert ! ( !reader. is_finished( ) ) ;
29442978
29452979 let mut rest = Vec :: new ( ) ;
@@ -2948,6 +2982,7 @@ fn stream_decoder_reader_terminal_padding_finishes_after_buffer_drain() {
29482982 assert_eq ! ( reader. buffered_output_len( ) , 0 ) ;
29492983 assert ! ( !reader. has_buffered_output( ) ) ;
29502984 assert ! ( reader. has_terminal_padding( ) ) ;
2985+ assert ! ( reader. has_finished_input( ) ) ;
29512986 assert ! ( reader. is_finished( ) ) ;
29522987}
29532988
0 commit comments