gtk/testsuite/gdk/clipboard.c
Matthias Clasen 9bcf401ef7 Add a basic clipboard test
This is not reproducing the failure I'm after, unfortunately.
2020-06-22 16:55:01 -04:00

84 lines
1.9 KiB
C

#include <stdlib.h>
#include <gtk/gtk.h>
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 ();
}