summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErnestas Kulik <ernestask@gnome.org>2018-03-04 17:14:36 +0200
committerErnestas Kulik <ernestask@gnome.org>2018-03-10 11:06:15 +0200
commit9d2c634c0b06e92f4e7b296e8ffd5c1fc5036f9d (patch)
tree56d136df15fa0172f9e7aa67eef470ebb3c54549
parent44722d41e0b785771a448db1f981ac4889d9cd2b (diff)
downloadlibgd-9d2c634c0b06e92f4e7b296e8ffd5c1fc5036f9d.tar.gz
Add test for GdStyledTextRenderer
-rw-r--r--tests/meson.build8
-rw-r--r--tests/test-styled-text-renderer.c114
2 files changed, 122 insertions, 0 deletions
diff --git a/tests/meson.build b/tests/meson.build
index c670626..15981cb 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -3,3 +3,11 @@ if get_option('with-tagged-entry')
executable(t, t + '.c', dependencies : libgd_dep)
endforeach
endif
+
+if (get_option('with-main-icon-view') or
+ get_option('with-main-list-view') or
+ get_option('with-main-view'))
+ executable('test-styled-text-renderer',
+ 'test-styled-text-renderer.c',
+ dependencies: libgd_dep)
+endif
diff --git a/tests/test-styled-text-renderer.c b/tests/test-styled-text-renderer.c
new file mode 100644
index 0000000..f5697e7
--- /dev/null
+++ b/tests/test-styled-text-renderer.c
@@ -0,0 +1,114 @@
+#include <stdlib.h>
+
+#include <gtk/gtk.h>
+
+#include <libgd/gd-styled-text-renderer.h>
+
+static const gchar *test_data = "Lorem ipsum dolor sit amet, consectetur "
+ "adipiscing elit, sed do eiusmod tempor "
+ "incididunt ut labore et dolore magna aliqua. "
+ "Ut enim ad minim veniam, quis nostrud "
+ "exercitation ullamco laboris nisi ut aliquip "
+ "ex ea commodo consequat. Duis aute irure "
+ "dolor in reprehenderit in voluptate velit "
+ "esse cillum dolore eu fugiat nulla pariatur. "
+ "Excepteur sint occaecat cupidatat non "
+ "proident, sunt in culpa qui officia deserunt "
+ "mollit anim id est laborum.";
+
+static const gchar *test_css = ".test-class {"
+ " color: mix(@theme_fg_color, @theme_bg_color, 0.50);"
+ "}"
+ ".test-class:selected {"
+ " color: rgb(0, 255, 0);"
+ "}";
+
+static void
+on_parsing_error (GtkCssProvider *provider,
+ GtkCssSection *section,
+ GError *error,
+ gpointer user_data)
+{
+ g_error ("Parsing CSS failed at %u:%u – %u:%u: %s",
+ gtk_css_section_get_start_line (section),
+ gtk_css_section_get_start_position (section),
+ gtk_css_section_get_end_line (section),
+ gtk_css_section_get_end_position (section),
+ error->message);
+}
+
+static void
+populate_model (GtkListStore *list_store)
+{
+ g_auto (GStrv) data = NULL;
+
+ data = g_strsplit (test_data, " ", -1);
+
+ for (int i = 0; data[i] != NULL; i++)
+ {
+ GtkTreeIter iter;
+
+ gtk_list_store_append (list_store, &iter);
+
+ gtk_list_store_set (list_store, &iter, 0, data[i], -1);
+ }
+}
+
+static void
+on_destroy (GtkWidget *widget,
+ gpointer user_data)
+{
+ gtk_main_quit ();
+}
+
+gint
+main (gint argc,
+ GStrv argv)
+{
+ g_autoptr (GtkCssProvider) css_provider = NULL;
+ GdkDisplay *display;
+ GtkCellRenderer *cell_renderer;
+ GtkTreeViewColumn *column;
+ g_autoptr (GtkListStore) list_store = NULL;
+ GtkWidget *tree_view;
+ GtkWidget *scrolled_window;
+ GtkWidget *window;
+
+ gtk_init ();
+
+ css_provider = gtk_css_provider_new ();
+ g_signal_connect (css_provider, "parsing-error", G_CALLBACK (on_parsing_error), NULL);
+ gtk_css_provider_load_from_data (css_provider, test_css, -1);
+
+ display = gdk_display_get_default ();
+ gtk_style_context_add_provider_for_display (display, GTK_STYLE_PROVIDER (css_provider),
+ GTK_STYLE_PROVIDER_PRIORITY_USER);
+
+ cell_renderer = gd_styled_text_renderer_new ();
+ gd_styled_text_renderer_add_class (GD_STYLED_TEXT_RENDERER (cell_renderer),
+ "test-class");
+
+ column = gtk_tree_view_column_new_with_attributes ("Text", cell_renderer,
+ "text", 0,
+ NULL);
+
+ list_store = gtk_list_store_new (1, G_TYPE_STRING);
+ populate_model (list_store);
+
+ tree_view = gtk_tree_view_new ();
+ gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+ gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (list_store));
+
+ scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+ gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view);
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ g_signal_connect (window, "destroy", G_CALLBACK (on_destroy), NULL);
+ gtk_container_add (GTK_CONTAINER (window), scrolled_window);
+ gtk_widget_set_size_request (window, 640, 480);
+ gtk_widget_show (window);
+
+ gtk_main ();
+
+ return EXIT_SUCCESS;
+}