pidgin/pidgin

Re-write jabber util tests to be subtest-ish.

2019-11-10, Elliott Sales de Andrade
83abc6732fb5
Parents d3b870b30eb9
Children 91e9ec0e535e
Re-write jabber util tests to be subtest-ish.
--- 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();
}