libpurple/tests/test_request_field.c

Thu, 16 Mar 2023 20:43:41 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Thu, 16 Mar 2023 20:43:41 -0500
changeset 42149
4de5a514b8ba
parent 42148
4c7b2771461a
child 42150
a90f1381c9a8
permissions
-rw-r--r--

Add a PurpleRequestField:valid property and is_valid vfunc

* Add a `PurpleRequestField:valid` property and `is_valid` vfunc.
* Add a `GDestroyNotify` parameter for the validator data, and document the callback.
* Correct the property notification in `purple_request_field_bool_set_value`.

Testing Done:
Compiled and ran `ninja test`

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

42148
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
1 /*
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
2 * Purple - Internet Messaging Library
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
4 *
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
5 * This library is free software; you can redistribute it and/or
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
6 * modify it under the terms of the GNU Lesser General Public
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
7 * License as published by the Free Software Foundation; either
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
8 * version 2 of the License, or (at your option) any later version.
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
9 *
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
10 * This library is distributed in the hope that it will be useful,
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
13 * Lesser General Public License for more details.
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
14 *
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
15 * You should have received a copy of the GNU Lesser General Public
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
16 * License along with this library; if not, see <https://www.gnu.org/licenses/>.
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
17 */
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
18
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
19 #include <glib.h>
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
20
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
21 #include <purple.h>
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
22
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
23 /******************************************************************************
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
24 * Tests
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
25 *****************************************************************************/
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
26 static void
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
27 test_request_field_notify_filled_cb(G_GNUC_UNUSED GObject *obj,
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
28 G_GNUC_UNUSED GParamSpec *pspec,
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
29 gpointer data)
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
30 {
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
31 gboolean *called = data;
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
32
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
33 *called = TRUE;
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
34 }
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
35
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
36 static void
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
37 test_request_field_filled_string(void) {
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
38 PurpleRequestField *field = NULL;
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
39 gboolean called = FALSE;
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
40
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
41 field = purple_request_field_string_new("test-string", "Test string", NULL,
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
42 FALSE);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
43 g_signal_connect(field, "notify::filled",
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
44 G_CALLBACK(test_request_field_notify_filled_cb), &called);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
45 g_assert_false(purple_request_field_is_filled(field));
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
46
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
47 /* Passing same value should not trigger. */
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
48 called = FALSE;
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
49 purple_request_field_string_set_value(PURPLE_REQUEST_FIELD_STRING(field),
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
50 NULL);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
51 g_assert_false(called);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
52 g_assert_false(purple_request_field_is_filled(field));
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
53
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
54 /* Passing an empty string should not trigger, as NULL and "" are
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
55 * considered the same. */
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
56 called = FALSE;
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
57 purple_request_field_string_set_value(PURPLE_REQUEST_FIELD_STRING(field),
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
58 "");
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
59 g_assert_false(called);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
60 g_assert_false(purple_request_field_is_filled(field));
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
61
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
62 /* Now that there's a change from empty to filled, notify should occur. */
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
63 called = FALSE;
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
64 purple_request_field_string_set_value(PURPLE_REQUEST_FIELD_STRING(field),
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
65 "text");
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
66 g_assert_true(called);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
67 g_assert_true(purple_request_field_is_filled(field));
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
68
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
69 /* Passing same value should not trigger. */
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
70 called = FALSE;
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
71 purple_request_field_string_set_value(PURPLE_REQUEST_FIELD_STRING(field),
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
72 "text");
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
73 g_assert_false(called);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
74 g_assert_true(purple_request_field_is_filled(field));
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
75
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
76 /* And then going back to empty should notify. */
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
77 called = FALSE;
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
78 purple_request_field_string_set_value(PURPLE_REQUEST_FIELD_STRING(field),
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
79 "");
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
80 g_assert_true(called);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
81 g_assert_false(purple_request_field_is_filled(field));
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
82
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
83 g_object_unref(field);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
84 }
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
85
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
86 static void
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
87 test_request_field_filled_nonstring(void) {
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
88 /* Anything that's not a string should always be considered filled and
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
89 * never notify. */
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
90 PurpleRequestField *field = NULL;
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
91 gboolean called = FALSE;
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
92
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
93 field = purple_request_field_int_new("test-int", "Test int", 50, 0, 100);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
94 g_signal_connect(field, "notify::filled",
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
95 G_CALLBACK(test_request_field_notify_filled_cb), &called);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
96 g_assert_true(purple_request_field_is_filled(field));
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
97
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
98 called = FALSE;
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
99 purple_request_field_int_set_value(PURPLE_REQUEST_FIELD_INT(field), 50);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
100 g_assert_false(called);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
101 g_assert_true(purple_request_field_is_filled(field));
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
102
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
103 called = FALSE;
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
104 purple_request_field_int_set_value(PURPLE_REQUEST_FIELD_INT(field), 0);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
105 g_assert_false(called);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
106 g_assert_true(purple_request_field_is_filled(field));
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
107
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
108 called = FALSE;
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
109 purple_request_field_int_set_value(PURPLE_REQUEST_FIELD_INT(field), 100);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
110 g_assert_false(called);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
111 g_assert_true(purple_request_field_is_filled(field));
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
112
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
113 g_object_unref(field);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
114 }
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
115
42149
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
116 static void
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
117 test_request_field_valid_int(void) {
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
118 PurpleRequestField *field = NULL;
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
119 char *errmsg = NULL;
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
120 gboolean result;
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
121
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
122 field = purple_request_field_int_new("test-int", "Test int", 50, 0, 100);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
123 result = purple_request_field_is_valid(field, &errmsg);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
124 g_assert_null(errmsg);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
125 g_assert_true(result);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
126
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
127 purple_request_field_int_set_value(PURPLE_REQUEST_FIELD_INT(field), -42);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
128 result = purple_request_field_is_valid(field, &errmsg);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
129 g_assert_cmpstr(errmsg, ==, "Int value -42 exceeds lower bound 0");
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
130 g_assert_false(result);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
131 g_free(errmsg);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
132
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
133 /* Don't crash if no error message is requested. */
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
134 result = purple_request_field_is_valid(field, NULL);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
135 g_assert_false(result);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
136
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
137 purple_request_field_int_set_value(PURPLE_REQUEST_FIELD_INT(field), 1337);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
138 result = purple_request_field_is_valid(field, &errmsg);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
139 g_assert_cmpstr(errmsg, ==, "Int value 1337 exceeds upper bound 100");
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
140 g_assert_false(result);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
141 g_free(errmsg);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
142
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
143 /* Don't crash if no error message is requested. */
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
144 result = purple_request_field_is_valid(field, NULL);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
145 g_assert_false(result);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
146
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
147 g_object_unref(field);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
148 }
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
149
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
150 static gboolean
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
151 test_request_field_validator_is_even(PurpleRequestField *field, char **errmsg,
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
152 G_GNUC_UNUSED gpointer data)
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
153 {
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
154 gboolean *called = data;
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
155 gint value;
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
156
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
157 *called = TRUE;
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
158 g_return_val_if_fail(PURPLE_IS_REQUEST_FIELD_INT(field), FALSE);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
159
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
160 value = purple_request_field_int_get_value(PURPLE_REQUEST_FIELD_INT(field));
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
161
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
162 if(value % 2 != 0) {
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
163 *errmsg = g_strdup_printf("Value %d is not even.", value);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
164 return FALSE;
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
165 }
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
166
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
167 return TRUE;
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
168 }
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
169
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
170 static void
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
171 test_request_field_valid_custom(void) {
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
172 PurpleRequestField *field = NULL;
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
173 char *errmsg = NULL;
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
174 gboolean result;
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
175 gboolean called = FALSE;
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
176
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
177 field = purple_request_field_int_new("test-int", "Test int", 50, 0, 100);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
178 purple_request_field_set_validator(field,
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
179 test_request_field_validator_is_even,
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
180 &called, NULL);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
181 result = purple_request_field_is_valid(field, &errmsg);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
182 g_assert_cmpstr(errmsg, ==, NULL);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
183 g_assert_true(result);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
184
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
185 /* Default validator (i.e., the bounds) is checked first. */
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
186 called = FALSE;
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
187 purple_request_field_int_set_value(PURPLE_REQUEST_FIELD_INT(field), -42);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
188 result = purple_request_field_is_valid(field, &errmsg);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
189 g_assert_cmpstr(errmsg, ==, "Int value -42 exceeds lower bound 0");
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
190 g_assert_false(result);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
191 g_assert_false(called);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
192 g_free(errmsg);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
193
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
194 /* But if default validator passes, then the custom one is checked. */
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
195 called = FALSE;
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
196 purple_request_field_int_set_value(PURPLE_REQUEST_FIELD_INT(field), 23);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
197 result = purple_request_field_is_valid(field, &errmsg);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
198 g_assert_cmpstr(errmsg, ==, "Value 23 is not even.");
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
199 g_assert_false(result);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
200 g_assert_true(called);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
201 g_free(errmsg);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
202
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
203 g_object_unref(field);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
204 }
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
205
42148
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
206 /******************************************************************************
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
207 * Main
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
208 *****************************************************************************/
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
209 gint
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
210 main(gint argc, gchar *argv[]) {
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
211 g_test_init(&argc, &argv, NULL);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
212
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
213 g_test_add_func("/request-field/filled-string",
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
214 test_request_field_filled_string);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
215 g_test_add_func("/request-field/filled-nonstring",
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
216 test_request_field_filled_nonstring);
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
217
42149
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
218 g_test_add_func("/request-field/valid-int", test_request_field_valid_int);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
219 g_test_add_func("/request-field/valid-custom",
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
220 test_request_field_valid_custom);
4de5a514b8ba Add a PurpleRequestField:valid property and is_valid vfunc
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42148
diff changeset
221
42148
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
222 return g_test_run();
4c7b2771461a Add PurpleRequestField.is_filled vfunc, and a filled property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
223 }

mercurial