Sun, 10 Nov 2019 22:22:21 -0500
Re-write jabber util tests to be subtest-ish.
| libpurple/protocols/jabber/tests/test_jabber_jutil.c | file | annotate | diff | comparison | revisions |
--- a/libpurple/protocols/jabber/tests/test_jabber_jutil.c Sun Nov 10 09:52:48 2019 +0000 +++ b/libpurple/protocols/jabber/tests/test_jabber_jutil.c Sun Nov 10 22:22:21 2019 -0500 @@ -7,41 +7,41 @@ #include "xmlnode.h" #include "protocols/jabber/jutil.h" +PurpleTestStringData test_jabber_util_get_resource_exists_data[] = { + {"foo@bar/baz", "baz"}, + {"bar/baz", "baz"}, + {"foo@bar/baz/bat", "baz/bat"}, + {"bar/baz/bat", "baz/bat"}, + {NULL, NULL}, +}; static void -test_jabber_util_get_resource_exists(void) { - PurpleTestStringData data[] = { - { "foo@bar/baz", "baz" }, - { "bar/baz", "baz" }, - { "foo@bar/baz/bat", "baz/bat" }, - { "bar/baz/bat", "baz/bat" }, - { NULL, NULL }, - }; - - purple_test_string_compare_free(jabber_get_resource, data); +test_jabber_util_get_resource_exists(const PurpleTestStringData *data) +{ + g_assert_cmpstr(data->output, ==, jabber_get_resource(data->input)); } +PurpleTestStringData test_jabber_util_get_resource_none_data[] = { + {"foo@bar", NULL}, + {"bar", NULL}, + {NULL, NULL}, +}; static void -test_jabber_util_get_resource_none(void) { - PurpleTestStringData data[] = { - { "foo@bar", NULL }, - { "bar", NULL }, - { NULL, NULL }, - }; - - purple_test_string_compare_free(jabber_get_resource, data); +test_jabber_util_get_resource_none(const PurpleTestStringData *data) +{ + g_assert_cmpstr(data->output, ==, jabber_get_resource(data->input)); } +PurpleTestStringData test_jabber_util_get_bare_jid_data[] = { + {"foo@bar", "foo@bar"}, + {"foo@bar/baz", "foo@bar"}, + {"bar", "bar"}, + {"bar/baz", "bar"}, + {NULL, NULL}, +}; static void -test_jabber_util_get_bare_jid(void) { - PurpleTestStringData data[] = { - { "foo@bar", "foo@bar" }, - { "foo@bar/baz", "foo@bar" }, - { "bar", "bar" }, - { "bar/baz", "bar" }, - { NULL, NULL }, - }; - - purple_test_string_compare_free(jabber_get_bare_jid, data); +test_jabber_util_get_bare_jid(const PurpleTestStringData *data) +{ + g_assert_cmpstr(data->output, ==, jabber_get_bare_jid(data->input)); } static void @@ -70,23 +70,21 @@ g_free(longnode); } +const gchar *test_jabber_util_nodeprep_validate_illegal_chars_data[] = { + "don't", + "m@ke", + "\"me\"", + "&ngry", + "c:", + "a/b", + "4>2", + "4<7", + NULL, +}; static void -test_jabber_util_nodeprep_validate_illegal_chars(void) { - const gchar *data[] = { - "don't", - "m@ke", - "\"me\"", - "&ngry", - "c:", - "a/b", - "4>2", - "4<7", - NULL, - }; - gint i; - - for(i = 0; data[i]; i++) - g_assert_false(jabber_nodeprep_validate(data[i])); +test_jabber_util_nodeprep_validate_illegal_chars(const gchar *data) +{ + g_assert_false(jabber_nodeprep_validate(data)); } static void @@ -98,75 +96,70 @@ g_free(longnode); } +const gchar *test_jabber_util_jabber_id_new_valid_data[] = { + "gmail.com", + "gmail.com/Test", + "gmail.com/Test@", + "gmail.com/@", + "gmail.com/Test@alkjaweflkj", + "noone@example.com", + "noone@example.com/Test12345", + "noone@example.com/Test@12345", + "noone@example.com/Te/st@12@//345", + "わいど@conference.jabber.org", + "まりるーむ@conference.jabber.org", + "noone@example.com/まりるーむ", + "noone@example/stuff.org", + "noone@nödåtXäYZ.example", + "noone@nödåtXäYZ.example/まりるーむ", + "noone@わいど.org", + "noone@まつ.おおかみ.net", + "noone@310.0.42.230/s", + "noone@[::1]", /* IPv6 */ + "noone@[3001:470:1f05:d58::2]", + "noone@[3001:470:1f05:d58::2]/foo", + "no=one@310.0.42.230", + "no,one@310.0.42.230", + NULL, +}; static void -test_jabber_util_jabber_id_new_valid(void) { - const gchar *jids[] = { - "gmail.com", - "gmail.com/Test", - "gmail.com/Test@", - "gmail.com/@", - "gmail.com/Test@alkjaweflkj", - "noone@example.com", - "noone@example.com/Test12345", - "noone@example.com/Test@12345", - "noone@example.com/Te/st@12@//345", - "わいど@conference.jabber.org", - "まりるーむ@conference.jabber.org", - "noone@example.com/まりるーむ", - "noone@example/stuff.org", - "noone@nödåtXäYZ.example", - "noone@nödåtXäYZ.example/まりるーむ", - "noone@わいど.org", - "noone@まつ.おおかみ.net", - "noone@310.0.42.230/s", - "noone@[::1]", /* IPv6 */ - "noone@[3001:470:1f05:d58::2]", - "noone@[3001:470:1f05:d58::2]/foo", - "no=one@310.0.42.230", - "no,one@310.0.42.230", - NULL - }; - gint i; +test_jabber_util_jabber_id_new_valid(const gchar *data) +{ + JabberID *jid = jabber_id_new(data); - for(i = 0; jids[i]; i++) { - JabberID *jid = jabber_id_new(jids[i]); + g_assert_nonnull(jid); - g_assert_nonnull(jid); - - jabber_id_free(jid); - } + jabber_id_free(jid); } +const gchar *test_jabber_util_jabber_id_new_invalid_data[] = { + "@gmail.com", + "@@gmail.com", + "noone@@example.com/Test12345", + "no@one@example.com/Test12345", + "@example.com/Test@12345", + "/Test@12345", + "noone@", + "noone/", + "noone@gmail_stuff.org", + "noone@gmail[stuff.org", + "noone@gmail\\stuff.org", + "noone@[::1]124", + "noone@2[::1]124/as", + "noone@まつ.おおかみ/\x01", + /* + * RFC 3454 Section 6 reads, in part, + * "If a string contains any RandALCat character, the + * string MUST NOT contain any LCat character." + * The character is U+066D (ARABIC FIVE POINTED STAR). + */ + "foo@example.com/٭simplexe٭", + NULL, +}; static void -test_jabber_util_jabber_id_new_invalid(void) { - const gchar *jids[] = { - "@gmail.com", - "@@gmail.com", - "noone@@example.com/Test12345", - "no@one@example.com/Test12345", - "@example.com/Test@12345", - "/Test@12345", - "noone@", - "noone/", - "noone@gmail_stuff.org", - "noone@gmail[stuff.org", - "noone@gmail\\stuff.org", - "noone@[::1]124", - "noone@2[::1]124/as", - "noone@まつ.おおかみ/\x01", - /* - * RFC 3454 Section 6 reads, in part, - * "If a string contains any RandALCat character, the - * string MUST NOT contain any LCat character." - * The character is U+066D (ARABIC FIVE POINTED STAR). - */ - "foo@example.com/٭simplexe٭", - NULL, - }; - gint i; - - for(i = 0; jids[i]; i++) - g_assert_null(jabber_id_new(jids[i])); +test_jabber_util_jabber_id_new_invalid(const gchar *jid) +{ + g_assert_null(jabber_id_new(jid)); } #define assert_jid_parts(expect_node, expect_domain, str) G_STMT_START { \ @@ -209,60 +202,85 @@ assert_jid_parts("noone", "өexample.com", "noone@Өexample.com"); } -static const gchar * -partial_jabber_normalize(const gchar *str) { - return jabber_normalize(NULL, str); -} - +PurpleTestStringData test_jabber_util_jabber_normalize_data[] = { + {"NoOnE@ExAMplE.com", "noone@example.com"}, + {"NoOnE@ExampLE.cOM/", "noone@example.com"}, + {"NoONe@exAMPle.CoM/resource", "noone@example.com"}, + {NULL, NULL}, +}; static void -test_jabber_util_jabber_normalize(void) { - PurpleTestStringData data[] = { - { - "NoOnE@ExAMplE.com", - "noone@example.com", - }, { - "NoOnE@ExampLE.cOM/", - "noone@example.com", - }, { - "NoONe@exAMPle.CoM/resource", - "noone@example.com", - }, { - NULL, - NULL, - } - }; - - purple_test_string_compare(partial_jabber_normalize, data); +test_jabber_util_jabber_normalize(const PurpleTestStringData *data) +{ + g_assert_cmpstr(data->output, ==, jabber_normalize(NULL, data->input)); } gint main(gint argc, gchar **argv) { + gchar *test_name; + gint i; g_test_init(&argc, &argv, NULL); - g_test_add_func("/jabber/util/get_resource/exists", - test_jabber_util_get_resource_exists); - g_test_add_func("/jabber/util/get_resource/none", - test_jabber_util_get_resource_none); + for (i = 0; test_jabber_util_get_resource_exists_data[i].input; i++) { + test_name = g_strdup_printf("/jabber/util/get_resource/exists/%d", i); + g_test_add_data_func( + test_name, &test_jabber_util_get_resource_exists_data[i], + (GTestDataFunc)test_jabber_util_get_resource_exists); + g_free(test_name); + } + for (i = 0; test_jabber_util_get_resource_none_data[i].input; i++) { + test_name = g_strdup_printf("/jabber/util/get_resource/none/%d", i); + g_test_add_data_func(test_name, + &test_jabber_util_get_resource_none_data[i], + (GTestDataFunc)test_jabber_util_get_resource_none); + g_free(test_name); + } - g_test_add_func("/jabber/util/get_bare_jid", - test_jabber_util_get_bare_jid); + for (i = 0; test_jabber_util_get_bare_jid_data[i].input; i++) { + test_name = g_strdup_printf("/jabber/util/get_bare_jid/%d", i); + g_test_add_data_func(test_name, &test_jabber_util_get_bare_jid_data[i], + (GTestDataFunc)test_jabber_util_get_bare_jid); + g_free(test_name); + } g_test_add_func("/jabber/util/nodeprep/validate/valid", test_jabber_util_nodeprep_validate); - g_test_add_func("/jabber/util/nodeprep/validate/illegal_chars", - test_jabber_util_nodeprep_validate_illegal_chars); + for (i = 0; test_jabber_util_nodeprep_validate_illegal_chars_data[i]; i++) { + test_name = g_strdup_printf( + "/jabber/util/nodeprep/validate/illegal_chars/%d", i); + g_test_add_data_func( + test_name, + test_jabber_util_nodeprep_validate_illegal_chars_data[i], + (GTestDataFunc) + test_jabber_util_nodeprep_validate_illegal_chars); + g_free(test_name); + } g_test_add_func("/jabber/util/nodeprep/validate/too_long", test_jabber_util_nodeprep_validate_too_long); - g_test_add_func("/jabber/util/id_new/valid", - test_jabber_util_jabber_id_new_valid); - g_test_add_func("/jabber/util/id_new/invalid", - test_jabber_util_jabber_id_new_invalid); + for (i = 0; test_jabber_util_jabber_id_new_valid_data[i]; i++) { + test_name = g_strdup_printf("/jabber/util/id_new/valid/%d", i); + g_test_add_data_func( + test_name, test_jabber_util_jabber_id_new_valid_data[i], + (GTestDataFunc)test_jabber_util_jabber_id_new_valid); + g_free(test_name); + } + for (i = 0; test_jabber_util_jabber_id_new_invalid_data[i]; i++) { + test_name = g_strdup_printf("/jabber/util/id_new/invalid/%d", i); + g_test_add_data_func( + test_name, test_jabber_util_jabber_id_new_invalid_data[i], + (GTestDataFunc)test_jabber_util_jabber_id_new_invalid); + g_free(test_name); + } g_test_add_func("/jabber/util/id_new/jid_parts", test_jabber_util_jid_parts); - g_test_add_func("/jabber/util/normalize", - test_jabber_util_jabber_normalize); + for (i = 0; test_jabber_util_jabber_normalize_data[i].input; i++) { + test_name = g_strdup_printf("/jabber/util/normalize/%d", i); + g_test_add_data_func(test_name, + &test_jabber_util_jabber_normalize_data[i], + (GTestDataFunc)test_jabber_util_jabber_normalize); + g_free(test_name); + } return g_test_run(); }