Mercurial > dovecot > core-2.2
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 |
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 | 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 | 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 } |