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

Sun, 10 Nov 2019 22:22:21 -0500

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Sun, 10 Nov 2019 22:22:21 -0500
changeset 40179
83abc6732fb5
parent 40164
d3b870b30eb9
child 40180
91e9ec0e535e

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();
 }

mercurial