pidgin/pidgin

Remove a parameter from a doc comment on purple_presence_set_idle which was missed

Testing Done:
Had the turtles do their thing. Also verified the warning was gone.

Reviewed at https://reviews.imfreedom.org/r/3159/
/*
* Purple - Internet Messaging Library
* Copyright (C) Pidgin Developers <devel@pidgin.im>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see <https://www.gnu.org/licenses/>.
*/
#include <glib.h>
#include <birb.h>
#include <purple.h>
#include "test_ui.h"
/******************************************************************************
* Tests
*****************************************************************************/
static void
test_purple_contact_info_new(void) {
PurpleContactInfo *info = NULL;
info = purple_contact_info_new("id");
g_assert_cmpstr(purple_contact_info_get_id(info), ==, "id");
g_clear_object(&info);
}
static void
test_purple_contact_info_properties(void) {
PurpleAvatar *avatar = NULL;
PurpleAvatar *avatar1 = NULL;
PurpleContactInfo *info = NULL;
PurpleContactInfoPermission permission;
PurplePerson *person = NULL;
PurplePerson *person1 = NULL;
PurplePresence *presence1 = NULL;
PurpleTags *tags = NULL;
GTimeZone *time_zone = NULL;
GTimeZone *time_zone1 = NULL;
char *id = NULL;
char *username = NULL;
char *display_name = NULL;
char *alias = NULL;
char *color = NULL;
char *email = NULL;
char *phone_number = NULL;
char *note = NULL;
char *sid = NULL;
char *name_for_display = NULL;
gboolean favorite = FALSE;
avatar = g_object_new(PURPLE_TYPE_AVATAR, NULL);
person = purple_person_new();
time_zone = g_time_zone_new_utc();
/* Use g_object_new so we can test setting properties by name. All of them
* call the setter methods, so by doing it this way we exercise more of the
* code.
*/
info = g_object_new(
PURPLE_TYPE_CONTACT_INFO,
"id", "id1",
"username", "username",
"display-name", "display-name",
"alias", "alias",
"color", "#e9c636",
"email", "pidgin@example.com",
"phone-number", "+10123456789",
"time-zone", time_zone,
"note", "message in a bottle",
"avatar", avatar,
"person", person,
"permission", PURPLE_CONTACT_INFO_PERMISSION_ALLOW,
"sid", "sid",
"favorite", TRUE,
NULL);
/* Now use g_object_get to read all of the properties. */
g_object_get(info,
"id", &id,
"username", &username,
"display-name", &display_name,
"alias", &alias,
"color", &color,
"email", &email,
"phone-number", &phone_number,
"time-zone", &time_zone1,
"note", &note,
"avatar", &avatar1,
"presence", &presence1,
"tags", &tags,
"person", &person1,
"permission", &permission,
"sid", &sid,
"name-for-display", &name_for_display,
"favorite", &favorite,
NULL);
/* Compare all the things. */
g_assert_cmpstr(id, ==, "id1");
g_assert_cmpstr(username, ==, "username");
g_assert_cmpstr(display_name, ==, "display-name");
g_assert_cmpstr(alias, ==, "alias");
g_assert_cmpstr(color, ==, "#e9c636");
g_assert_cmpstr(email, ==, "pidgin@example.com");
g_assert_cmpstr(phone_number, ==, "+10123456789");
g_assert_cmpstr(g_time_zone_get_identifier(time_zone1), ==,
g_time_zone_get_identifier(time_zone));
g_assert_cmpstr(note, ==, "message in a bottle");
g_assert_cmpstr(name_for_display, ==, "alias");
g_assert_true(avatar1 == avatar);
g_assert_nonnull(presence1);
g_assert_nonnull(tags);
g_assert_true(person1 == person);
g_assert_true(permission == PURPLE_CONTACT_INFO_PERMISSION_ALLOW);
g_assert_cmpstr(sid, ==, "sid");
g_assert_true(favorite);
/* Free/unref all the things. */
g_clear_pointer(&id, g_free);
g_clear_pointer(&username, g_free);
g_clear_pointer(&display_name, g_free);
g_clear_pointer(&alias, g_free);
g_clear_pointer(&color, g_free);
g_clear_pointer(&email, g_free);
g_clear_pointer(&phone_number, g_free);
g_clear_pointer(&time_zone, g_time_zone_unref);
g_clear_pointer(&note, g_free);
g_clear_pointer(&name_for_display, g_free);
g_clear_pointer(&sid, g_free);
g_clear_object(&avatar1);
g_clear_object(&presence1);
g_clear_object(&tags);
g_clear_object(&person);
g_clear_object(&person1);
g_clear_object(&avatar);
g_clear_object(&info);
}
/******************************************************************************
* get_name_for_display tests
*****************************************************************************/
static void
test_purple_contact_info_get_name_for_display_person_with_alias(void) {
PurpleContactInfo *info = NULL;
PurplePerson *person = NULL;
const char *alias = NULL;
person = purple_person_new();
purple_person_set_alias(person, "person alias");
info = purple_contact_info_new("id");
/* we don't set the alias on the contact info, as that takes priority over
* the person's alias.
*/
purple_contact_info_set_username(info, "username");
purple_contact_info_set_display_name(info, "display name");
purple_contact_info_set_person(info, person);
alias = purple_contact_info_get_name_for_display(info);
g_assert_cmpstr(alias, ==, "person alias");
g_clear_object(&info);
g_clear_object(&person);
}
static void
test_purple_contact_info_get_name_for_display_contact_info_with_alias(void) {
PurpleContactInfo *info = NULL;
PurplePerson *person = NULL;
const char *alias = NULL;
person = purple_person_new();
purple_person_set_alias(person, "person alias");
info = purple_contact_info_new("id");
purple_contact_info_set_person(info, person);
purple_contact_info_set_alias(info, "contact alias");
purple_contact_info_set_username(info, "username");
purple_contact_info_set_display_name(info, "display name");
alias = purple_contact_info_get_name_for_display(info);
g_assert_cmpstr(alias, ==, "contact alias");
g_clear_object(&info);
g_clear_object(&person);
}
static void
test_purple_contact_info_get_name_for_display_contact_info_with_display_name(void) {
PurpleContactInfo *info = NULL;
PurplePerson *person = NULL;
const char *alias = NULL;
person = purple_person_new();
info = purple_contact_info_new("id");
purple_contact_info_set_person(info, person);
purple_contact_info_set_display_name(info, "display name");
purple_contact_info_set_username(info, "username");
alias = purple_contact_info_get_name_for_display(info);
g_assert_cmpstr(alias, ==, "display name");
g_clear_object(&info);
g_clear_object(&person);
}
static void
test_purple_contact_info_get_name_for_display_username_fallback(void) {
PurpleContactInfo *info = NULL;
PurplePerson *person = NULL;
const char *alias = NULL;
person = purple_person_new();
info = purple_contact_info_new("id");
purple_contact_info_set_username(info, "username");
purple_contact_info_set_person(info, person);
alias = purple_contact_info_get_name_for_display(info);
g_assert_cmpstr(alias, ==, "username");
g_clear_object(&info);
g_clear_object(&person);
}
static void
test_purple_contact_info_get_name_for_display_id_fallback(void) {
PurpleContactInfo *info = NULL;
PurplePerson *person = NULL;
const char *alias = NULL;
person = purple_person_new();
info = purple_contact_info_new("id");
purple_contact_info_set_person(info, person);
alias = purple_contact_info_get_name_for_display(info);
g_assert_cmpstr(alias, ==, "id");
g_clear_object(&info);
g_clear_object(&person);
}
/******************************************************************************
* purple_contact_info_compare tests
*****************************************************************************/
static void
test_purple_contact_info_compare_not_null__null(void) {
PurpleContactInfo *info = NULL;
info = purple_contact_info_new(NULL);
g_assert_cmpint(purple_contact_info_compare(info, NULL), <, 0);
g_clear_object(&info);
}
static void
test_purple_contact_info_compare_null__not_null(void) {
PurpleContactInfo *info = NULL;
info = purple_contact_info_new(NULL);
g_assert_cmpint(purple_contact_info_compare(NULL, info), >, 0);
g_clear_object(&info);
}
static void
test_purple_contact_info_compare_null__null(void) {
g_assert_cmpint(purple_contact_info_compare(NULL, NULL), ==, 0);
}
static void
test_purple_contact_info_compare_person__no_person(void) {
PurpleContactInfo *info_a = NULL;
PurpleContactInfo *info_b = NULL;
PurplePerson *person = NULL;
info_a = purple_contact_info_new(NULL);
person = purple_person_new();
purple_contact_info_set_person(info_a, person);
info_b = purple_contact_info_new(NULL);
g_assert_cmpint(purple_contact_info_compare(info_a, info_b), <, 0);
g_clear_object(&info_a);
g_clear_object(&info_b);
g_clear_object(&person);
}
static void
test_purple_contact_info_compare_no_person__person(void) {
PurpleContactInfo *info_a = NULL;
PurpleContactInfo *info_b = NULL;
PurplePerson *person = NULL;
info_a = purple_contact_info_new(NULL);
info_b = purple_contact_info_new(NULL);
person = purple_person_new();
purple_contact_info_set_person(info_b, person);
g_assert_cmpint(purple_contact_info_compare(info_a, info_b), >, 0);
g_clear_object(&info_a);
g_clear_object(&info_b);
g_clear_object(&person);
}
static void
test_purple_contact_info_compare_name__name(void) {
PurpleContactInfo *info_a = NULL;
PurpleContactInfo *info_b = NULL;
info_a = purple_contact_info_new(NULL);
purple_contact_info_set_username(info_a, "aaa");
info_b = purple_contact_info_new(NULL);
purple_contact_info_set_username(info_b, "zzz");
g_assert_cmpint(purple_contact_info_compare(info_a, info_b), <, 0);
g_assert_cmpint(purple_contact_info_compare(info_b, info_a), >, 0);
purple_contact_info_set_username(info_b, "aaa");
g_assert_cmpint(purple_contact_info_compare(info_b, info_a), ==, 0);
g_clear_object(&info_a);
g_clear_object(&info_b);
}
/******************************************************************************
* Matches
*****************************************************************************/
static void
test_purple_contact_info_matches_accepts_null(void) {
PurpleContactInfo *info = purple_contact_info_new(NULL);
g_assert_true(purple_contact_info_matches(info, NULL));
g_clear_object(&info);
}
static void
test_purple_contact_info_matches_empty_string(void) {
PurpleContactInfo *info = purple_contact_info_new(NULL);
g_assert_true(purple_contact_info_matches(info, ""));
g_clear_object(&info);
}
static void
test_purple_contact_info_matches_username(void) {
PurpleContactInfo *info = purple_contact_info_new(NULL);
purple_contact_info_set_username(info, "username");
g_assert_true(purple_contact_info_matches(info, "name"));
g_clear_object(&info);
}
static void
test_purple_contact_info_matches_alias(void) {
PurpleContactInfo *info = purple_contact_info_new(NULL);
purple_contact_info_set_alias(info, "alias");
g_assert_true(purple_contact_info_matches(info, "lia"));
g_clear_object(&info);
}
static void
test_purple_contact_info_matches_display_name(void) {
PurpleContactInfo *info = purple_contact_info_new(NULL);
purple_contact_info_set_display_name(info, "display name");
g_assert_true(purple_contact_info_matches(info, "play"));
g_clear_object(&info);
}
static void
test_purple_contact_info_matches_none(void) {
PurpleContactInfo *info = purple_contact_info_new("id");
purple_contact_info_set_username(info, "username");
purple_contact_info_set_alias(info, "alias");
purple_contact_info_set_display_name(info, "display name");
g_assert_false(purple_contact_info_matches(info, "nothing"));
g_clear_object(&info);
}
/******************************************************************************
* presence-changed signal tests
*****************************************************************************/
static void
test_purple_contact_info_presence_changed_callback(PurpleContactInfo *info,
PurplePresence *presence,
GParamSpec *pspec,
gpointer data)
{
guint *counter = data;
g_assert_true(PURPLE_IS_CONTACT_INFO(info));
g_assert_true(PURPLE_IS_PRESENCE(presence));
g_assert_true(G_IS_PARAM_SPEC(pspec));
*counter = *counter + 1;
}
static void
test_purple_contact_info_presence_changed_signal(void) {
PurpleContactInfo *info = NULL;
PurplePresence *presence = NULL;
guint counter = 0;
/* Create the info and add our callbacks, one for everything and another
* for just idle to make sure detail works.
*/
info = purple_contact_info_new(NULL);
g_signal_connect(info, "presence-changed",
G_CALLBACK(test_purple_contact_info_presence_changed_callback),
&counter);
g_signal_connect(info, "presence-changed::idle",
G_CALLBACK(test_purple_contact_info_presence_changed_callback),
&counter);
/* Grab the presence and start changing stuff. */
presence = purple_contact_info_get_presence(info);
g_assert_true(PURPLE_IS_PRESENCE(presence));
/* Set the presence as idle with no time, which should call our callback
* three times, twice for the non-detailed callback, and once for the
* detailed callback.
*/
g_assert_cmpint(counter, ==, 0);
purple_presence_set_idle(presence, TRUE);
g_assert_cmpint(counter, ==, 3);
/* Cleanup. */
g_clear_object(&info);
}
/******************************************************************************
* get_menu tests
*****************************************************************************/
static void
test_purple_contact_info_get_menu_populate_cb(PurpleContactInfo *info,
BirbActionMenu *action_menu,
gpointer data)
{
GMenu *menu = NULL;
guint *counter = data;
g_assert_true(PURPLE_IS_CONTACT_INFO(info));
g_assert_true(BIRB_IS_ACTION_MENU(action_menu));
menu = birb_action_menu_get_menu(action_menu);
g_menu_append(menu, "testing", "app.test");
/* Increment our called counter. */
*counter = *counter + 1;
}
static void
test_purple_contact_info_get_menu(void) {
PurpleContactInfo *info = NULL;
BirbActionMenu *action_menu = NULL;
GMenu *menu = NULL;
guint counter = 0;
info = purple_contact_info_new(NULL);
/* Check that we get an empty menu back with no signal handlers. */
action_menu = purple_contact_info_get_menu(info);
menu = birb_action_menu_get_menu(action_menu);
g_assert_true(G_IS_MENU_MODEL(menu));
g_assert_cmpuint(g_menu_model_get_n_items(G_MENU_MODEL(menu)), ==, 0);
g_clear_object(&action_menu);
/* Add a signal handler and verify that our items got added. */
g_signal_connect(info, "populate-menu",
G_CALLBACK(test_purple_contact_info_get_menu_populate_cb),
&counter);
action_menu = purple_contact_info_get_menu(info);
menu = birb_action_menu_get_menu(action_menu);
g_assert_cmpuint(counter, ==, 1);
g_assert_true(G_IS_MENU_MODEL(menu));
g_assert_cmpuint(g_menu_model_get_n_items(G_MENU_MODEL(menu)), ==, 1);
g_assert_finalize_object(action_menu);
/* Cleanup. */
g_clear_object(&info);
}
/******************************************************************************
* Main
*****************************************************************************/
gint
main(gint argc, gchar *argv[]) {
gint ret = 0;
g_test_init(&argc, &argv, NULL);
test_ui_purple_init();
g_test_add_func("/contact-info/new",
test_purple_contact_info_new);
g_test_add_func("/contact-info/properties",
test_purple_contact_info_properties);
g_test_add_func("/contact-info/get_name_for_display/person_with_alias",
test_purple_contact_info_get_name_for_display_person_with_alias);
g_test_add_func("/contact-info/get_name_for_display/contact_with_alias",
test_purple_contact_info_get_name_for_display_contact_info_with_alias);
g_test_add_func("/contact-info/get_name_for_display/contact_with_display_name",
test_purple_contact_info_get_name_for_display_contact_info_with_display_name);
g_test_add_func("/contact-info/get_name_for_display/username_fallback",
test_purple_contact_info_get_name_for_display_username_fallback);
g_test_add_func("/contact-info/get_name_for_display/id_fallback",
test_purple_contact_info_get_name_for_display_id_fallback);
g_test_add_func("/contact-info/compare/not_null__null",
test_purple_contact_info_compare_not_null__null);
g_test_add_func("/contact-info/compare/null__not_null",
test_purple_contact_info_compare_null__not_null);
g_test_add_func("/contact-info/compare/null__null",
test_purple_contact_info_compare_null__null);
g_test_add_func("/contact-info/compare/person__no_person",
test_purple_contact_info_compare_person__no_person);
g_test_add_func("/contact-info/compare/no_person__person",
test_purple_contact_info_compare_no_person__person);
g_test_add_func("/contact-info/compare/name__name",
test_purple_contact_info_compare_name__name);
g_test_add_func("/contact-info/matches/accepts_null",
test_purple_contact_info_matches_accepts_null);
g_test_add_func("/contact-info/matches/emptry_string",
test_purple_contact_info_matches_empty_string);
g_test_add_func("/contact-info/matches/username",
test_purple_contact_info_matches_username);
g_test_add_func("/contact-info/matches/alias",
test_purple_contact_info_matches_alias);
g_test_add_func("/contact-info/matches/display_name",
test_purple_contact_info_matches_display_name);
g_test_add_func("/contact-info/matches/none",
test_purple_contact_info_matches_none);
g_test_add_func("/contact-info/presence-changed-signal",
test_purple_contact_info_presence_changed_signal);
g_test_add_func("/contact-info/get_menu",
test_purple_contact_info_get_menu);
ret = g_test_run();
test_ui_purple_uninit();
return ret;
}