Merge pull request #582 from bebehei/dbus-test2
Test raw icon assembly in DBus
This commit is contained in:
		
						commit
						0e0af0d8ec
					
				
							
								
								
									
										65
									
								
								test/dbus.c
									
									
									
									
									
								
							
							
						
						
									
										65
									
								
								test/dbus.c
									
									
									
									
									
								
							| @ -3,10 +3,13 @@ | ||||
| #include "greatest.h" | ||||
| 
 | ||||
| #include <assert.h> | ||||
| #include <gdk-pixbuf/gdk-pixbuf.h> | ||||
| #include <gio/gio.h> | ||||
| 
 | ||||
| #include "queues.h" | ||||
| 
 | ||||
| extern const char *base; | ||||
| 
 | ||||
| void wake_up_void(void) {  } | ||||
| 
 | ||||
| struct signal_actioninvoked { | ||||
| @ -247,6 +250,37 @@ bool dbus_notification_fire(struct dbus_notification *n, uint *id) | ||||
|         } | ||||
| } | ||||
| 
 | ||||
| void dbus_notification_set_raw_image(struct dbus_notification *n_dbus, const char *path) | ||||
| { | ||||
|         GdkPixbuf *pb = gdk_pixbuf_new_from_file(path, NULL); | ||||
| 
 | ||||
|         if (!pb) | ||||
|                 return; | ||||
| 
 | ||||
|         GVariant *hint_data = g_variant_new_from_data( | ||||
|                                 G_VARIANT_TYPE("ay"), | ||||
|                                 gdk_pixbuf_read_pixels(pb), | ||||
|                                 gdk_pixbuf_get_byte_length(pb), | ||||
|                                 TRUE, | ||||
|                                 (GDestroyNotify) g_object_unref, | ||||
|                                 g_object_ref(pb)); | ||||
| 
 | ||||
|         GVariant *hint = g_variant_new( | ||||
|                                 "(iiibii@ay)", | ||||
|                                 gdk_pixbuf_get_width(pb), | ||||
|                                 gdk_pixbuf_get_height(pb), | ||||
|                                 gdk_pixbuf_get_rowstride(pb), | ||||
|                                 gdk_pixbuf_get_has_alpha(pb), | ||||
|                                 gdk_pixbuf_get_bits_per_sample(pb), | ||||
|                                 gdk_pixbuf_get_n_channels(pb), | ||||
|                                 hint_data); | ||||
| 
 | ||||
|         g_hash_table_insert(n_dbus->hints, | ||||
|                             g_strdup("image-data"), | ||||
|                             g_variant_ref_sink(hint)); | ||||
|         g_object_unref(pb); | ||||
| } | ||||
| 
 | ||||
| /////// TESTS
 | ||||
| gint owner_id; | ||||
| 
 | ||||
| @ -562,6 +596,36 @@ TEST test_hint_urgency(void) | ||||
|         PASS(); | ||||
| } | ||||
| 
 | ||||
| TEST test_hint_raw_image(void) | ||||
| { | ||||
|         guint id; | ||||
|         struct notification *n; | ||||
|         struct dbus_notification *n_dbus; | ||||
| 
 | ||||
|         char *path = g_strconcat(base, "/data/icons/valid.png", NULL); | ||||
|         gsize len = queues_length_waiting(); | ||||
| 
 | ||||
|         n_dbus = dbus_notification_new(); | ||||
|         dbus_notification_set_raw_image(n_dbus, path); | ||||
|         n_dbus->app_name = "dunstteststack"; | ||||
|         n_dbus->app_icon = "NONE"; | ||||
|         n_dbus->summary = "test_hint_raw_image"; | ||||
|         n_dbus->body = "Summary of it"; | ||||
| 
 | ||||
|         ASSERT(dbus_notification_fire(n_dbus, &id)); | ||||
|         ASSERT(id != 0); | ||||
| 
 | ||||
|         ASSERT_EQ(queues_length_waiting(), len+1); | ||||
|         n = queues_debug_find_notification_by_id(id); | ||||
| 
 | ||||
|         ASSERT(n->raw_icon); | ||||
| 
 | ||||
|         dbus_notification_free(n_dbus); | ||||
|         g_free(path); | ||||
| 
 | ||||
|         PASS(); | ||||
| } | ||||
| 
 | ||||
| TEST test_server_caps(enum markup_mode markup) | ||||
| { | ||||
|         GVariant *reply; | ||||
| @ -715,6 +779,7 @@ gpointer run_threaded_tests(gpointer data) | ||||
|         RUN_TEST(test_hint_icons); | ||||
|         RUN_TEST(test_hint_category); | ||||
|         RUN_TEST(test_hint_urgency); | ||||
|         RUN_TEST(test_hint_raw_image); | ||||
|         RUN_TEST(test_dbus_notify_colors); | ||||
|         RUN_TESTp(test_server_caps, MARKUP_FULL); | ||||
|         RUN_TESTp(test_server_caps, MARKUP_STRIP); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Benedikt Heine
						Benedikt Heine