1 | #include <gtk/gtk.h> |
2 | |
3 | static 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 | |
73 | static void |
74 | test_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 | |
94 | int |
95 | main (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 | |