changeset 22890:29cb00415262

lib-dcrypt: test-stream - Ensure more is read when buffer becomes empty
author Aki Tuomi <aki.tuomi@dovecot.fi>
date Mon, 12 Mar 2018 14:50:32 +0200
parents 51c7b591cd20
children 9273be33529b
files src/lib-dcrypt/test-stream.c
diffstat 1 files changed, 30 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-dcrypt/test-stream.c	Mon Mar 12 14:48:41 2018 +0200
+++ b/src/lib-dcrypt/test-stream.c	Mon Mar 12 14:50:32 2018 +0200
@@ -515,6 +515,35 @@
 	test_end();
 }
 
+static void test_read_increment(void)
+{
+	test_begin("test_read_increment");
+
+	ssize_t amt, total, i;
+
+	struct istream *is_1 = i_stream_create_file(DCRYPT_SRC_DIR"/sample-v2.asc", IO_BLOCK_SIZE);
+	struct istream *is_2 = i_stream_create_base64_decoder(is_1);
+	i_stream_unref(&is_1);
+	struct istream *is_3 = i_stream_create_decrypt(is_2, test_v2_kp.priv);
+	i_stream_unref(&is_2);
+	total = 0;
+	i = 500;
+
+	i_stream_set_max_buffer_size(is_3, i);
+	while((amt = i_stream_read(is_3)) > 0) {
+		total += amt;
+		i_stream_set_max_buffer_size(is_3, ++i);
+	}
+
+	test_assert(total == 13534);
+	test_assert(is_3->stream_errno == 0);
+	test_assert(is_3->eof);
+
+	i_stream_unref(&is_3);
+
+        test_end();
+}
+
 static
 void test_free_keys() {
 	dcrypt_key_unref_private(&test_v1_kp.priv);
@@ -544,6 +573,7 @@
 		test_static_v1_input,
 		test_static_v1_input_short,
 		test_static_v2_input,
+		test_read_increment,
 		test_write_read_v1,
 		test_write_read_v1_short,
 		test_write_read_v1_empty,