Add some unit tests around purple_account_option_copy

Mon, 07 Oct 2019 21:00:28 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Mon, 07 Oct 2019 21:00:28 -0500
changeset 39974
cea80de2f5ac
parent 39973
46bfe6624f53
child 39979
df567aa3b2d5

Add some unit tests around purple_account_option_copy

libpurple/tests/meson.build file | annotate | diff | comparison | revisions
libpurple/tests/test_account_option.c file | annotate | diff | comparison | revisions
--- a/libpurple/tests/meson.build	Fri Sep 27 15:57:50 2019 -0500
+++ b/libpurple/tests/meson.build	Mon Oct 07 21:00:28 2019 -0500
@@ -1,8 +1,9 @@
 PROGS = [
+    'account_option',
     'attention_type',
     'image',
+    'protocol_action',
     'protocol_attention',
-    'protocol_action',
     'protocol_xfer',
     'queued_output_stream',
     'smiley',
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/tests/test_account_option.c	Mon Oct 07 21:00:28 2019 -0500
@@ -0,0 +1,160 @@
+/*
+ * Purple
+ *
+ * Purple is the legal property of its developers, whose names are too
+ * numerous to list here. Please refer to the COPYRIGHT file distributed
+ * with this source distribution
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include <glib.h>
+#include <string.h>
+
+#include <purple.h>
+
+/******************************************************************************
+ * Helpers
+ *****************************************************************************/
+static void
+test_purple_account_option_compare(PurpleAccountOption *opt1,
+                                   PurpleAccountOption *opt2)
+{
+	g_assert_cmpint(purple_account_option_get_pref_type(opt1),
+	                ==,
+	                purple_account_option_get_pref_type(opt2));
+	g_assert_cmpstr(purple_account_option_get_text(opt1),
+	                ==,
+	                purple_account_option_get_text(opt2));
+	g_assert_cmpstr(purple_account_option_get_setting(opt1),
+	                ==,
+	                purple_account_option_get_setting(opt2));
+}
+
+static void
+test_purple_account_option_compare_string(PurpleAccountOption *opt1,
+                                          PurpleAccountOption *opt2)
+{
+	test_purple_account_option_compare(opt1, opt2);
+
+	g_assert_cmpstr(purple_account_option_get_default_string(opt1),
+	                ==,
+	                purple_account_option_get_default_string(opt2));
+	g_assert_cmpint(purple_account_option_string_get_masked(opt1),
+	                ==,
+	                purple_account_option_string_get_masked(opt2));
+}
+
+/******************************************************************************
+ * Tests
+ *****************************************************************************/
+static void
+test_purple_account_option_copy_int(void) {
+	PurpleAccountOption *opt1, *opt2;
+
+	opt1 = purple_account_option_new(PURPLE_PREF_INT, "int", "test-int");
+	opt2 = purple_account_option_copy(opt1);
+
+	test_purple_account_option_compare(opt1, opt2);
+}
+
+static void
+test_purple_account_option_copy_int_with_default(void) {
+	PurpleAccountOption *opt1, *opt2;
+
+	opt1 = purple_account_option_new(PURPLE_PREF_INT, "int", "test-int");
+	purple_account_option_set_default_int(opt1, 42);
+
+	opt2 = purple_account_option_copy(opt1);
+
+	test_purple_account_option_compare(opt1, opt2);
+
+	g_assert_cmpint(purple_account_option_get_default_int(opt1),
+	                ==,
+	                purple_account_option_get_default_int(opt2));
+}
+
+static void
+test_purple_account_option_copy_string(void) {
+	PurpleAccountOption *opt1, *opt2;
+
+	opt1 = purple_account_option_new(PURPLE_PREF_STRING, "string", "test-string");
+
+	opt2 = purple_account_option_copy(opt1);
+	test_purple_account_option_compare_string(opt1, opt2);
+}
+
+static void
+test_purple_account_option_copy_string_with_default(void) {
+	PurpleAccountOption *opt1, *opt2;
+
+	opt1 = purple_account_option_new(PURPLE_PREF_STRING, "string", "test-string");
+	purple_account_option_set_default_string(opt1, "default");
+
+	opt2 = purple_account_option_copy(opt1);
+	test_purple_account_option_compare_string(opt1, opt2);
+}
+
+static void
+test_purple_account_option_copy_string_with_masked(void) {
+	PurpleAccountOption *opt1, *opt2;
+
+	opt1 = purple_account_option_new(PURPLE_PREF_STRING, "string", "test-string");
+	purple_account_option_string_set_masked(opt1, TRUE);
+
+	opt2 = purple_account_option_copy(opt1);
+	test_purple_account_option_compare_string(opt1, opt2);
+}
+
+/******************************************************************************
+ * Main
+ *****************************************************************************/
+gint
+main(gint argc, gchar **argv) {
+	gint res = 0;
+
+	g_test_init(&argc, &argv, NULL);
+
+	g_test_set_nonfatal_assertions();
+
+	g_test_add_func(
+		"/account_option/copy/int",
+		test_purple_account_option_copy_int
+	);
+
+	g_test_add_func(
+		"/account_option/copy/int_with_default",
+		test_purple_account_option_copy_int_with_default
+	);
+
+	g_test_add_func(
+		"/account_option/copy/string",
+		test_purple_account_option_copy_string
+	);
+
+	g_test_add_func(
+		"/account_option/copy/string_with_default",
+		test_purple_account_option_copy_string_with_default
+	);
+
+	g_test_add_func(
+		"/account_option/copy/string_with_masked",
+		test_purple_account_option_copy_string_with_masked
+	);
+
+	res = g_test_run();
+
+	return res;
+}

mercurial