libpurple/tests/test_str.c

Tue, 23 Jan 2024 00:04:57 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Tue, 23 Jan 2024 00:04:57 -0600
changeset 42571
722be3b1a8aa
parent 42060
d55b605fdafb
child 42866
4b201e18638f
permissions
-rw-r--r--

Redesign the presence manager a bit

The presence manager now stores everything in a directory rather than a single
ini file. This avoids relocating schemas which seems to have a number of
issues.

Also bind the "active" setting to the "active-presence" property so that you
can change the active presence via the `manager.ini` gsettings keyfile.

So other various tweaks as well.

Testing Done:
Opened `manager.ini` and toggled the active status between a few I created.

Consulted with the turtles and ran the `presence_manager` and `saved_presence` unit tests under valgrind.

Reviewed at https://reviews.imfreedom.org/r/2912/

/*
 * Purple - Internet Messaging Library
 * Copyright (C) Pidgin Developers <devel@pidgin.im>
 *
 * 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, see <https://www.gnu.org/licenses/>.
 */

#include <glib.h>

#include <purple.h>

/******************************************************************************
 * Tests
 *****************************************************************************/
static void
test_purple_strmatches_null(void) {
	g_assert_false(purple_strmatches("abc", NULL));
}

static void
test_purple_strmatches_adjacent(void) {
	g_assert_true(purple_strmatches("abc", "abc"));
	g_assert_true(purple_strmatches("abc", "123abc"));
	g_assert_true(purple_strmatches("abc", "abcxyz"));
	g_assert_true(purple_strmatches("abc", "123abcxyz"));
}

static void
test_purple_strmatches_sparse(void) {
	g_assert_true(purple_strmatches("adf", "abcdefg"));
	g_assert_true(purple_strmatches("jon", "john"));
	g_assert_true(purple_strmatches("lce", "alice"));
}

static void
test_purple_strmatches_iterates_correctly(void) {
	/* These tests are to make sure that we are iterating both the pattern and
	 * the string to check properly.
	 */

	/* since we have 2 e's in the pattern, this test makes sure that we iterate
	 * past the first matching e in the string we're checking.
	 */
	g_assert_false(purple_strmatches("beer", "berry"));
}

/******************************************************************************
 * Public API
 *****************************************************************************/
gint
main(gint argc, gchar **argv) {
	g_test_init(&argc, &argv, NULL);

	g_test_add_func("/strmatches/null", test_purple_strmatches_null);
	g_test_add_func("/strmatches/adjacent", test_purple_strmatches_adjacent);
	g_test_add_func("/strmatches/sparse", test_purple_strmatches_sparse);
	g_test_add_func("/strmatches/iterates_correctly",
	                test_purple_strmatches_iterates_correctly);

	return g_test_run();
}

mercurial