From 3821fc9e1b07732fd1796103439b4c95b27a0138 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 29 Oct 2014 09:36:27 -0500 Subject: Make our ref/unrefs dependent on shared pointers --- tests/indicator-fixture.h | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'tests/indicator-fixture.h') diff --git a/tests/indicator-fixture.h b/tests/indicator-fixture.h index 7ae3dde..99fd7d1 100644 --- a/tests/indicator-fixture.h +++ b/tests/indicator-fixture.h @@ -17,6 +17,7 @@ * Ted Gould */ +#include #include #include @@ -138,11 +139,14 @@ class IndicatorFixture : public ::testing::Test if (location >= g_menu_model_get_n_items(menu)) return; - auto menuval = g_menu_model_get_item_attribute_value(menu, location, attribute.c_str(), g_variant_get_type(value)); + auto menuval = std::shared_ptr(g_menu_model_get_item_attribute_value(menu, location, attribute.c_str(), g_variant_get_type(value)), [](GVariant * varptr) { + if (varptr != nullptr) + g_variant_unref(varptr); + }); + EXPECT_NE(nullptr, menuval); if (menuval != nullptr) { - EXPECT_TRUE(g_variant_equal(value, menuval)); - g_variant_unref(menuval); + EXPECT_TRUE(g_variant_equal(value, menuval.get())); } } @@ -152,19 +156,24 @@ class IndicatorFixture : public ::testing::Test if (menuLocation.size() - 1 == index) return expectMenuAttributeVerify(menuLocation[index], menu, attribute, value); - auto submenu = g_menu_model_get_item_link(menu, menuLocation[index], G_MENU_LINK_SUBMENU); + auto submenu = std::shared_ptr(g_menu_model_get_item_link(menu, menuLocation[index], G_MENU_LINK_SUBMENU), [](GMenuModel * modelptr) { + g_clear_object(&modelptr); + }); + EXPECT_NE(nullptr, submenu); if (submenu == nullptr) return; - expectMenuAttributeRecurse(menuLocation, attribute, value, index++, submenu); - g_object_unref(submenu); + expectMenuAttributeRecurse(menuLocation, attribute, value, index++, submenu.get()); } void expectMenuAttribute (const std::vector menuLocation, const std::string& attribute, GVariant * value) { - g_variant_ref_sink(value); + auto varref = std::shared_ptr(g_variant_ref_sink(value), [](GVariant * varptr) { + if (varptr != nullptr) + g_variant_unref(varptr); + }); + expectMenuAttributeRecurse(menuLocation, attribute, value, 0, _menu); - g_variant_unref(value); } void expectMenuAttribute (const std::vector menuLocation, const std::string& attribute, bool value) { -- cgit v1.2.3