annotate src/lib/test-istream-base64-encoder.c @ 22664:fea53c2725c0

director: Fix director_max_parallel_moves/kicks type Should be uint, not time.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 09 Nov 2017 12:24:16 +0200
parents 2e2563132d5f
children cb108f786fb4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21390
2e2563132d5f Updated copyright notices to include the year 2017.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 20592
diff changeset
1 /* Copyright (c) 2010-2017 Dovecot authors, see the included COPYING file */
12420
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "test-lib.h"
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 #include "str.h"
13529
cf77e448295c Renamed lib/*-internal.h files to lib/*-private.h for consistency.
Timo Sirainen <tss@iki.fi>
parents: 12782
diff changeset
5 #include "istream-private.h"
14845
39b1b519c033 Added istream-base64-decoder.
Timo Sirainen <tss@iki.fi>
parents: 14683
diff changeset
6 #include "istream-base64.h"
12420
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7
14846
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
8 static struct test {
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
9 const char *input;
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
10 unsigned int chars_per_line;
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
11 bool crlf;
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
12 const char *output;
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
13 } tests[] = {
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
14 { "hello world", 80, FALSE, "aGVsbG8gd29ybGQ=" },
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
15 { "hello world", 4, FALSE, "aGVs\nbG8g\nd29y\nbGQ=" },
20592
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
16 { "hello world", 4, TRUE, "aGVs\r\nbG8g\r\nd29y\r\nbGQ=" },
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
17 { "hello worlds", 80, FALSE, "aGVsbG8gd29ybGRz" },
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
18 { "hello worlds", 4, FALSE, "aGVs\nbG8g\nd29y\nbGRz" },
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
19 { "hello worlds", 4, TRUE, "aGVs\r\nbG8g\r\nd29y\r\nbGRz" },
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
20 { "hell world", 80, FALSE, "aGVsbCB3b3JsZA==" },
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
21 { "hell world", 4, FALSE, "aGVs\nbCB3\nb3Js\nZA==" },
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
22 { "hell world", 4, TRUE, "aGVs\r\nbCB3\r\nb3Js\r\nZA==" },
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
23 { "hello to the world!!", 80, FALSE,
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
24 "aGVsbG8gdG8gdGhlIHdvcmxkISE=" },
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
25 { "hello to the world!!", 8, FALSE,
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
26 "aGVsbG8g\ndG8gdGhl\nIHdvcmxk\nISE=" },
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
27 { "hello to the world!!", 8, TRUE,
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
28 "aGVsbG8g\r\ndG8gdGhl\r\nIHdvcmxk\r\nISE=" },
14846
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
29 };
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
30
20592
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
31
12420
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
32 static const char *hello = "hello world";
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
33
14846
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
34 static void encode_test(const char *text, unsigned int chars_per_line,
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
35 bool crlf, const char *output)
12420
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
36 {
14846
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
37 unsigned int i, text_len = strlen(text);
12420
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
38 struct istream *input, *input_data;
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
39 const unsigned char *data;
20592
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
40 uoff_t stream_size;
12420
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
41 size_t size;
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
42 ssize_t ret;
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
43
14846
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
44 input_data = test_istream_create_data(text, text_len);
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
45 test_istream_set_allow_eof(input_data, FALSE);
12420
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
46 input = i_stream_create_base64_encoder(input_data, chars_per_line, crlf);
14846
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
47
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
48 for (i = 1; i <= text_len; i++) {
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
49 test_istream_set_size(input_data, i);
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
50 while ((ret = i_stream_read(input)) > 0) ;
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
51 test_assert(ret == 0);
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
52 }
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
53 test_istream_set_allow_eof(input_data, TRUE);
12420
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
54 while ((ret = i_stream_read(input)) > 0) ;
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
55 test_assert(ret == -1);
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
56
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
57 data = i_stream_get_data(input, &size);
14846
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
58 test_assert(size == strlen(output) && memcmp(data, output, size) == 0);
12420
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
59
20592
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
60 ret = i_stream_get_size(input, TRUE, &stream_size);
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
61 test_assert(ret > 0);
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
62 test_assert(size == stream_size);
b42d619d85c7 istream-base64-encoder: Implemented proper stat function that returns the encoded size of the stream.
Stephan Bosch <stephan@dovecot.fi>
parents: 19552
diff changeset
63
12420
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
64 i_stream_unref(&input);
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
65 i_stream_unref(&input_data);
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
66 }
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
67
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
68 static void
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
69 test_istream_base64_encoder_seek(const char *textin, const char *textout)
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
70 {
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
71 unsigned int offset, len = strlen(textout);
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
72 struct istream *input, *input_data;
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
73 const unsigned char *data;
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
74 size_t size;
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
75 ssize_t ret;
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
76
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
77 input_data = i_stream_create_from_data(textin, strlen(textin));
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
78 input = i_stream_create_base64_encoder(input_data, 4, TRUE);
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
79
12508
383b3acff1ee Dead code removal.
Timo Sirainen <tss@iki.fi>
parents: 12420
diff changeset
80 while (i_stream_read(input) > 0) ;
14683
9646f80ac3e9 Added i_stream_get_data_size(). Used it where possible.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
81 i_stream_skip(input, i_stream_get_data_size(input));
12420
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
82
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
83 for (offset = 0; offset < len; offset++) {
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
84 i_stream_seek(input, offset);
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
85 while ((ret = i_stream_read(input)) > 0) ;
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
86 test_assert(ret == -1);
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
87
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
88 data = i_stream_get_data(input, &size);
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
89 test_assert(size == len-offset);
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
90 test_assert(memcmp(data, textout+offset, size) == 0);
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
91 i_stream_skip(input, size);
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
92 }
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
93
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
94 i_stream_unref(&input);
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
95 i_stream_unref(&input_data);
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
96 }
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
97
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
98 void test_istream_base64_encoder(void)
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
99 {
14846
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
100 unsigned int i;
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
101
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
102 for (i = 0; i < N_ELEMENTS(tests); i++) {
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
103 test_begin(t_strdup_printf("istream base64 decoder %u", i+1));
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
104 encode_test(tests[i].input, tests[i].chars_per_line,
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
105 tests[i].crlf, tests[i].output);
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
106 test_end();
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
107 }
4d13da5c571b Various fixes to istream-base64-encoder/decoder
Timo Sirainen <tss@iki.fi>
parents: 14845
diff changeset
108 test_begin("istream base64 encoder seek");
12420
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
109 test_istream_base64_encoder_seek(hello, "aGVs\r\nbG8g\r\nd29y\r\nbGQ=");
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
110 test_end();
bb6fc4e13bc9 Added unit test for istream-base64-encoder.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
111 }