summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary Kramlich <grim@reaperworld.com>2018-02-15 23:15:48 -0600
committerGary Kramlich <grim@reaperworld.com>2018-02-15 23:15:48 -0600
commitaf0e42cc061fde8a908073832194d7eb4fdcd69b (patch)
treece4a634a31682c947575566952452b4a3ffdb71b
parentcffb894f610eb534901324e05f51e0f6f0f6196d (diff)
downloadpidgin-af0e42cc061fde8a908073832194d7eb4fdcd69b.tar.gz
Add some basic unit tests
-rw-r--r--libpurple/action.c2
-rw-r--r--libpurple/action.h12
-rw-r--r--libpurple/tests/meson.build1
-rw-r--r--libpurple/tests/test_protocol_action.c100
4 files changed, 114 insertions, 1 deletions
diff --git a/libpurple/action.c b/libpurple/action.c
index 51fe868da1..bfa0a5757f 100644
--- a/libpurple/action.c
+++ b/libpurple/action.c
@@ -150,7 +150,7 @@ purple_protocol_action_free(PurpleProtocolAction *action) {
g_free(action);
}
-static PurpleProtocolAction *
+PurpleProtocolAction *
purple_protocol_action_copy(PurpleProtocolAction *action) {
g_return_val_if_fail(action != NULL, NULL);
diff --git a/libpurple/action.h b/libpurple/action.h
index 42f32c1810..36b4ceb6b3 100644
--- a/libpurple/action.h
+++ b/libpurple/action.h
@@ -199,10 +199,22 @@ GType purple_protocol_action_get_type(void);
*
* Allocates and returns a new PurpleProtocolAction. Use this to add actions in
* a list in the get_actions function of the protocol.
+ *
+ * Returns: (transfer full): The new #PurpleProtocolAction.
*/
PurpleProtocolAction *purple_protocol_action_new(const gchar *label, PurpleProtocolActionCallback callback);
/**
+ * purple_protocol_action_copy:
+ * @action: The #PurpleProtocolAction to copy.
+ *
+ * Creates a newly allocated copy of @action.
+ *
+ * Returns: (transfer full): A copy of @action.
+ */
+PurpleProtocolAction *purple_protocol_action_copy(PurpleProtocolAction *action);
+
+/**
* purple_protocol_action_free:
* @action: The PurpleProtocolAction to free.
*
diff --git a/libpurple/tests/meson.build b/libpurple/tests/meson.build
index 4d353adab6..52dc968d4c 100644
--- a/libpurple/tests/meson.build
+++ b/libpurple/tests/meson.build
@@ -2,6 +2,7 @@ PROGS = [
'attention_type',
'image',
'protocol_attention',
+ 'protocol_action',
'protocol_xfer',
'queued_output_stream',
'smiley',
diff --git a/libpurple/tests/test_protocol_action.c b/libpurple/tests/test_protocol_action.c
new file mode 100644
index 0000000000..14f4f36658
--- /dev/null
+++ b/libpurple/tests/test_protocol_action.c
@@ -0,0 +1,100 @@
+/*
+ * 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>
+
+#include "dbus-server.h"
+
+/******************************************************************************
+ * Helpers
+ *****************************************************************************/
+static void
+_test_purple_protocol_action_callback(PurpleProtocolAction *action) {
+
+}
+
+/******************************************************************************
+ * Tests
+ *****************************************************************************/
+static void
+test_purple_protocol_action_new(void) {
+ PurpleProtocolAction *action = NULL;
+
+ action = purple_protocol_action_new(
+ "label",
+ _test_purple_protocol_action_callback
+ );
+ g_assert_nonnull(action);
+
+ g_assert_cmpstr(action->label, ==, "label");
+ g_assert(action->callback == _test_purple_protocol_action_callback);
+
+ purple_protocol_action_free(action);
+}
+
+static void
+test_purple_protocol_action_copy(void) {
+ PurpleProtocolAction *orig = NULL, *copy = NULL;
+
+ orig = purple_protocol_action_new(
+ "label",
+ _test_purple_protocol_action_callback
+ );
+ g_assert_nonnull(orig);
+
+ copy = purple_protocol_action_copy(orig);
+ purple_protocol_action_free(orig);
+
+ g_assert_cmpstr(copy->label, ==, "label");
+ g_assert(copy->callback == _test_purple_protocol_action_callback);
+
+ purple_protocol_action_free(copy);
+}
+
+/******************************************************************************
+ * 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(
+ "/protocol-action/new",
+ test_purple_protocol_action_new
+ );
+
+ g_test_add_func(
+ "/protocol-action/copy",
+ test_purple_protocol_action_copy
+ );
+
+ res = g_test_run();
+
+ return res;
+}