test-printf-format-fix.c revision 1d940afbc02516d8c3d016780e1223a779844a1e
5a580c3a38ced62d4bcc95b8ac7c4f2935b5d294Timo Sirainen/* Copyright (c) 2001-2014 Dovecot authors, see the included COPYING file */
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen/* Unit tests for printf-format-fix helper */
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen static const char *tests[] = {
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen "Hello world",
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen "Embedded %%, %u, %f, etc. are OK",
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen "%%doesn't cause confusion in %%m and %%n",
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen unsigned int i;
9f0f2de10e4ea0c99052bf4b2bef8179f2536228Timo Sirainen unsigned int len;
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen test_assert_idx(printf_format_fix_get_len(tests[i], &len)
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen static const char *tests[] = {
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen "OK to have a trailing %m",
d09e4ee15faa7b6f1804b78f15d8778030401b4cTimo Sirainen "%m can appear at the start too",
98348e3f27a2f59c2f02cd67974004b4cd595c8cTimo Sirainen "Even %m in the middle with a confusing %%m elsewhere is OK",
93a7d1ee4b518b5c85f9721dc6539e4dab6aae00Timo Sirainen unsigned int i;
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen unsigned int needlen;
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen unsigned int len;
7744586e3e0fd60158abfbb03a233d3bd8d6c48bTimo Sirainen unsigned int offs;
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen test_assert_idx(memcmp(chgd, tests[i], offs) == 0, i);
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen test_assert_idx(memcmp(chgd+offs, needle, needlen) == 0, i);
02c75e04c6ff80726bb59e3ea34a7995ad1f6f7cTimo Sirainen test_assert_idx(strcmp(chgd+offs+needlen, tests[i]+offs+2) == 0, i);
f9511e684858bf5f6ac77ab12254b85b737beae8Stephan Bosch chgd = printf_format_fix_get_len(tests[i], &len);
7744586e3e0fd60158abfbb03a233d3bd8d6c48bTimo Sirainen test_assert_idx(memcmp(chgd, tests[i], offs) == 0, i);
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen test_assert_idx(memcmp(chgd+offs, needle, needlen) == 0, i);
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen test_assert_idx(memcmp(chgd+offs+needlen, tests[i]+offs+2, len-needlen-offs) == 0, i);
f9511e684858bf5f6ac77ab12254b85b737beae8Stephan Bosch /* want to test the panics too */