From 9bcf401ef7437eeeadfc16c51e60b2fbd3ba4fe3 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 22 Jun 2020 16:36:22 -0400 Subject: [PATCH] Add a basic clipboard test This is not reproducing the failure I'm after, unfortunately. --- testsuite/gdk/clipboard.c | 83 +++++++++++++++++++++++++++++++++++++++ testsuite/gdk/meson.build | 1 + 2 files changed, 84 insertions(+) create mode 100644 testsuite/gdk/clipboard.c diff --git a/testsuite/gdk/clipboard.c b/testsuite/gdk/clipboard.c new file mode 100644 index 0000000000..741899401f --- /dev/null +++ b/testsuite/gdk/clipboard.c @@ -0,0 +1,83 @@ +#include + +#include + +static void +text_received (GObject *source, + GAsyncResult *res, + gpointer data) +{ + GdkClipboard *clipboard = GDK_CLIPBOARD (source); + gboolean *done = data; + GError *error = NULL; + char *text; + + text = gdk_clipboard_read_text_finish (clipboard, res, &error); + + g_assert_no_error (error); + g_assert_cmpstr (text, ==, "testing, 1, 2"); + + g_free (text); + + *done = TRUE; + + g_main_context_wakeup (NULL); +} + +static void +test_clipboard_basic (void) +{ + GdkDisplay *display; + GdkClipboard *clipboard; + GdkContentFormats *formats; + GdkContentProvider *content; + gboolean done; + gboolean ret; + GValue value = G_VALUE_INIT; + GError *error = NULL; + + display = gdk_display_get_default (); + clipboard = gdk_display_get_clipboard (display); + + g_assert_true (gdk_clipboard_get_display (clipboard) == display); + + gdk_clipboard_set_text (clipboard, "testing, 1, 2"); + + g_assert_true (gdk_clipboard_is_local (clipboard)); + + formats = gdk_clipboard_get_formats (clipboard); + + g_assert_true (gdk_content_formats_contain_gtype (formats, G_TYPE_STRING)); + g_assert_true (gdk_content_formats_contain_mime_type (formats, "text/plain")); + + done = FALSE; + + gdk_clipboard_read_text_async (clipboard, NULL, text_received, &done); + + while (!done) + g_main_context_iteration (NULL, TRUE); + + content = gdk_clipboard_get_content (clipboard); + g_assert_nonnull (content); + + g_value_init (&value, G_TYPE_STRING); + ret = gdk_content_provider_get_value (content, &value, &error); + g_assert_true (ret); + g_assert_no_error (error); + g_assert_true (G_VALUE_TYPE (&value) == G_TYPE_STRING); + g_assert_cmpstr (g_value_get_string (&value), ==, "testing, 1, 2"); + + g_value_unset (&value); +} + +int +main (int argc, char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + gtk_init (); + + g_test_add_func ("/clipboard/basic", test_clipboard_basic); + + return g_test_run (); +} diff --git a/testsuite/gdk/meson.build b/testsuite/gdk/meson.build index 75b6c078a0..003e77172b 100644 --- a/testsuite/gdk/meson.build +++ b/testsuite/gdk/meson.build @@ -3,6 +3,7 @@ testdatadir = join_paths(installed_test_datadir, 'gdk') tests = [ 'cairo', + 'clipboard', 'display', 'encoding', 'keysyms',