talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 51cd7832ec2781acc73bd1b2e5c4f2236aee6e76
parent 8ea99d0b91388de737e8c0997cbba5ed76ccdc31
Author: Andrej Kacian <ticho@claws-mail.org>
Date:   Fri, 16 Nov 2018 20:50:53 +0100

Added some basic unit tests for unmime_header().

Diffstat:
Msrc/common/tests/Makefile.am | 4++++
Asrc/common/tests/unmime_test.c | 104+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 108 insertions(+), 0 deletions(-)

diff --git a/src/common/tests/Makefile.am b/src/common/tests/Makefile.am @@ -26,6 +26,10 @@ TEST_PROGS += pkcs5_pbkdf2_test pkcs5_pbkdf2_test_SOURCES = pkcs5_pbkdf2_test.c pkcs5_pbkdf2_test_LDADD = $(common_ldadd) ../pkcs5_pbkdf2.o +TEST_PROGS += unmime_test +unmime_test_SOURCES = unmime_test.c +unmime_test_LDADD = $(common_ldadd) ../unmime.o ../quoted-printable.o ../utils.o ../file-utils.o ../codeconv.o + noinst_PROGRAMS = $(TEST_PROGS) .PHONY: test diff --git a/src/common/tests/unmime_test.c b/src/common/tests/unmime_test.c @@ -0,0 +1,104 @@ +#include <stdio.h> +#include <glib.h> + +#include "unmime.h" +#include "quoted-printable.h" + +#include "mock_prefs_common_get_use_shred.h" +#include "mock_prefs_common_get_flush_metadata.h" + +struct td { + gchar *input; + gchar *expected_output; +}; + +struct td td_rfc2047_space1 = { + "(=?ISO-8859-1?Q?a?=)", + "(a)" +}; +struct td td_rfc2047_space2 = { + "(=?ISO-8859-1?Q?a?= b)", + "(a b)" +}; +struct td td_rfc2047_space3 = { + "(=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)", + "(ab)" +}; +struct td td_rfc2047_space4 = { + "(=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)", + "(ab)" +}; +struct td td_rfc2047_space5 = { + "(=?ISO-8859-1?Q?a?=\r\n =?ISO-8859-1?Q?b?=)", + "(ab)" +}; +struct td td_rfc2047_space6 = { + "(=?ISO-8859-1?Q?a_b?=)", + "(a b)" +}; +struct td td_rfc2047_space7 = { + "(=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)", + "(a b)" +}; + +static void +test_unmime_header_null() +{ + if (!g_test_undefined()) + return; + + if (g_test_subprocess()) { + gchar *out; + + out = unmime_header(NULL, FALSE); + g_assert_null(out); + return; + } + + g_test_trap_subprocess(NULL, 0, 0); + g_test_trap_assert_stdout("*Condition*failed*"); + g_test_trap_assert_passed(); +} + +static void +test_unmime_header(gconstpointer user_data) +{ + struct td *data = (struct td *)user_data; + gchar *out = unmime_header(data->input, FALSE); + + g_assert_nonnull(out); + g_assert_cmpstr(out, ==, data->expected_output); +} + +int +main(int argc, char *argv[]) +{ + g_test_init(&argc, &argv, NULL); + + g_test_add_func("/common/unmime/null", + test_unmime_header_null); + + g_test_add_data_func("/common/unmime/rfc2047_space1", + &td_rfc2047_space1, + test_unmime_header); + g_test_add_data_func("/common/unmime/rfc2047_space2", + &td_rfc2047_space2, + test_unmime_header); + g_test_add_data_func("/common/unmime/rfc2047_space3", + &td_rfc2047_space3, + test_unmime_header); + g_test_add_data_func("/common/unmime/rfc2047_space4", + &td_rfc2047_space4, + test_unmime_header); + g_test_add_data_func("/common/unmime/rfc2047_space5", + &td_rfc2047_space5, + test_unmime_header); + g_test_add_data_func("/common/unmime/rfc2047_space6", + &td_rfc2047_space6, + test_unmime_header); + g_test_add_data_func("/common/unmime/rfc2047_space7", + &td_rfc2047_space7, + test_unmime_header); + + return g_test_run(); +}