From: Timo Sirainen Date: Mon, 6 Nov 2017 19:00:57 +0000 (+0200) Subject: lib: test-istream-jsonstr - Improve unit test X-Git-Tag: 2.3.0.rc1~488 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=07ca0c75daa9da0bd6ef987b5c3622d83fe2fe7e;p=thirdparty%2Fdovecot%2Fcore.git lib: test-istream-jsonstr - Improve unit test --- diff --git a/src/lib/test-istream-jsonstr.c b/src/lib/test-istream-jsonstr.c index c121a6a4e6..2751e20bed 100644 --- a/src/lib/test-istream-jsonstr.c +++ b/src/lib/test-istream-jsonstr.c @@ -28,7 +28,8 @@ static const struct { }; static void -run_test(const char *json_input, const char *output, int stream_errno) +run_test_buffer(const char *json_input, const char *output, int stream_errno, + unsigned int skip_count) { size_t json_input_len = strlen(json_input); struct istream *input_data, *input; @@ -40,12 +41,16 @@ run_test(const char *json_input, const char *output, int stream_errno) test_istream_set_allow_eof(input_data, FALSE); input = i_stream_create_jsonstr(input_data); - for (i = 1; i < json_input_len; i++) { + for (i = 1; i < json_input_len;) { test_istream_set_size(input_data, i); while ((ret = i_stream_read(input)) > 0) ; if (ret == -1 && stream_errno != 0) break; test_assert_idx(ret == 0, i); + if (i + skip_count < json_input_len) + i += skip_count; + else + i++; } test_istream_set_allow_eof(input_data, TRUE); test_istream_set_size(input_data, json_input_len); @@ -55,14 +60,23 @@ run_test(const char *json_input, const char *output, int stream_errno) test_assert(ret == -1); test_assert(input->stream_errno == stream_errno); - data = i_stream_get_data(input, &size); - test_assert(size == strlen(output)); - if (size > 0) - test_assert(memcmp(data, output, size) == 0); + if (stream_errno == 0) { + data = i_stream_get_data(input, &size); + test_assert(size == strlen(output)); + if (size > 0) + test_assert(memcmp(data, output, size) == 0); + } i_stream_unref(&input); i_stream_unref(&input_data); } +static void +run_test(const char *json_input, const char *output, int stream_errno) +{ + for (unsigned int i = 1; i <= 5; i++) + run_test_buffer(json_input, output, stream_errno, i); +} + static void test_istream_jsonstr_autoretry(void) { const char *json_input = "\\u0001\"";