1#include <gtk/gtk.h>
2
3static const char *icon_names[] = {
4 /*** Icons used in code or templates, sorted alphabetically ***/
5 "audio-volume-high",
6 "audio-volume-high-symbolic",
7 "audio-volume-low",
8 "audio-volume-low-symbolic",
9 "audio-volume-medium",
10 "audio-volume-medium-symbolic",
11 "audio-volume-muted",
12 "audio-volume-muted-symbolic",
13 "application-x-executable-symbolic",
14 "bookmark-new-symbolic",
15 "changes-allow-symbolic",
16 "changes-prevent-symbolic",
17 "dialog-password-symbolic",
18 "dialog-warning-symbolic",
19 "document-open-symbolic",
20 "document-save-as-symbolic",
21 "document-save-symbolic",
22 "edit-clear-symbolic",
23 "edit-clear-all-symbolic",
24 "edit-cut-symbolic",
25 "edit-delete-symbolic",
26 "edit-find-symbolic",
27 "edit-paste-symbolic",
28 "emblem-important-symbolic",
29 "emblem-system-symbolic",
30 "emoji-activities-symbolic",
31 "emoji-body-symbolic",
32 "emoji-flags-symbolic",
33 "emoji-food-symbolic",
34 "emoji-nature-symbolic",
35 "emoji-objects-symbolic",
36 "emoji-people-symbolic",
37 "emoji-recent-symbolic",
38 "emoji-symbols-symbolic",
39 "emoji-travel-symbolic",
40 "find-location-symbolic",
41 "folder-new-symbolic",
42 "folder-pictures-symbolic",
43 "go-down-symbolic",
44 "go-up-symbolic",
45 "orientation-landscape-symbolic",
46 "orientation-landscape-inverse-symbolic",
47 "orientation-portrait-symbolic",
48 "orientation-portrait-inverse-symbolic",
49 "insert-image",
50 "insert-object-symbolic",
51 "list-add-symbolic",
52 "list-remove-symbolic",
53 "media-eject-symbolic",
54 "media-playback-pause-symbolic",
55 "media-playback-start-symbolic",
56 "media-playlist-repeat",
57 "media-record-symbolic",
58 "network-server-symbolic",
59 "object-select-symbolic",
60 "open-menu-symbolic",
61 "pan-down-symbolic",
62 "pan-end-symbolic",
63 "pan-start-symbolic",
64 "pan-up-symbolic",
65 "user-trash-symbolic",
66 "view-list-symbolic",
67 "window-close-symbolic",
68 "window-maximize-symbolic",
69 "window-minimize-symbolic",
70 "window-restore-symbolic"
71};
72
73static void
74test_icon_existence (gconstpointer icon_name)
75{
76 GtkIconTheme *icon_theme = gtk_icon_theme_get_for_display (display: gdk_display_get_default ());
77 GtkIconPaintable *info;
78
79 /* Not using generic fallback and builtins here, as we explicitly want to check the
80 * icon theme.
81 * The icon size is randomly chosen.
82 */
83 info = gtk_icon_theme_lookup_icon (self: icon_theme, icon_name, NULL, size: 16, scale: 1, direction: GTK_TEXT_DIR_LTR, flags: 0);
84 if (info == NULL)
85 {
86 g_test_message (format: "Failed to look up icon for \"%s\"", (char *) icon_name);
87 g_test_fail ();
88 return;
89 }
90
91 g_object_unref (object: info);
92}
93
94int
95main (int argc, char *argv[])
96{
97 guint i;
98 char *test_name;
99 char *theme;
100
101 gtk_test_init (argcp: &argc, argvp: &argv);
102
103 g_object_get (object: gtk_settings_get_default (), first_property_name: "gtk-icon-theme-name", &theme, NULL);
104 g_test_message (format: "Testing icon theme: %s", theme);
105 g_free (mem: theme);
106
107 for (i = 0; i < G_N_ELEMENTS (icon_names); i++)
108 {
109 test_name = g_strdup_printf (format: "/check-icon-names/%s", icon_names[i]);
110 g_test_add_data_func (testpath: test_name, test_data: icon_names[i], test_func: test_icon_existence);
111 g_free (mem: test_name);
112 }
113
114 return g_test_run();
115}
116

source code of gtk/testsuite/gtk/check-icon-names.c