Test raw icon assembly in DBus

This commit is contained in:
Benedikt Heine 2019-01-03 18:12:18 +01:00
parent c1090ad7dc
commit d1700dc3eb

View File

@ -3,10 +3,13 @@
#include "greatest.h" #include "greatest.h"
#include <assert.h> #include <assert.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gio/gio.h> #include <gio/gio.h>
#include "queues.h" #include "queues.h"
extern const char *base;
void wake_up_void(void) { } void wake_up_void(void) { }
struct signal_actioninvoked { 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 /////// TESTS
gint owner_id; gint owner_id;
@ -562,6 +596,36 @@ TEST test_hint_urgency(void)
PASS(); 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) TEST test_server_caps(enum markup_mode markup)
{ {
GVariant *reply; GVariant *reply;
@ -715,6 +779,7 @@ gpointer run_threaded_tests(gpointer data)
RUN_TEST(test_hint_icons); RUN_TEST(test_hint_icons);
RUN_TEST(test_hint_category); RUN_TEST(test_hint_category);
RUN_TEST(test_hint_urgency); RUN_TEST(test_hint_urgency);
RUN_TEST(test_hint_raw_image);
RUN_TEST(test_dbus_notify_colors); RUN_TEST(test_dbus_notify_colors);
RUN_TESTp(test_server_caps, MARKUP_FULL); RUN_TESTp(test_server_caps, MARKUP_FULL);
RUN_TESTp(test_server_caps, MARKUP_STRIP); RUN_TESTp(test_server_caps, MARKUP_STRIP);