libpurple/tests/test_saved_presence.c

changeset 42226
f44497b3f5d9
parent 42207
7c16e3b1cce8
child 42230
0c86a3fa4617
--- a/libpurple/tests/test_saved_presence.c	Thu Jun 22 20:59:24 2023 -0500
+++ b/libpurple/tests/test_saved_presence.c	Thu Jun 22 21:06:18 2023 -0500
@@ -94,6 +94,184 @@
 	g_clear_object(&presence);
 }
 
+static void
+test_purple_saved_presence_equal_null_null(void) {
+	g_assert_true(purple_saved_presence_equal(NULL, NULL));
+}
+
+static void
+test_purple_saved_presence_equal_null_a(void) {
+	PurpleSavedPresence *b = purple_saved_presence_new();
+
+	g_assert_false(purple_saved_presence_equal(NULL, b));
+
+	g_clear_object(&b);
+}
+
+static void
+test_purple_saved_presence_equal_null_b(void) {
+	PurpleSavedPresence *a = purple_saved_presence_new();
+
+	g_assert_false(purple_saved_presence_equal(a, NULL));
+
+	g_clear_object(&a);
+}
+
+static void
+test_purple_saved_presence_equal_default(void) {
+	PurpleSavedPresence *a = purple_saved_presence_new();
+	PurpleSavedPresence *b = purple_saved_presence_new();
+
+	g_assert_true(purple_saved_presence_equal(a, b));
+
+	g_clear_object(&a);
+	g_clear_object(&b);
+}
+
+static void
+test_purple_saved_presence_equal_last_used(void) {
+	PurpleSavedPresence *a = purple_saved_presence_new();
+	PurpleSavedPresence *b = purple_saved_presence_new();
+	GDateTime *now = g_date_time_new_now_utc();
+	GDateTime *yesterday = g_date_time_add_days(now, -1);
+
+	/* Set the last used time for a but not b. */
+	purple_saved_presence_set_last_used(a, now);
+	g_assert_false(purple_saved_presence_equal(a, b));
+
+	/* Set the last used time for b to the same as a. */
+	purple_saved_presence_set_last_used(b, now);
+	g_assert_true(purple_saved_presence_equal(a, b));
+
+	/* Set the last used time for b to yesterday. */
+	purple_saved_presence_set_last_used(b, yesterday);
+	g_assert_false(purple_saved_presence_equal(a, b));
+
+	/* Set the last used time for a to NULL. */
+	purple_saved_presence_set_last_used(a, NULL);
+	g_assert_false(purple_saved_presence_equal(a, b));
+
+	/* Set the last used time for b to NULL. */
+	purple_saved_presence_set_last_used(b, NULL);
+	g_assert_true(purple_saved_presence_equal(a, b));
+
+	g_clear_object(&a);
+	g_clear_object(&b);
+	g_clear_pointer(&now, g_date_time_unref);
+	g_clear_pointer(&yesterday, g_date_time_unref);
+}
+
+static void
+test_purple_saved_presence_equal_use_count(void) {
+	PurpleSavedPresence *a = purple_saved_presence_new();
+	PurpleSavedPresence *b = purple_saved_presence_new();
+
+	/* Set the use-count of a to 100. */
+	purple_saved_presence_set_use_count(a, 100);
+	g_assert_false(purple_saved_presence_equal(a, b));
+
+	/* Check an explicit value is equal. */
+	purple_saved_presence_set_use_count(b, 100);
+	g_assert_true(purple_saved_presence_equal(a, b));
+
+	/* Set the use-count of b to 101. */
+	purple_saved_presence_set_use_count(b, 101);
+	g_assert_false(purple_saved_presence_equal(a, b));
+
+	g_clear_object(&a);
+	g_clear_object(&b);
+}
+
+static void
+test_purple_saved_presence_equal_name(void) {
+	PurpleSavedPresence *a = purple_saved_presence_new();
+	PurpleSavedPresence *b = purple_saved_presence_new();
+
+	/* Set the name of a. */
+	purple_saved_presence_set_name(a, "present");
+	g_assert_false(purple_saved_presence_equal(a, b));
+
+	/* Set the name of b to the same as a. */
+	purple_saved_presence_set_name(b, "present");
+	g_assert_true(purple_saved_presence_equal(a, b));
+
+	/* Set the name of b to something else. */
+	purple_saved_presence_set_name(b, "future");
+	g_assert_false(purple_saved_presence_equal(a, b));
+
+	/* Set the name of a to NULL. */
+	purple_saved_presence_set_name(a, NULL);
+	g_assert_false(purple_saved_presence_equal(a, b));
+
+	g_clear_object(&a);
+	g_clear_object(&b);
+}
+
+static void
+test_purple_saved_presence_equal_primitive(void) {
+	PurpleSavedPresence *a = purple_saved_presence_new();
+	PurpleSavedPresence *b = purple_saved_presence_new();
+
+	/* Set the primitive of a to streaming. */
+	purple_saved_presence_set_primitive(a,
+	                                    PURPLE_PRESENCE_PRIMITIVE_STREAMING);
+	g_assert_false(purple_saved_presence_equal(a, b));
+
+	/* Set the primitive of b to idle. */
+	purple_saved_presence_set_primitive(b, PURPLE_PRESENCE_PRIMITIVE_IDLE);
+	g_assert_false(purple_saved_presence_equal(a, b));
+
+	/* Set the primitives to the same value. */
+	purple_saved_presence_set_primitive(b,
+	                                    PURPLE_PRESENCE_PRIMITIVE_STREAMING);
+	g_assert_true(purple_saved_presence_equal(a, b));
+
+	g_clear_object(&a);
+	g_clear_object(&b);
+}
+
+static void
+test_purple_saved_presence_equal_message(void) {
+	PurpleSavedPresence *a = purple_saved_presence_new();
+	PurpleSavedPresence *b = purple_saved_presence_new();
+
+	/* Set the message for a. */
+	purple_saved_presence_set_message(a, "sleeping...");
+	g_assert_false(purple_saved_presence_equal(a, b));
+
+	/* Set the message for b. */
+	purple_saved_presence_set_message(b, "working!");
+	g_assert_false(purple_saved_presence_equal(a, b));
+
+	/* Set the messages to the same. */
+	purple_saved_presence_set_message(a, "working!");
+	g_assert_true(purple_saved_presence_equal(a, b));
+
+	g_clear_object(&a);
+	g_clear_object(&b);
+}
+
+static void
+test_purple_saved_presence_equal_emoji(void) {
+	PurpleSavedPresence *a = purple_saved_presence_new();
+	PurpleSavedPresence *b = purple_saved_presence_new();
+
+	/* Set the emoji for a. */
+	purple_saved_presence_set_emoji(a, "💤");
+	g_assert_false(purple_saved_presence_equal(a, b));
+
+	/* Set the emoji for b. */
+	purple_saved_presence_set_emoji(b, "🏢");
+	g_assert_false(purple_saved_presence_equal(a, b));
+
+	/* Set the emoji to the same. */
+	purple_saved_presence_set_emoji(a, "🏢");
+	g_assert_true(purple_saved_presence_equal(a, b));
+
+	g_clear_object(&a);
+	g_clear_object(&b);
+}
+
 /******************************************************************************
  * Main
  *****************************************************************************/
