libpurple/tests/test_str.c

changeset 42060
d55b605fdafb
child 42866
4b201e18638f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/tests/test_str.c	Fri Feb 17 19:34:51 2023 -0600
@@ -0,0 +1,76 @@
+/*
+ * 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