mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-12-10 10:33:42 +01:00
g_simple_async_result_is_valid: fix for NULL source tag
If a GSimpleAsyncResult has a NULL source tag, allow it to compare valid to a non-NULL source tag in g_simple_async_result_is_valid(), to simplify cases where, eg, g_simple_async_result_new() and g_simple_async_result_report_error_in_idle() are both used. https://bugzilla.gnome.org/show_bug.cgi?id=721458
This commit is contained in:
@@ -119,12 +119,77 @@ test_simple_async (void)
|
||||
ensure_destroyed (b);
|
||||
}
|
||||
|
||||
static void
|
||||
test_valid (void)
|
||||
{
|
||||
GAsyncResult *result;
|
||||
GObject *a, *b;
|
||||
|
||||
a = g_object_new (G_TYPE_OBJECT, NULL);
|
||||
b = g_object_new (G_TYPE_OBJECT, NULL);
|
||||
|
||||
/* Without source or tag */
|
||||
result = (GAsyncResult *) g_simple_async_result_new (NULL, NULL, NULL, NULL);
|
||||
g_assert_true (g_simple_async_result_is_valid (result, NULL, NULL));
|
||||
g_assert_true (g_simple_async_result_is_valid (result, NULL, test_valid));
|
||||
g_assert_true (g_simple_async_result_is_valid (result, NULL, test_simple_async));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, a, NULL));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, a, test_valid));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, a, test_simple_async));
|
||||
g_object_unref (result);
|
||||
|
||||
/* Without source, with tag */
|
||||
result = (GAsyncResult *) g_simple_async_result_new (NULL, NULL, NULL, test_valid);
|
||||
g_assert_true (g_simple_async_result_is_valid (result, NULL, NULL));
|
||||
g_assert_true (g_simple_async_result_is_valid (result, NULL, test_valid));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, NULL, test_simple_async));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, a, NULL));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, a, test_valid));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, a, test_simple_async));
|
||||
g_object_unref (result);
|
||||
|
||||
/* With source, without tag */
|
||||
result = (GAsyncResult *) g_simple_async_result_new (a, NULL, NULL, NULL);
|
||||
g_assert_true (g_simple_async_result_is_valid (result, a, NULL));
|
||||
g_assert_true (g_simple_async_result_is_valid (result, a, test_valid));
|
||||
g_assert_true (g_simple_async_result_is_valid (result, a, test_simple_async));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, NULL, NULL));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, NULL, test_valid));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, NULL, test_simple_async));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, b, NULL));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, b, test_valid));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, b, test_simple_async));
|
||||
g_object_unref (result);
|
||||
|
||||
/* With source and tag */
|
||||
result = (GAsyncResult *) g_simple_async_result_new (a, NULL, NULL, test_valid);
|
||||
g_assert_true (g_simple_async_result_is_valid (result, a, test_valid));
|
||||
g_assert_true (g_simple_async_result_is_valid (result, a, NULL));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, a, test_simple_async));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, NULL, NULL));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, NULL, test_valid));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, NULL, test_simple_async));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, b, NULL));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, b, test_valid));
|
||||
g_assert_false (g_simple_async_result_is_valid (result, b, test_simple_async));
|
||||
g_object_unref (result);
|
||||
|
||||
/* Non-GSimpleAsyncResult */
|
||||
result = (GAsyncResult *) g_task_new (NULL, NULL, NULL, NULL);
|
||||
g_assert_false (g_simple_async_result_is_valid (result, NULL, NULL));
|
||||
g_object_unref (result);
|
||||
|
||||
g_object_unref (a);
|
||||
g_object_unref (b);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
g_test_init (&argc, &argv, NULL);
|
||||
|
||||
g_test_add_func ("/gio/simple-async-result/test", test_simple_async);
|
||||
g_test_add_func ("/gio/simple-async-result/valid", test_valid);
|
||||
|
||||
return g_test_run();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user