From 46f92bac64882fdec51524252fb0e3afa5fff0ad Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Thu, 25 Oct 2012 14:55:48 +0200 Subject: the device kind string wasn't being used in some icon names. --- src/device.c | 28 ++--- tests/test-device.cc | 341 +++++++++++++++++++++++++++++---------------------- 2 files changed, 210 insertions(+), 159 deletions(-) diff --git a/src/device.c b/src/device.c index 898e18f..c19b9fa 100644 --- a/src/device.c +++ b/src/device.c @@ -334,7 +334,7 @@ indicator_power_device_get_icon_names (const IndicatorPowerDevice * device) gdouble percentage = indicator_power_device_get_percentage (device); const UpDeviceKind kind = indicator_power_device_get_kind (device); const UpDeviceState state = indicator_power_device_get_state (device); - const gchar * kind_str = kind_str = up_device_kind_to_string (kind); + const gchar * kind_str = up_device_kind_to_string (kind); GPtrArray * names = g_ptr_array_new (); @@ -351,19 +351,19 @@ indicator_power_device_get_icon_names (const IndicatorPowerDevice * device) else switch (state) { case UP_DEVICE_STATE_EMPTY: - g_ptr_array_add (names, g_strdup("battery-empty-symbolic")); + g_ptr_array_add (names, g_strdup_printf("%s-empty-symbolic", kind_str)); g_ptr_array_add (names, g_strdup_printf("gpm-%s-empty", kind_str)); g_ptr_array_add (names, g_strdup_printf("gpm-%s-000", kind_str)); - g_ptr_array_add (names, g_strdup("battery-empty")); + g_ptr_array_add (names, g_strdup_printf("%s-empty", kind_str)); break; case UP_DEVICE_STATE_FULLY_CHARGED: - g_ptr_array_add (names, g_strdup("battery-full-charged-symbolic")); - g_ptr_array_add (names, g_strdup("battery-full-charging-symbolic")); + g_ptr_array_add (names, g_strdup_printf("%s-full-charged-symbolic", kind_str)); + g_ptr_array_add (names, g_strdup_printf("%s-full-charging-symbolic", kind_str)); g_ptr_array_add (names, g_strdup_printf("gpm-%s-full", kind_str)); g_ptr_array_add (names, g_strdup_printf("gpm-%s-100", kind_str)); - g_ptr_array_add (names, g_strdup("battery-full-charged")); - g_ptr_array_add (names, g_strdup("battery-full-charging")); + g_ptr_array_add (names, g_strdup_printf("%s-full-charged", kind_str)); + g_ptr_array_add (names, g_strdup_printf("%s-full-charging", kind_str)); break; case UP_DEVICE_STATE_CHARGING: @@ -374,9 +374,9 @@ indicator_power_device_get_icon_names (const IndicatorPowerDevice * device) suffix_str = get_device_icon_suffix (percentage); index_str = get_device_icon_index (percentage); - g_ptr_array_add (names, g_strdup_printf ("battery-%s-charging-symbolic", suffix_str)); + g_ptr_array_add (names, g_strdup_printf ("%s-%s-charging-symbolic", kind_str, suffix_str)); g_ptr_array_add (names, g_strdup_printf ("gpm-%s-%s-charging", kind_str, index_str)); - g_ptr_array_add (names, g_strdup_printf ("battery-%s-charging", suffix_str)); + g_ptr_array_add (names, g_strdup_printf ("%s-%s-charging", kind_str, suffix_str)); break; case UP_DEVICE_STATE_DISCHARGING: @@ -392,14 +392,14 @@ indicator_power_device_get_icon_names (const IndicatorPowerDevice * device) index_str = get_device_icon_index (percentage); g_ptr_array_add (names, g_strdup_printf ("%s-%s", kind_str, index_str)); g_ptr_array_add (names, g_strdup_printf ("gpm-%s-%s", kind_str, index_str)); - g_ptr_array_add (names, g_strdup_printf ("battery-%s-symbolic", suffix_str)); - g_ptr_array_add (names, g_strdup_printf ("battery-%s", suffix_str)); + g_ptr_array_add (names, g_strdup_printf ("%s-%s-symbolic", kind_str, suffix_str)); + g_ptr_array_add (names, g_strdup_printf ("%s-%s", kind_str, suffix_str)); break; default: - g_ptr_array_add (names, g_strdup("battery-missing-symbolic")); - g_ptr_array_add (names, g_strdup("gpm-battery-missing")); - g_ptr_array_add (names, g_strdup("battery-missing")); + g_ptr_array_add (names, g_strdup_printf("%s-missing-symbolic", kind_str)); + g_ptr_array_add (names, g_strdup_printf("gpm-%s-missing", kind_str)); + g_ptr_array_add (names, g_strdup_printf("%s-missing", kind_str)); } g_ptr_array_add (names, NULL); /* terminates the strv */ diff --git a/tests/test-device.cc b/tests/test-device.cc index eb087dc..4c6a6f2 100644 --- a/tests/test-device.cc +++ b/tests/test-device.cc @@ -239,154 +239,205 @@ TEST_F(DeviceTest, IconNames) check_icon_names (device, "gpm-monitor-symbolic;" "gpm-monitor"); - // empty battery - g_object_set (o, INDICATOR_POWER_DEVICE_KIND, UP_DEVICE_KIND_BATTERY, - INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_EMPTY, - NULL); - check_icon_names (device, "battery-empty-symbolic;" - "gpm-battery-empty;" - "gpm-battery-000;" - "battery-empty"); - - // charged battery - g_object_set (o, INDICATOR_POWER_DEVICE_KIND, UP_DEVICE_KIND_BATTERY, - INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_FULLY_CHARGED, - NULL); - check_icon_names (device, "battery-full-charged-symbolic;" - "battery-full-charging-symbolic;" - "gpm-battery-full;" - "gpm-battery-100;" - "battery-full-charged;" - "battery-full-charging"); - - // charging battery, 95% - g_object_set (o, INDICATOR_POWER_DEVICE_KIND, UP_DEVICE_KIND_BATTERY, - INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING, - INDICATOR_POWER_DEVICE_PERCENTAGE, 95.0, - NULL); - check_icon_names (device, "battery-caution-charging-symbolic;" - "gpm-battery-000-charging;" - "battery-caution-charging"); - - // charging battery, 85% - g_object_set (o, INDICATOR_POWER_DEVICE_KIND, UP_DEVICE_KIND_BATTERY, - INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING, - INDICATOR_POWER_DEVICE_PERCENTAGE, 85.0, - NULL); - check_icon_names (device, "battery-caution-charging-symbolic;" - "gpm-battery-000-charging;" - "battery-caution-charging"); - - // charging battery, 50% - g_object_set (o, INDICATOR_POWER_DEVICE_KIND, UP_DEVICE_KIND_BATTERY, - INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING, - INDICATOR_POWER_DEVICE_PERCENTAGE, 50.0, - NULL); - check_icon_names (device, "battery-caution-charging-symbolic;" - "gpm-battery-000-charging;" - "battery-caution-charging"); - - // charging battery, 25% - g_object_set (o, INDICATOR_POWER_DEVICE_KIND, UP_DEVICE_KIND_BATTERY, - INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING, - INDICATOR_POWER_DEVICE_PERCENTAGE, 25.0, - NULL); - check_icon_names (device, "battery-caution-charging-symbolic;" - "gpm-battery-000-charging;" - "battery-caution-charging"); - - // charging battery, 5% - g_object_set (o, INDICATOR_POWER_DEVICE_KIND, UP_DEVICE_KIND_BATTERY, - INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING, - INDICATOR_POWER_DEVICE_PERCENTAGE, 5.0, - NULL); - check_icon_names (device, "battery-caution-charging-symbolic;" - "gpm-battery-000-charging;" - "battery-caution-charging"); - - - // discharging battery, 95% - g_object_set (o, INDICATOR_POWER_DEVICE_KIND, UP_DEVICE_KIND_BATTERY, - INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_DISCHARGING, - INDICATOR_POWER_DEVICE_PERCENTAGE, 95.0, - NULL); - check_icon_names (device, "battery-100;" - "gpm-battery-100;" - "battery-full-symbolic;" - "battery-full"); - - // discharging battery, 85% - g_object_set (o, INDICATOR_POWER_DEVICE_KIND, UP_DEVICE_KIND_BATTERY, - INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_DISCHARGING, - INDICATOR_POWER_DEVICE_PERCENTAGE, 85.0, - NULL); - check_icon_names (device, "battery-080;" - "gpm-battery-080;" - "battery-full-symbolic;" - "battery-full"); - - // discharging battery, 50% -- 1 hour left - g_object_set (o, INDICATOR_POWER_DEVICE_KIND, UP_DEVICE_KIND_BATTERY, - INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_DISCHARGING, - INDICATOR_POWER_DEVICE_PERCENTAGE, 50.0, - INDICATOR_POWER_DEVICE_TIME, (guint64)(60*60), - NULL); - check_icon_names (device, "battery-060;" - "gpm-battery-060;" - "battery-good-symbolic;" - "battery-good"); - - // discharging battery, 25% -- 1 hour left - g_object_set (o, INDICATOR_POWER_DEVICE_KIND, UP_DEVICE_KIND_BATTERY, - INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_DISCHARGING, - INDICATOR_POWER_DEVICE_PERCENTAGE, 25.0, - INDICATOR_POWER_DEVICE_TIME, (guint64)(60*60), - NULL); - check_icon_names (device, "battery-040;" - "gpm-battery-040;" - "battery-good-symbolic;" - "battery-good"); - - // discharging battery, 25% -- 15 minutes left - g_object_set (o, INDICATOR_POWER_DEVICE_KIND, UP_DEVICE_KIND_BATTERY, - INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_DISCHARGING, - INDICATOR_POWER_DEVICE_PERCENTAGE, 25.0, - INDICATOR_POWER_DEVICE_TIME, (guint64)(60*15), - NULL); - check_icon_names (device, "battery-020;" - "gpm-battery-020;" - "battery-low-symbolic;" - "battery-low"); - - // discharging battery, 5% -- 1 hour left - g_object_set (o, INDICATOR_POWER_DEVICE_KIND, UP_DEVICE_KIND_BATTERY, - INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_DISCHARGING, - INDICATOR_POWER_DEVICE_PERCENTAGE, 5.0, - INDICATOR_POWER_DEVICE_TIME, (guint64)(60*60), - NULL); - check_icon_names (device, "battery-040;" - "gpm-battery-040;" - "battery-good-symbolic;" - "battery-good"); + // devices that hold a charge + struct { + int kind; + const gchar * kind_str; + } devices[] = { + { UP_DEVICE_KIND_BATTERY, "battery" }, + { UP_DEVICE_KIND_UPS, "ups" }, + { UP_DEVICE_KIND_MOUSE, "mouse" }, + { UP_DEVICE_KIND_KEYBOARD, "keyboard" }, + { UP_DEVICE_KIND_PHONE, "phone" } + }; + + GString * expected = g_string_new (NULL); + for (int i=0, n=G_N_ELEMENTS(devices); istr); + g_string_truncate (expected, 0); + + // charged + g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_FULLY_CHARGED, + NULL); + g_string_append_printf (expected, "%s-full-charged-symbolic;", kind_str); + g_string_append_printf (expected, "%s-full-charging-symbolic;", kind_str); + g_string_append_printf (expected, "gpm-%s-full;", kind_str); + g_string_append_printf (expected, "gpm-%s-100;", kind_str); + g_string_append_printf (expected, "%s-full-charged;", kind_str); + g_string_append_printf (expected, "%s-full-charging", kind_str); + check_icon_names (device, expected->str); + g_string_truncate (expected, 0); + + // charging, 95% + g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING, + INDICATOR_POWER_DEVICE_PERCENTAGE, 95.0, + NULL); + + g_string_append_printf (expected, "%s-caution-charging-symbolic;", kind_str); + g_string_append_printf (expected, "gpm-%s-000-charging;", kind_str); + g_string_append_printf (expected, "%s-caution-charging", kind_str); + check_icon_names (device, expected->str); + g_string_truncate (expected, 0); + + // charging, 85% + g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING, + INDICATOR_POWER_DEVICE_PERCENTAGE, 85.0, + NULL); + g_string_append_printf (expected, "%s-caution-charging-symbolic;", kind_str); + g_string_append_printf (expected, "gpm-%s-000-charging;", kind_str); + g_string_append_printf (expected, "%s-caution-charging", kind_str); + check_icon_names (device, expected->str); + g_string_truncate (expected, 0); + + // charging, 50% + g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING, + INDICATOR_POWER_DEVICE_PERCENTAGE, 50.0, + NULL); + g_string_append_printf (expected, "%s-caution-charging-symbolic;", kind_str); + g_string_append_printf (expected, "gpm-%s-000-charging;", kind_str); + g_string_append_printf (expected, "%s-caution-charging", kind_str); + check_icon_names (device, expected->str); + g_string_truncate (expected, 0); + + // charging, 25% + g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING, + INDICATOR_POWER_DEVICE_PERCENTAGE, 25.0, + NULL); + g_string_append_printf (expected, "%s-caution-charging-symbolic;", kind_str); + g_string_append_printf (expected, "gpm-%s-000-charging;", kind_str); + g_string_append_printf (expected, "%s-caution-charging", kind_str); + check_icon_names (device, expected->str); + g_string_truncate (expected, 0); + + // charging, 5% + g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_CHARGING, + INDICATOR_POWER_DEVICE_PERCENTAGE, 5.0, + NULL); + g_string_append_printf (expected, "%s-caution-charging-symbolic;", kind_str); + g_string_append_printf (expected, "gpm-%s-000-charging;", kind_str); + g_string_append_printf (expected, "%s-caution-charging", kind_str); + check_icon_names (device, expected->str); + g_string_truncate (expected, 0); + + // discharging, 95% + g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_DISCHARGING, + INDICATOR_POWER_DEVICE_PERCENTAGE, 95.0, NULL); - check_icon_names (device, "battery-000;" - "gpm-battery-000;" - "battery-caution-symbolic;" - "battery-caution"); - - // state unknown - g_object_set (o, INDICATOR_POWER_DEVICE_KIND, UP_DEVICE_KIND_BATTERY, - INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_UNKNOWN, + g_string_append_printf (expected, "%s-100;", kind_str); + g_string_append_printf (expected, "gpm-%s-100;", kind_str); + g_string_append_printf (expected, "%s-full-symbolic;", kind_str); + g_string_append_printf (expected, "%s-full", kind_str); + check_icon_names (device, expected->str); + g_string_truncate (expected, 0); + + // discharging, 85% + g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_DISCHARGING, + INDICATOR_POWER_DEVICE_PERCENTAGE, 85.0, + NULL); + g_string_append_printf (expected, "%s-080;", kind_str); + g_string_append_printf (expected, "gpm-%s-080;", kind_str); + g_string_append_printf (expected, "%s-full-symbolic;", kind_str); + g_string_append_printf (expected, "%s-full", kind_str); + check_icon_names (device, expected->str); + g_string_truncate (expected, 0); + + // discharging, 50% -- 1 hour left + g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_DISCHARGING, + INDICATOR_POWER_DEVICE_PERCENTAGE, 50.0, + INDICATOR_POWER_DEVICE_TIME, (guint64)(60*60), + NULL); + g_string_append_printf (expected, "%s-060;", kind_str); + g_string_append_printf (expected, "gpm-%s-060;", kind_str); + g_string_append_printf (expected, "%s-good-symbolic;", kind_str); + g_string_append_printf (expected, "%s-good", kind_str); + check_icon_names (device, expected->str); + g_string_truncate (expected, 0); + + // discharging, 25% -- 1 hour left + g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_DISCHARGING, + INDICATOR_POWER_DEVICE_PERCENTAGE, 25.0, + INDICATOR_POWER_DEVICE_TIME, (guint64)(60*60), + NULL); + g_string_append_printf (expected, "%s-040;", kind_str); + g_string_append_printf (expected, "gpm-%s-040;", kind_str); + g_string_append_printf (expected, "%s-good-symbolic;", kind_str); + g_string_append_printf (expected, "%s-good", kind_str); + check_icon_names (device, expected->str); + g_string_truncate (expected, 0); + + // discharging, 25% -- 15 minutes left + g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_DISCHARGING, + INDICATOR_POWER_DEVICE_PERCENTAGE, 25.0, + INDICATOR_POWER_DEVICE_TIME, (guint64)(60*15), + NULL); + g_string_append_printf (expected, "%s-020;", kind_str); + g_string_append_printf (expected, "gpm-%s-020;", kind_str); + g_string_append_printf (expected, "%s-low-symbolic;", kind_str); + g_string_append_printf (expected, "%s-low", kind_str); + check_icon_names (device, expected->str); + g_string_truncate (expected, 0); + + // discharging, 5% -- 1 hour left + g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_DISCHARGING, + INDICATOR_POWER_DEVICE_PERCENTAGE, 5.0, + INDICATOR_POWER_DEVICE_TIME, (guint64)(60*60), NULL); - check_icon_names (device, "battery-missing-symbolic;" - "gpm-battery-missing;" - "battery-missing"); + g_string_append_printf (expected, "%s-040;", kind_str); + g_string_append_printf (expected, "gpm-%s-040;", kind_str); + g_string_append_printf (expected, "%s-good-symbolic;", kind_str); + g_string_append_printf (expected, "%s-good", kind_str); + check_icon_names (device, expected->str); + g_string_truncate (expected, 0); + + // discharging, 5% -- 15 minutes left + g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_DISCHARGING, + INDICATOR_POWER_DEVICE_PERCENTAGE, 5.0, + INDICATOR_POWER_DEVICE_TIME, (guint64)(60*15), + NULL); + g_string_append_printf (expected, "%s-000;", kind_str); + g_string_append_printf (expected, "gpm-%s-000;", kind_str); + g_string_append_printf (expected, "%s-caution-symbolic;", kind_str); + g_string_append_printf (expected, "%s-caution", kind_str); + check_icon_names (device, expected->str); + g_string_truncate (expected, 0); + + // state unknown + g_object_set (o, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_STATE, UP_DEVICE_STATE_UNKNOWN, + NULL); + g_string_append_printf (expected, "%s-missing-symbolic;", kind_str); + g_string_append_printf (expected, "gpm-%s-missing;", kind_str); + g_string_append_printf (expected, "%s-missing", kind_str); + check_icon_names (device, expected->str); + g_string_truncate (expected, 0); + } + g_string_free (expected, TRUE); // cleanup g_object_unref(o); -- cgit v1.2.3 From 90af0bf84104879548df739a20958d04e832c50a Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 26 Oct 2012 09:00:50 +0200 Subject: Fix unhandled enum 'unknown device' that was smoked out by the unit tests. --- src/device.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/device.c b/src/device.c index c19b9fa..b15651c 100644 --- a/src/device.c +++ b/src/device.c @@ -528,6 +528,10 @@ device_kind_to_localised_string (UpDeviceKind kind) /* TRANSLATORS: tablet device */ text = _("Computer"); break; + case UP_DEVICE_KIND_UNKNOWN: + /* TRANSLATORS: tablet device */ + text = _("Unknown"); + break; default: g_warning ("enum unrecognised: %i", kind); text = up_device_kind_to_string (kind); -- cgit v1.2.3 From 8659889054f49ff674562c0f7c8ae7929e837d67 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 26 Oct 2012 09:05:25 +0200 Subject: fix leaked icon and label; found by running valgrind on tests/test-indicator --- src/indicator-power.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/indicator-power.c b/src/indicator-power.c index 9829839..ebfc2c1 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -150,6 +150,8 @@ indicator_power_dispose (GObject *object) dispose_devices (self); + g_clear_object (&priv->label); + g_clear_object (&priv->status_image); g_clear_object (&priv->dbus_listener); g_clear_object (&priv->settings); @@ -489,6 +491,7 @@ get_label (IndicatorObject *io) { /* Create the label if it doesn't exist already */ priv->label = GTK_LABEL (gtk_label_new ("")); + g_object_ref_sink (priv->label); gtk_widget_set_visible (GTK_WIDGET (priv->label), FALSE); } @@ -508,6 +511,7 @@ get_image (IndicatorObject *io) gicon = g_themed_icon_new (DEFAULT_ICON); priv->status_image = GTK_IMAGE (gtk_image_new_from_gicon (gicon, GTK_ICON_SIZE_LARGE_TOOLBAR)); + g_object_ref_sink (priv->status_image); g_object_unref (gicon); } -- cgit v1.2.3 From 92b48e8afa58cab0612fdc49546ea66666e73ab5 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 26 Oct 2012 09:08:59 +0200 Subject: add unit tests to confirm the device refcounts are correct s.t. IndicatorPower isn't leaking devices --- tests/test-indicator.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test-indicator.cc b/tests/test-indicator.cc index b9f7321..5480774 100644 --- a/tests/test-indicator.cc +++ b/tests/test-indicator.cc @@ -71,6 +71,8 @@ class IndicatorTest : public ::testing::Test virtual void TearDown() { + ASSERT_EQ (1, G_OBJECT(battery_device)->ref_count); + ASSERT_EQ (1, G_OBJECT(ac_device)->ref_count); g_object_unref (battery_device); g_object_unref (ac_device); } -- cgit v1.2.3 From a8d3382188e2fad083a287c9656052273f91e845 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 26 Oct 2012 09:14:11 +0200 Subject: silence the known/nonbug gtk and glib warnings --- tests/test-indicator.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/test-indicator.cc b/tests/test-indicator.cc index 5480774..824a5ac 100644 --- a/tests/test-indicator.cc +++ b/tests/test-indicator.cc @@ -29,6 +29,16 @@ with this program. If not, see . namespace { + void quiet_log_func (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *message, + gpointer user_data) + { + // instantiating an indicator w/o a window causes lots + // of glib/gtk warnings... silence them so that they don't + // obscure any other warnings generated by the tests. + } + void ensure_glib_initialized () { static bool initialized = false; @@ -37,6 +47,8 @@ namespace { initialized = true; g_type_init(); + g_log_set_handler ("Gtk", (GLogLevelFlags)(G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING), quiet_log_func, NULL); + g_log_set_handler ("GLib-GObject", (GLogLevelFlags)(G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING), quiet_log_func, NULL); } } } -- cgit v1.2.3 From b7b7ffd56c91ae9622ffebfec4ea4400c96d2fce Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 26 Oct 2012 10:02:14 +0200 Subject: Select the primary device based on the spec's criteria. Add tests to confirm. --- src/indicator-power.c | 131 +++++++++++++++++++++++++++++--------------------- src/indicator-power.h | 2 + tests/test-device.cc | 75 +++++++++++++++++++++++++++++ 3 files changed, 152 insertions(+), 56 deletions(-) diff --git a/src/indicator-power.c b/src/indicator-power.c index ebfc2c1..852ccd5 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -352,76 +352,95 @@ build_menu (IndicatorPower *self) gtk_widget_show_all (GTK_WIDGET (priv->menu)); } -static IndicatorPowerDevice* -get_primary_device (GSList * devices) +/* sort devices from most interesting to least interesting on this criteria: + 1. discharging items from least time remaining until most time remaining + 2. discharging items with an unknown time remaining + 3. charging items from most time left to charge to least time left to charge + 4. charging items with an unknown time remaining + 5. everything else */ +static gint +device_compare_func (gconstpointer ga, gconstpointer gb) { - IndicatorPowerDevice * primary_device = NULL; - IndicatorPowerDevice * primary_device_charging = NULL; - IndicatorPowerDevice * primary_device_discharging = NULL; - gboolean charging = FALSE; - gboolean discharging = FALSE; - guint64 min_discharging_time = G_MAXUINT64; - guint64 max_charging_time = 0; - GSList * l; - - for (l=devices; l!=NULL; l=l->next) + int ret; + int state; + const IndicatorPowerDevice * a = INDICATOR_POWER_DEVICE(ga); + const IndicatorPowerDevice * b = INDICATOR_POWER_DEVICE(gb); + const int a_state = indicator_power_device_get_state (a); + const int b_state = indicator_power_device_get_state (b); + const gdouble a_percentage = indicator_power_device_get_percentage (a); + const gdouble b_percentage = indicator_power_device_get_percentage (b); + const time_t a_time = indicator_power_device_get_time (a); + const time_t b_time = indicator_power_device_get_time (b); + + ret = 0; + + state = UP_DEVICE_STATE_DISCHARGING; + if (!ret && ((a_state == state) || (b_state == state))) { - IndicatorPowerDevice * device = INDICATOR_POWER_DEVICE(l->data); - const UpDeviceKind kind = indicator_power_device_get_kind (device); - const UpDeviceState state = indicator_power_device_get_state (device); - const gdouble percentage = indicator_power_device_get_percentage (device); - const time_t time = indicator_power_device_get_time (device); - - /* Try to fix the case when we get a empty battery bay as a real battery */ - if (state == UP_DEVICE_STATE_UNKNOWN && - percentage == 0) - continue; - - /* not battery */ - if (kind != UP_DEVICE_KIND_BATTERY) - continue; - - if (state == UP_DEVICE_STATE_DISCHARGING) + if (a_state != state) /* b is discharging */ { - discharging = TRUE; - if (time < min_discharging_time) - { - min_discharging_time = time; - primary_device_discharging = device; - } + ret = 1; } - else if (state == UP_DEVICE_STATE_CHARGING) + else if (b_state != state) /* a is discharging */ { - charging = TRUE; - if (time == 0) /* Battery broken */ - { - primary_device_charging = device; - } - if (time > max_charging_time) - { - max_charging_time = time; - primary_device_charging = device; - } + ret = -1; } - else + else /* both are discharging; least-time-left goes first */ { - primary_device = device; + if (!a_time || !b_time) /* known time always trumps unknown time */ + ret = a_time ? -1 : 1; + else if (a_time != b_time) + ret = a_time < b_time ? -1 : 1; + else + ret = a_percentage < b_percentage ? -1 : 1; } } - if (discharging) + state = UP_DEVICE_STATE_CHARGING; + if (!ret && (((a_state == state) && a_time) || ((b_state == state) && b_time))) { - primary_device = primary_device_discharging; + if (b_state != state) /* a is charging */ + { + ret = 1; + } + if (a_state != state) /* b is charging */ + { + ret = -1; + } + else /* both are discharging; most-time-to-charge goes first */ + { + if (!a_time || !b_time) /* known time always trumps unknown time */ + ret = a_time ? -1 : 1; + else if (a_time != b_time) + ret = a_time > b_time ? -1 : 1; + else + ret = a_percentage < b_percentage ? -1 : 1; + } } - else if (charging) + + if (!ret) + ret = a_state - b_state; + + return ret; +} + +IndicatorPowerDevice * +indicator_power_choose_primary_device (GSList * devices) +{ + IndicatorPowerDevice * primary = NULL; + + if (devices != NULL) { - primary_device = primary_device_charging; - } + GSList * tmp; - if (primary_device != NULL) - g_object_ref (primary_device); + tmp = g_slist_copy (devices); + tmp = g_slist_sort (tmp, device_compare_func); + primary = g_object_ref (tmp->data); + + g_slist_free (tmp); + } - return primary_device; + return primary; } static void @@ -460,7 +479,7 @@ indicator_power_set_devices (IndicatorPower * self, GSList * devices) g_slist_foreach (devices, (GFunc)g_object_ref, NULL); dispose_devices (self); priv->devices = g_slist_copy (devices); - priv->device = get_primary_device (priv->devices); + priv->device = indicator_power_choose_primary_device (devices); /* and our menus/visibility from the new device list */ if (priv->device != NULL) diff --git a/src/indicator-power.h b/src/indicator-power.h index a696b40..34d0d0e 100644 --- a/src/indicator-power.h +++ b/src/indicator-power.h @@ -55,4 +55,6 @@ GType indicator_power_get_type (void) G_GNUC_CONST; void indicator_power_set_devices (IndicatorPower * power, GSList * devices); +IndicatorPowerDevice* indicator_power_choose_primary_device (GSList * devices); + G_END_DECLS diff --git a/tests/test-device.cc b/tests/test-device.cc index 4c6a6f2..c310a58 100644 --- a/tests/test-device.cc +++ b/tests/test-device.cc @@ -19,6 +19,7 @@ with this program. If not, see . #include #include "device.h" +#include "indicator-power.h" namespace { @@ -530,3 +531,77 @@ TEST_F(DeviceTest, Labels) g_setenv ("LANG", real_lang, TRUE); g_free (real_lang); } + +static void +set_device_charge_state (IndicatorPowerDevice * device, int state, int time, double pct) +{ + g_object_set (device, INDICATOR_POWER_DEVICE_STATE, state, + INDICATOR_POWER_DEVICE_PERCENTAGE, pct, + INDICATOR_POWER_DEVICE_TIME, guint64(time), + NULL); +} + + +/* The menu title should tell you at a glance what you need to know most: what + device will lose power soonest (and optionally when), or otherwise which + device will take longest to charge (and optionally how long it will take). */ +TEST_F(DeviceTest, ChoosePrimary) +{ + GSList * devices; + IndicatorPowerDevice * a; + IndicatorPowerDevice * b; + + a = indicator_power_device_new ("/org/freedesktop/UPower/devices/mouse", + UP_DEVICE_KIND_MOUSE, + 0.0, + UP_DEVICE_STATE_DISCHARGING, + 0); + b = indicator_power_device_new ("/org/freedesktop/UPower/devices/battery", + UP_DEVICE_KIND_BATTERY, + 0.0, + UP_DEVICE_STATE_DISCHARGING, + 0); + + devices = NULL; + devices = g_slist_append (devices, a); + devices = g_slist_append (devices, b); + + /* Both discharging, same charge %, different times left before empty. + Confirm that the one with less time is chosen. */ + set_device_charge_state (a, UP_DEVICE_STATE_DISCHARGING, 99, 50.0); + set_device_charge_state (b, UP_DEVICE_STATE_DISCHARGING, 100, 50.0); + ASSERT_EQ (a, indicator_power_choose_primary_device(devices)); + + /* Both discharging, different charge % and times left. + Confirm that the one with less time is chosen. */ + set_device_charge_state (a, UP_DEVICE_STATE_DISCHARGING, 99, 50.0); + set_device_charge_state (b, UP_DEVICE_STATE_DISCHARGING, 100, 49.0); + ASSERT_EQ (a, indicator_power_choose_primary_device(devices)); + + /* Both discharging, different charge %, same times left. + Confirm that the one with less charge is chosen. */ + set_device_charge_state (a, UP_DEVICE_STATE_DISCHARGING, 100, 49.0); + set_device_charge_state (b, UP_DEVICE_STATE_DISCHARGING, 100, 50.0); + ASSERT_EQ (a, indicator_power_choose_primary_device(devices)); + + /* Both are charging, have the same charge percentage, and differnt times left (to charge). + * Confirm that the one with the most time left is chosen. */ + set_device_charge_state (a, UP_DEVICE_STATE_CHARGING, 49, 50.0); + set_device_charge_state (b, UP_DEVICE_STATE_CHARGING, 50, 50.0); + ASSERT_EQ (b, indicator_power_choose_primary_device(devices)); + + /* Both are charging, with different charges and time left. + Confirm that the one with the most time left is chosen. */ + set_device_charge_state (a, UP_DEVICE_STATE_CHARGING, 49, 50.0); + set_device_charge_state (b, UP_DEVICE_STATE_CHARGING, 50, 49.0); + ASSERT_EQ (b, indicator_power_choose_primary_device(devices)); + + /* Both are charging, have the same time left, and different charges. + * Confirm that the one with less charge is chosen. */ + set_device_charge_state (a, UP_DEVICE_STATE_CHARGING, 50, 50.0); + set_device_charge_state (b, UP_DEVICE_STATE_CHARGING, 50, 49.0); + ASSERT_EQ (b, indicator_power_choose_primary_device(devices)); + + // cleanup + g_slist_free_full (devices, g_object_unref); +} -- cgit v1.2.3 From a842e7b5cc66311c6cff51f3e07d1c7930b8153a Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 26 Oct 2012 10:53:32 +0200 Subject: fix comment typo --- tests/test-device.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test-device.cc b/tests/test-device.cc index c310a58..88c43fc 100644 --- a/tests/test-device.cc +++ b/tests/test-device.cc @@ -584,7 +584,7 @@ TEST_F(DeviceTest, ChoosePrimary) set_device_charge_state (b, UP_DEVICE_STATE_DISCHARGING, 100, 50.0); ASSERT_EQ (a, indicator_power_choose_primary_device(devices)); - /* Both are charging, have the same charge percentage, and differnt times left (to charge). + /* Both are charging, have the same charge percentage, and different times left (to charge). * Confirm that the one with the most time left is chosen. */ set_device_charge_state (a, UP_DEVICE_STATE_CHARGING, 49, 50.0); set_device_charge_state (b, UP_DEVICE_STATE_CHARGING, 50, 50.0); -- cgit v1.2.3 From e246512c0c503b9a80051ae96a9f48d5b7ddb733 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 26 Oct 2012 10:53:51 +0200 Subject: fix copy-paste comment error --- src/device.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/device.c b/src/device.c index b15651c..490ff1a 100644 --- a/src/device.c +++ b/src/device.c @@ -529,7 +529,7 @@ device_kind_to_localised_string (UpDeviceKind kind) text = _("Computer"); break; case UP_DEVICE_KIND_UNKNOWN: - /* TRANSLATORS: tablet device */ + /* TRANSLATORS: unknown device */ text = _("Unknown"); break; default: -- cgit v1.2.3 From cd8e633cc850d0c9f1bc16533d5962cdfda16856 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 26 Oct 2012 18:03:46 +0200 Subject: add test (currently failing) to detect the logic error reported in bug #1071757 --- tests/test-device.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/test-device.cc b/tests/test-device.cc index 88c43fc..b5fa466 100644 --- a/tests/test-device.cc +++ b/tests/test-device.cc @@ -602,6 +602,22 @@ TEST_F(DeviceTest, ChoosePrimary) set_device_charge_state (b, UP_DEVICE_STATE_CHARGING, 50, 49.0); ASSERT_EQ (b, indicator_power_choose_primary_device(devices)); + /* discharging always comes before charging */ + set_device_charge_state (a, UP_DEVICE_STATE_DISCHARGING, 50, 50.0); + set_device_charge_state (b, UP_DEVICE_STATE_CHARGING, 50, 50.0); + ASSERT_EQ (a, indicator_power_choose_primary_device(devices)); + set_device_charge_state (a, UP_DEVICE_STATE_CHARGING, 50, 50.0); + set_device_charge_state (b, UP_DEVICE_STATE_DISCHARGING, 50, 50.0); + ASSERT_EQ (b, indicator_power_choose_primary_device(devices)); + + /* charging always comes before charged */ + set_device_charge_state (a, UP_DEVICE_STATE_CHARGING, 50, 50.0); + set_device_charge_state (b, UP_DEVICE_STATE_FULLY_CHARGED, 50, 50.0); + ASSERT_EQ (a, indicator_power_choose_primary_device(devices)); + set_device_charge_state (a, UP_DEVICE_STATE_FULLY_CHARGED, 50, 50.0); + set_device_charge_state (b, UP_DEVICE_STATE_CHARGING, 50, 50.0); + ASSERT_EQ (b, indicator_power_choose_primary_device(devices)); + // cleanup g_slist_free_full (devices, g_object_unref); } -- cgit v1.2.3 From 0189c72f5650e4d3ff605bd359e99b2ad1d06a3f Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 26 Oct 2012 18:04:43 +0200 Subject: fix logic error when deciding which primary device to select. --- src/indicator-power.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/indicator-power.c b/src/indicator-power.c index 852ccd5..8da9734 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -399,11 +399,11 @@ device_compare_func (gconstpointer ga, gconstpointer gb) state = UP_DEVICE_STATE_CHARGING; if (!ret && (((a_state == state) && a_time) || ((b_state == state) && b_time))) { - if (b_state != state) /* a is charging */ + if (a_state != state) /* b is charging */ { ret = 1; } - if (a_state != state) /* b is charging */ + else if (b_state != state) /* b is charging */ { ret = -1; } -- cgit v1.2.3 From 7c0d274cb162da46198c63f288b67b1a54e70238 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Sun, 28 Oct 2012 01:48:30 +0200 Subject: expand DeviceTest.ChoosePrimary to test choosing from a wider variety of device states. --- tests/test-device.cc | 111 ++++++++++++++++++++------------------------------- 1 file changed, 44 insertions(+), 67 deletions(-) diff --git a/tests/test-device.cc b/tests/test-device.cc index b5fa466..a32e0e5 100644 --- a/tests/test-device.cc +++ b/tests/test-device.cc @@ -532,22 +532,12 @@ TEST_F(DeviceTest, Labels) g_free (real_lang); } -static void -set_device_charge_state (IndicatorPowerDevice * device, int state, int time, double pct) -{ - g_object_set (device, INDICATOR_POWER_DEVICE_STATE, state, - INDICATOR_POWER_DEVICE_PERCENTAGE, pct, - INDICATOR_POWER_DEVICE_TIME, guint64(time), - NULL); -} - - /* The menu title should tell you at a glance what you need to know most: what device will lose power soonest (and optionally when), or otherwise which device will take longest to charge (and optionally how long it will take). */ TEST_F(DeviceTest, ChoosePrimary) { - GSList * devices; + GSList * device_list; IndicatorPowerDevice * a; IndicatorPowerDevice * b; @@ -562,62 +552,49 @@ TEST_F(DeviceTest, ChoosePrimary) UP_DEVICE_STATE_DISCHARGING, 0); - devices = NULL; - devices = g_slist_append (devices, a); - devices = g_slist_append (devices, b); - - /* Both discharging, same charge %, different times left before empty. - Confirm that the one with less time is chosen. */ - set_device_charge_state (a, UP_DEVICE_STATE_DISCHARGING, 99, 50.0); - set_device_charge_state (b, UP_DEVICE_STATE_DISCHARGING, 100, 50.0); - ASSERT_EQ (a, indicator_power_choose_primary_device(devices)); - - /* Both discharging, different charge % and times left. - Confirm that the one with less time is chosen. */ - set_device_charge_state (a, UP_DEVICE_STATE_DISCHARGING, 99, 50.0); - set_device_charge_state (b, UP_DEVICE_STATE_DISCHARGING, 100, 49.0); - ASSERT_EQ (a, indicator_power_choose_primary_device(devices)); - - /* Both discharging, different charge %, same times left. - Confirm that the one with less charge is chosen. */ - set_device_charge_state (a, UP_DEVICE_STATE_DISCHARGING, 100, 49.0); - set_device_charge_state (b, UP_DEVICE_STATE_DISCHARGING, 100, 50.0); - ASSERT_EQ (a, indicator_power_choose_primary_device(devices)); - - /* Both are charging, have the same charge percentage, and different times left (to charge). - * Confirm that the one with the most time left is chosen. */ - set_device_charge_state (a, UP_DEVICE_STATE_CHARGING, 49, 50.0); - set_device_charge_state (b, UP_DEVICE_STATE_CHARGING, 50, 50.0); - ASSERT_EQ (b, indicator_power_choose_primary_device(devices)); - - /* Both are charging, with different charges and time left. - Confirm that the one with the most time left is chosen. */ - set_device_charge_state (a, UP_DEVICE_STATE_CHARGING, 49, 50.0); - set_device_charge_state (b, UP_DEVICE_STATE_CHARGING, 50, 49.0); - ASSERT_EQ (b, indicator_power_choose_primary_device(devices)); - - /* Both are charging, have the same time left, and different charges. - * Confirm that the one with less charge is chosen. */ - set_device_charge_state (a, UP_DEVICE_STATE_CHARGING, 50, 50.0); - set_device_charge_state (b, UP_DEVICE_STATE_CHARGING, 50, 49.0); - ASSERT_EQ (b, indicator_power_choose_primary_device(devices)); - - /* discharging always comes before charging */ - set_device_charge_state (a, UP_DEVICE_STATE_DISCHARGING, 50, 50.0); - set_device_charge_state (b, UP_DEVICE_STATE_CHARGING, 50, 50.0); - ASSERT_EQ (a, indicator_power_choose_primary_device(devices)); - set_device_charge_state (a, UP_DEVICE_STATE_CHARGING, 50, 50.0); - set_device_charge_state (b, UP_DEVICE_STATE_DISCHARGING, 50, 50.0); - ASSERT_EQ (b, indicator_power_choose_primary_device(devices)); - - /* charging always comes before charged */ - set_device_charge_state (a, UP_DEVICE_STATE_CHARGING, 50, 50.0); - set_device_charge_state (b, UP_DEVICE_STATE_FULLY_CHARGED, 50, 50.0); - ASSERT_EQ (a, indicator_power_choose_primary_device(devices)); - set_device_charge_state (a, UP_DEVICE_STATE_FULLY_CHARGED, 50, 50.0); - set_device_charge_state (b, UP_DEVICE_STATE_CHARGING, 50, 50.0); - ASSERT_EQ (b, indicator_power_choose_primary_device(devices)); + /* device states + time left to {discharge,charge} + % of charge left, + sorted in order of preference wrt the spec's criteria. + So tests[i] should be picked over any test with an index greater than i */ + struct { + int state; + guint64 time; + double percentage; + } tests[] = { + { UP_DEVICE_STATE_DISCHARGING, 49, 50.0 }, + { UP_DEVICE_STATE_DISCHARGING, 50, 50.0 }, + { UP_DEVICE_STATE_DISCHARGING, 50, 100.0 }, + { UP_DEVICE_STATE_DISCHARGING, 51, 50.0 }, + { UP_DEVICE_STATE_CHARGING, 50, 50.0 }, + { UP_DEVICE_STATE_CHARGING, 49, 50.0 }, + { UP_DEVICE_STATE_CHARGING, 49, 100.0 }, + { UP_DEVICE_STATE_CHARGING, 48, 50.0 }, + { UP_DEVICE_STATE_FULLY_CHARGED, 0, 50.0 } + }; + + device_list = NULL; + device_list = g_slist_append (device_list, a); + device_list = g_slist_append (device_list, b); + for (int i=0, n=G_N_ELEMENTS(tests); i Date: Sun, 28 Oct 2012 01:54:45 +0200 Subject: set DeviceTest's gwarning/gcritical log func to one that prints no messages but accumulates the log count. This way we can both (a) silence in-console warnings that look like bugs in the test but are actually desirable warnings generated by fuzz testing, and (b) assert that we get exactly as many warnings/criticals as we expect to get. --- tests/test-device.cc | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests/test-device.cc b/tests/test-device.cc index a32e0e5..02493dc 100644 --- a/tests/test-device.cc +++ b/tests/test-device.cc @@ -37,15 +37,40 @@ namespace class DeviceTest : public ::testing::Test { + private: + + guint handler_id; + + int log_count; + + static void log_count_func (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *message, + gpointer user_data) + { + reinterpret_cast(user_data)->log_count++; + } + + protected: + + int expected_ipower_log_messages; + protected: virtual void SetUp() { + const GLogLevelFlags flags = GLogLevelFlags(G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING); + handler_id = g_log_set_handler ("Indicator-Power", flags, log_count_func, this); + expected_ipower_log_messages = 0; + log_count = 0; + ensure_glib_initialized (); } virtual void TearDown() { + ASSERT_EQ (expected_ipower_log_messages, log_count); + g_log_remove_handler ("Indicator-Power", handler_id); } protected: @@ -205,6 +230,7 @@ TEST_F(DeviceTest, BadAccessors) indicator_power_device_get_state (device); indicator_power_device_get_percentage (device); indicator_power_device_get_object_path (device); + expected_ipower_log_messages += 5; // test that these functions can handle being passed non-device GObjects device = reinterpret_cast(g_cancellable_new ()); @@ -213,6 +239,8 @@ TEST_F(DeviceTest, BadAccessors) indicator_power_device_get_state (device); indicator_power_device_get_percentage (device); indicator_power_device_get_object_path (device); + expected_ipower_log_messages += 5; + g_object_unref (device); } @@ -226,6 +254,7 @@ TEST_F(DeviceTest, IconNames) GObject * o = G_OBJECT(device); // bad arguments + expected_ipower_log_messages++; ASSERT_TRUE (indicator_power_device_get_icon_names (NULL) == NULL); // power @@ -452,9 +481,11 @@ TEST_F(DeviceTest, Labels) g_setenv ("LANG", "en_US.UTF-8", TRUE); // bad args: NULL device + expected_ipower_log_messages++; check_strings (NULL, NULL, NULL, NULL); // bad args: a GObject that isn't a device + expected_ipower_log_messages++; GObject * o = G_OBJECT(g_cancellable_new()); check_strings ((IndicatorPowerDevice*)o, NULL, NULL, NULL); g_object_unref (o); -- cgit v1.2.3 From a76e4749d62fb24b89c879d2bdf1164dbdac233f Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Sun, 28 Oct 2012 08:40:44 +0100 Subject: in TestDevice, make the log variable names a little more consistent --- tests/test-device.cc | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/tests/test-device.cc b/tests/test-device.cc index 02493dc..18bdc08 100644 --- a/tests/test-device.cc +++ b/tests/test-device.cc @@ -39,38 +39,38 @@ class DeviceTest : public ::testing::Test { private: - guint handler_id; + guint log_handler_id; - int log_count; + int log_count_ipower_actual; static void log_count_func (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data) { - reinterpret_cast(user_data)->log_count++; + reinterpret_cast(user_data)->log_count_ipower_actual++; } protected: - int expected_ipower_log_messages; + int log_count_ipower_expected; protected: virtual void SetUp() { const GLogLevelFlags flags = GLogLevelFlags(G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING); - handler_id = g_log_set_handler ("Indicator-Power", flags, log_count_func, this); - expected_ipower_log_messages = 0; - log_count = 0; + log_handler_id = g_log_set_handler ("Indicator-Power", flags, log_count_func, this); + log_count_ipower_expected = 0; + log_count_ipower_actual = 0; ensure_glib_initialized (); } virtual void TearDown() { - ASSERT_EQ (expected_ipower_log_messages, log_count); - g_log_remove_handler ("Indicator-Power", handler_id); + ASSERT_EQ (log_count_ipower_expected, log_count_ipower_actual); + g_log_remove_handler ("Indicator-Power", log_handler_id); } protected: @@ -230,7 +230,7 @@ TEST_F(DeviceTest, BadAccessors) indicator_power_device_get_state (device); indicator_power_device_get_percentage (device); indicator_power_device_get_object_path (device); - expected_ipower_log_messages += 5; + log_count_ipower_expected += 5; // test that these functions can handle being passed non-device GObjects device = reinterpret_cast(g_cancellable_new ()); @@ -239,7 +239,7 @@ TEST_F(DeviceTest, BadAccessors) indicator_power_device_get_state (device); indicator_power_device_get_percentage (device); indicator_power_device_get_object_path (device); - expected_ipower_log_messages += 5; + log_count_ipower_expected += 5; g_object_unref (device); } @@ -254,7 +254,7 @@ TEST_F(DeviceTest, IconNames) GObject * o = G_OBJECT(device); // bad arguments - expected_ipower_log_messages++; + log_count_ipower_expected++; ASSERT_TRUE (indicator_power_device_get_icon_names (NULL) == NULL); // power @@ -481,11 +481,11 @@ TEST_F(DeviceTest, Labels) g_setenv ("LANG", "en_US.UTF-8", TRUE); // bad args: NULL device - expected_ipower_log_messages++; + log_count_ipower_expected++; check_strings (NULL, NULL, NULL, NULL); // bad args: a GObject that isn't a device - expected_ipower_log_messages++; + log_count_ipower_expected++; GObject * o = G_OBJECT(g_cancellable_new()); check_strings ((IndicatorPowerDevice*)o, NULL, NULL, NULL); g_object_unref (o); -- cgit v1.2.3 From 7d558ffe8277e88dab2c4367b496fbf98a257cc1 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Mon, 29 Oct 2012 11:59:09 +0100 Subject: copyediting: fix comment text --- src/indicator-power.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/indicator-power.c b/src/indicator-power.c index 8da9734..4118dcc 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -403,7 +403,7 @@ device_compare_func (gconstpointer ga, gconstpointer gb) { ret = 1; } - else if (b_state != state) /* b is charging */ + else if (b_state != state) /* a is charging */ { ret = -1; } -- cgit v1.2.3