test-istream-binary-converter.c revision 2c26b19c543706fff723c3f52b401817507a0ee0
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen/* Copyright (c) 2007-2012 Dovecot authors, see the included COPYING file */
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen#define BINARY_TEXT_LONG "we have\ra lot \nof \0binary stuff in here\n" \
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"b adjig sadjg jasidgjiaehga3wht8a3w8ghxjc dsgad hasdghsd gasd ds" \
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"jdsoga sjdga0w3tjhawjgsertniq3n5oqerjqw2r89q23h awhrqh835r8a"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"d2UgaGF2ZQ1hIGxvdCAKb2YgAGJpbmFyeSBzdHVmZiBpbiBoZXJlCmIgYWRqaWcgc2FkamcgamFz\r\n" \
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"aWRnamlhZWhnYTN3aHQ4YTN3OGdoeGpjIGRzZ2FkIGhhc2RnaHNkIGdhc2QgZHNqZHNvZ2Egc2pk\r\n" \
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"Z2EwdzN0amhhd2pnc2VydG5pcTNuNW9xZXJqcXcycjg5cTIzaCBhd2hycWg4MzVyOGE="
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainenstatic const char mail_input[] =
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"MIME-Version: 1.0\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"Content-Type: multipart/alternative;\r\n boundary=\"bound\"\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"mime header\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"\r\n--bound\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"Content-Transfer-Encoding: binary\r\n"
2c26b19c543706fff723c3f52b401817507a0ee0Timo Sirainen"Content-Type: text/plain\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"\r\n--bound\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"Content-Type: text/plain\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"Content-Transfer-Encoding: binary\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"\r\n--bound\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"Content-Type: text/plain\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"hello world\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"\r\n--bound--\r\n";
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainenstatic const char mail_output[] =
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"MIME-Version: 1.0\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"Content-Type: multipart/alternative;\r\n boundary=\"bound\"\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"mime header\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"\r\n--bound\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"Content-Transfer-Encoding: base64\r\n"
2c26b19c543706fff723c3f52b401817507a0ee0Timo Sirainen"Content-Type: text/plain\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"\r\n--bound\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"Content-Type: text/plain\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"Content-Transfer-Encoding: base64\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"\r\n--bound\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"Content-Type: text/plain\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"hello world\r\n"
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen"\r\n--bound--\r\n";
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainenstatic void test_istream_binary_converter(void)
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen const unsigned char *data;
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen datainput = test_istream_create_data(mail_input, sizeof(mail_input));
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen input = i_stream_create_binary_converter(datainput);
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen const unsigned char *data;
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen unsigned char hash_file[SHA1_RESULTLEN], hash_converter[SHA1_RESULTLEN];
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen /* get hash when directly reading input */
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen while (i_stream_read_data(input, &data, &size, 0) > 0) {
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen /* get hash when going through converter */
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen input2 = i_stream_create_binary_converter(input);
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen while (i_stream_read_data(input2, &data, &size, 0) > 0) {
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen if (memcmp(hash_file, hash_converter, SHA1_RESULTLEN) != 0) {
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen fprintf(stderr, "istream-binary-converter: mismatch on file %s\n",
d51bddedf8c02326124935e1ffbee5da2275f8d4Timo Sirainen static void (*test_functions[])(void) = {