@@ -106,6 +284,27 @@
 	g_test_add_func("/saved-presence/properties",
 	                test_purple_saved_presence_properties);
 
+	g_test_add_func("/saved-presence/equal/null_null",
+	                test_purple_saved_presence_equal_null_null);
+	g_test_add_func("/saved-presence/equal/null_a",
+	                test_purple_saved_presence_equal_null_a);
+	g_test_add_func("/saved-presence/equal/null_b",
+	                test_purple_saved_presence_equal_null_b);
+	g_test_add_func("/saved-presence/equal/default",
+	                test_purple_saved_presence_equal_default);
+
+	g_test_add_func("/saved-presence/equal/last-used",
+	                test_purple_saved_presence_equal_last_used);
+	g_test_add_func("/saved-presence/equal/use-count",
+	                test_purple_saved_presence_equal_use_count);
+	g_test_add_func("/saved-presence/equal/name",
+	                test_purple_saved_presence_equal_name);
+	g_test_add_func("/saved-presence/equal/primitive",
+	                test_purple_saved_presence_equal_primitive);
+	g_test_add_func("/saved-presence/equal/message",
+	                test_purple_saved_presence_equal_message);
+	g_test_add_func("/saved-presence/equal/emoji",
+	                test_purple_saved_presence_equal_emoji);
 
 	return g_test_run();
 }

mercurial