aboutsummaryrefslogtreecommitdiff
path: root/tests/test-service.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-service.cc')
-rw-r--r--tests/test-service.cc44
1 files changed, 30 insertions, 14 deletions
diff --git a/tests/test-service.cc b/tests/test-service.cc
index e69b574..b199175 100644
--- a/tests/test-service.cc
+++ b/tests/test-service.cc
@@ -318,28 +318,44 @@ class ServiceTest: public GTestDBusFixture
void check_header (const char * expected_label, const char * expected_icon, const char * expected_a11y)
{
- GVariant * variant;
- const gchar * label = NULL;
- const gchar * icon = NULL;
- const gchar * a11y = NULL;
- gboolean visible;
-
- variant = g_action_group_get_action_state (G_ACTION_GROUP(action_group), "_header");
- g_variant_get (variant, "(&s&s&sb)", &label, &icon, &a11y, &visible);
+ GVariant * state = g_action_group_get_action_state (G_ACTION_GROUP(action_group), "_header");
+ ASSERT_TRUE (state != NULL);
+ ASSERT_TRUE (g_variant_is_of_type (state, G_VARIANT_TYPE ("a{sv}")));
if (expected_label != NULL)
- ASSERT_STREQ (expected_label, label);
-
- if (expected_icon != NULL)
- ASSERT_STREQ (expected_icon, icon);
+ {
+ GVariant * v = g_variant_lookup_value (state, "label", G_VARIANT_TYPE_STRING);
+ if (!v) // if no label in the state, expected_label must be an empty string
+ ASSERT_FALSE (*expected_label);
+ else
+ ASSERT_STREQ (expected_label, g_variant_get_string (v, NULL));
+ }
if (expected_a11y != NULL)
- ASSERT_STREQ (expected_a11y, a11y);
+ {
+ GVariant * v = g_variant_lookup_value (state, "accessible-desc", G_VARIANT_TYPE_STRING);
+ ASSERT_TRUE (v != NULL);
+ ASSERT_STREQ (expected_a11y, g_variant_get_string (v, NULL));
+ g_variant_unref (v);
+ }
+
+ if (expected_icon != NULL)
+ {
+ GVariant * v = g_variant_lookup_value (state, "icon", NULL);
+ GIcon * expected = g_themed_icon_new (expected_icon);
+ GIcon * actual = g_icon_deserialize (v);
+ ASSERT_TRUE (g_icon_equal (expected, actual));
+ g_object_unref (actual);
+ g_object_unref (expected);
+ g_variant_unref (v);
+ }
// the session menu is always visible...
+ gboolean visible = false;
+ g_variant_lookup (state, "visible", "b", &visible);
ASSERT_TRUE (visible);
- g_variant_unref (variant);
+ g_variant_unref (state);
}
void check_label (const char * expected_label, GMenuModel * model, int pos)