#include #include #include #include "test-helper.h" #define DEBUG_FLAG EMPATHY_DEBUG_TESTS #include #include static void test_replace_link (const gchar *text, gssize len, gpointer match_data, gpointer user_data) { GString *string = user_data; g_string_append_c (string, '['); g_string_append_len (string, text, len); g_string_append_c (string, ']'); } static void test_replace_smiley (const gchar *text, gssize len, gpointer match_data, gpointer user_data) { GString *string = user_data; g_string_append_c (string, '<'); g_string_append_len (string, text, len); g_string_append_c (string, '>'); } static void test_replace_verbatim (const gchar *text, gssize len, gpointer match_data, gpointer user_data) { GString *string = user_data; g_string_append_len (string, text, len); } static void test_parsers (void) { guint i; gchar *tests[] = { "http://foo.com", "[http://foo.com]", ":)http://foo.com :D", "<:)>[http://foo.com] <:D>", NULL, NULL }; EmpathyStringParser parsers[] = { {empathy_string_match_link, test_replace_link}, {empathy_string_match_smiley, test_replace_smiley}, {empathy_string_match_all, test_replace_verbatim}, {NULL, NULL} }; DEBUG ("Started"); for (i = 0; tests[i] != NULL; i += 2) { GString *string; string = g_string_new (NULL); empathy_string_parser_substr (tests[i], -1, parsers, string); DEBUG ("'%s' => '%s'", tests[i], string->str); g_assert_cmpstr (tests[i + 1], ==, string->str); g_string_free (string, TRUE); } } int main (int argc, char **argv) { int result; test_init (argc, argv); g_test_add_func ("/parsers", test_parsers); result = g_test_run (); test_deinit (); return result; }