annotate src/lib/test-istream-try.c @ 23007:36e01285b5b8

lib: buffer - Improve header comment for buffer_insert() and buffer_delete().
author Stephan Bosch <stephan.bosch@dovecot.fi>
date Mon, 18 Mar 2019 00:52:37 +0100
parents 1611d0ce5001
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22713
cb108f786fb4 Updated copyright notices to include the year 2018.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 22607
diff changeset
1 /* Copyright (c) 2009-2018 Dovecot authors, see the included COPYING file */
22607
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
2
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
3 #include "test-lib.h"
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
4 #include "istream.h"
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
5 #include "istream-try.h"
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
6
22987
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
7 static void test_istream_try_normal(void)
22607
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
8 {
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
9 bool finished = FALSE;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
10
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
11 test_begin("istream try");
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
12 for (unsigned int test = 0; test <= 10; test++) {
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
13 struct istream *test_inputs[3], *try_input;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
14
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
15 test_inputs[0] = test_istream_create("1");
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
16 test_inputs[1] = test_istream_create("2");
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
17 test_inputs[2] = NULL;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
18 test_istream_set_size(test_inputs[0], 0);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
19 test_istream_set_size(test_inputs[1], 0);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
20 try_input = istream_try_create(test_inputs);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
21
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
22 /* nonblocking read */
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
23 test_assert_idx(i_stream_read(try_input) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
24
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
25 switch (test) {
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
26 case 0:
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
27 /* stream 0 is available */
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
28 test_istream_set_size(test_inputs[0], 1);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
29 test_assert_idx(i_stream_read(try_input) == 1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
30 test_assert_idx(i_stream_get_data_size(test_inputs[0]) == 1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
31 test_assert_idx(i_stream_get_data_size(test_inputs[1]) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
32 break;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
33 case 1:
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
34 /* stream 1 is available, but not used before 0 */
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
35 test_istream_set_size(test_inputs[1], 1);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
36 test_assert_idx(i_stream_read(try_input) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
37 test_assert_idx(i_stream_get_data_size(test_inputs[0]) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
38 test_assert_idx(i_stream_get_data_size(test_inputs[1]) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
39 /* continue failing stream 0 -> 1 is available */
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
40 test_inputs[0]->stream_errno = EINVAL;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
41 test_assert_idx(i_stream_read(try_input) == 1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
42 test_assert_idx(i_stream_get_data_size(test_inputs[0]) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
43 test_assert_idx(i_stream_get_data_size(test_inputs[1]) == 1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
44 break;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
45 case 2:
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
46 /* both streams are available - stream 0 is read */
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
47 test_istream_set_size(test_inputs[0], 1);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
48 test_istream_set_size(test_inputs[1], 1);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
49 test_assert_idx(i_stream_read(try_input) == 1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
50 test_assert_idx(i_stream_get_data_size(test_inputs[0]) == 1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
51 test_assert_idx(i_stream_get_data_size(test_inputs[1]) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
52 break;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
53 case 3:
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
54 /* stream 0 fails */
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
55 test_inputs[0]->stream_errno = EINVAL;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
56 test_assert_idx(i_stream_read(try_input) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
57 test_assert_idx(i_stream_get_data_size(test_inputs[0]) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
58 test_assert_idx(i_stream_get_data_size(test_inputs[1]) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
59 /* continue making stream 1 available */
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
60 test_istream_set_size(test_inputs[1], 1);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
61 test_assert_idx(i_stream_read(try_input) == 1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
62 test_assert_idx(i_stream_get_data_size(test_inputs[0]) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
63 test_assert_idx(i_stream_get_data_size(test_inputs[1]) == 1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
64 break;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
65 case 4:
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
66 /* stream 1 fails */
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
67 test_inputs[1]->stream_errno = EINVAL;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
68 test_assert_idx(i_stream_read(try_input) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
69 test_assert_idx(i_stream_get_data_size(test_inputs[0]) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
70 test_assert_idx(i_stream_get_data_size(test_inputs[1]) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
71 break;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
72 case 5:
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
73 /* stream 0 fails, stream 1 is available */
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
74 test_inputs[0]->stream_errno = EINVAL;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
75 test_istream_set_size(test_inputs[1], 1);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
76 test_assert_idx(i_stream_read(try_input) == 1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
77 test_assert_idx(i_stream_get_data_size(test_inputs[0]) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
78 test_assert_idx(i_stream_get_data_size(test_inputs[1]) == 1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
79 break;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
80 case 6:
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
81 /* stream 0 is available, stream 1 fails */
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
82 test_inputs[1]->stream_errno = EINVAL;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
83 test_istream_set_size(test_inputs[0], 1);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
84 test_assert_idx(i_stream_read(try_input) == 1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
85 test_assert_idx(i_stream_get_data_size(test_inputs[0]) == 1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
86 test_assert_idx(i_stream_get_data_size(test_inputs[1]) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
87 break;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
88 case 7:
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
89 /* both streams fail */
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
90 test_inputs[0]->stream_errno = EINVAL;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
91 test_inputs[1]->stream_errno = EINVAL;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
92 test_assert_idx(i_stream_read(try_input) == -1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
93 test_assert_idx(try_input->stream_errno == EINVAL, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
94 break;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
95 case 8:
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
96 /* stream 0 fails with EINVAL, stream 1 with EIO */
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
97 test_inputs[0]->stream_errno = EINVAL;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
98 test_inputs[1]->stream_errno = EIO;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
99 test_assert_idx(i_stream_read(try_input) == -1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
100 test_assert_idx(try_input->stream_errno == EIO, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
101 break;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
102 case 9:
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
103 /* stream 0 fails with EIO, stream 1 with EINVAL */
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
104 test_inputs[0]->stream_errno = EIO;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
105 test_inputs[1]->stream_errno = EINVAL;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
106 test_assert_idx(i_stream_read(try_input) == -1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
107 test_assert_idx(try_input->stream_errno == EIO, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
108 break;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
109 case 10:
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
110 /* stream 0 fails with EIO, stream 1 would work.. */
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
111 test_inputs[0]->stream_errno = EIO;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
112 test_istream_set_size(test_inputs[1], 1);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
113 test_assert_idx(i_stream_read(try_input) == -1, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
114 test_assert_idx(try_input->stream_errno == EIO, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
115 test_assert_idx(i_stream_get_data_size(test_inputs[1]) == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
116
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
117 finished = TRUE;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
118 break;
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
119 }
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
120
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
121 test_assert_idx(test_inputs[0]->v_offset == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
122 test_assert_idx(test_inputs[1]->v_offset == 0, test);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
123
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
124 i_stream_unref(&test_inputs[0]);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
125 i_stream_unref(&test_inputs[1]);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
126 i_stream_unref(&try_input);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
127 }
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
128 i_assert(finished);
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
129 test_end();
708b4dda62dc lib: Add istream-try
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
130 }
22987
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
131
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
132 static void test_istream_try_empty(void)
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
133 {
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
134 test_begin("istream try empty stream");
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
135 struct istream *test_inputs[] = {
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
136 test_istream_create(""),
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
137 test_istream_create(""),
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
138 NULL
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
139 };
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
140 struct istream *try_input = istream_try_create(test_inputs);
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
141 test_assert(i_stream_read(try_input) == -1);
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
142 test_assert(try_input->eof);
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
143 test_assert(try_input->stream_errno == 0);
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
144 i_stream_unref(&test_inputs[0]);
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
145 i_stream_unref(&test_inputs[1]);
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
146 i_stream_unref(&try_input);
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
147 test_end();
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
148 }
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
149
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
150 void test_istream_try(void)
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
151 {
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
152 test_istream_try_normal();
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
153 test_istream_try_empty();
1611d0ce5001 lib: istream-try - Don't assert-crash with empty parent istream
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22713
diff changeset
154 }