test-istream-sized.c revision 574d36db88f15662529fb65da6fc8c5e4c8f12fa
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher/* Copyright (c) 2016 Dovecot authors, see the included COPYING file */
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherstatic const struct {
84ae5edab16ad6be5e3be956cb6fa031c1428eb5Stephen Gallagherrun_test(const char *sized_input, uoff_t sized_size, int stream_errno)
84ae5edab16ad6be5e3be956cb6fa031c1428eb5Stephen Gallagher unsigned int sized_input_len = strlen(sized_input);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher const unsigned char *data;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher input_data = test_istream_create_data(sized_input, sized_input_len);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher test_istream_set_allow_eof(input_data, FALSE);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher input = i_stream_create_sized(input_data, sized_size);
cc98edd9479d4622634a1275c98058916c14059aStephen Gallagher while ((ret = i_stream_read(input)) > 0) ;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher test_istream_set_allow_eof(input_data, TRUE);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher while ((ret = i_stream_read(input)) > 0) ;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher test_assert(input->stream_errno == stream_errno);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher test_assert(size == I_MIN(sized_input_len, sized_size));
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher test_assert(memcmp(data, sized_input, size) == 0);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher unsigned int i;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher test_begin(t_strdup_printf("istream sized %u", i+1));