From 462293e7feefbee3e186358d8f44659cbffc579e Mon Sep 17 00:00:00 2001 From: Kate Hsuan Date: Tue, 20 Jan 2026 15:34:01 +0800 Subject: [PATCH] linux: integration-test: expose charge_types property The ChargeStrategy should report 128 (Long Life). --- src/linux/integration-test.py | 79 +++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/src/linux/integration-test.py b/src/linux/integration-test.py index cd3cb74..20e8781 100755 --- a/src/linux/integration-test.py +++ b/src/linux/integration-test.py @@ -353,6 +353,32 @@ class Tests(dbusmock.DBusTestCase): None, ) + def get_charge_strategies(self, device): + return self.dbus.call_sync( + UP, + device, + "org.freedesktop.UPower.Device", + "GetSupportedChargeStrategies", + None, + None, + Gio.DBusCallFlags.NO_AUTO_START, + -1, + None, + ).unpack()[0] + + def set_charge_strategy(self, device, strategy): + self.dbus.call_sync( + UP, + device, + "org.freedesktop.UPower.Device", + "SetChargeStrategy", + GLib.Variant("s", strategy), + None, + Gio.DBusCallFlags.NO_AUTO_START, + -1, + None, + ) + def get_kbd_backlight_brightness(self, kbd_backlight): return self.dbus.call_sync( UP, @@ -2871,6 +2897,59 @@ class Tests(dbusmock.DBusTestCase): self.stop_daemon() + def test_battery_charge_strategy_supported(self): + """Battery with charge_strategy supported""" + + bat0 = self.testbed.add_device( + "power_supply", + "BAT1", + None, + [ + "type", + "Battery", + "present", + "1", + "status", + "unknown", + "energy_full", + "60000000", + "energy_full_design", + "80000000", + "energy_now", + "48000000", + "voltage_now", + "12000000", + "charge_control_start_threshold", + "0", + "charge_control_end_threshold", + "100", + "charge_types", + "Standard [Long_Life] Fast Adaptive", + ], + [], + ) + + self.start_daemon() + devs = self.proxy.EnumerateDevices() + self.assertEqual(len(devs), 1) + bat0_up = devs[0] + + self.assertEqual( + self.get_dbus_dev_property(bat0_up, "ChargeStrategy"), 128 # Long Life + ) + + self.assertEqual( + self.get_dbus_dev_property(bat0_up, "ChargeStrategiesSupported"), + 184, # 16 + 128 + 8 + 32 + ) + + supported_strategies = self.get_charge_strategies(bat0_up) + self.assertEqual( + supported_strategies, + [("Fast",), ("Standard",), ("Adaptive",), ("Long Life",)], + ) + self.stop_daemon() + def test_battery_zero_power_draw(self): """Battery with zero power draw, e.g. in a dual-battery system"""