Skip to content

Commit 6031eff

Browse files
malsynedsuperm1
authored andcommitted
improve test coverage for battery.py
1 parent 0ec37aa commit 6031eff

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

src/amd_debug/battery.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,8 @@ def get_batteries(self) -> list:
3838
names.append(_get_property(dev.properties, "POWER_SUPPLY_NAME", "Unknown"))
3939
return names
4040

41-
def _get_design_voltage(self, name) -> str:
42-
"""Get the design voltage in µV for the given battery name"""
43-
dev = self._get_battery(name)
44-
if not dev:
45-
return ""
41+
def _get_design_voltage(self, dev) -> str:
42+
"""Get the design voltage in µV for the given battery"""
4643
for key in [
4744
"POWER_SUPPLY_VOLTAGE_MAX_DESIGN",
4845
"POWER_SUPPLY_VOLTAGE_MIN_DESIGN",
@@ -53,9 +50,9 @@ def _get_design_voltage(self, name) -> str:
5350
return voltage
5451
return ""
5552

56-
def _charge_to_energy(self, name, charge):
53+
def _charge_to_energy(self, dev, charge):
5754
"""Convert battery charge in μAh to energy in μWh"""
58-
voltage = self._get_design_voltage(name)
55+
voltage = self._get_design_voltage(dev)
5956
if not charge or not voltage:
6057
return ""
6158
return str(round(int(charge) * int(voltage) / 1000000))
@@ -68,7 +65,7 @@ def get_energy(self, name) -> int:
6865
energy = _get_property(dev.properties, "POWER_SUPPLY_ENERGY_NOW")
6966
if not energy:
7067
charge = _get_property(dev.properties, "POWER_SUPPLY_CHARGE_NOW")
71-
energy = self._charge_to_energy(name, charge)
68+
energy = self._charge_to_energy(dev, charge)
7269
return energy
7370

7471
def get_energy_full(self, name) -> int:
@@ -79,7 +76,7 @@ def get_energy_full(self, name) -> int:
7976
energy = _get_property(dev.properties, "POWER_SUPPLY_ENERGY_FULL")
8077
if not energy:
8178
charge = _get_property(dev.properties, "POWER_SUPPLY_CHARGE_FULL")
82-
energy = self._charge_to_energy(name, charge)
79+
energy = self._charge_to_energy(dev, charge)
8380
return energy
8481

8582
def get_description_string(self, name) -> str:
@@ -95,7 +92,7 @@ def get_description_string(self, name) -> str:
9592
charge_full_design = _get_property(
9693
dev.properties, "POWER_SUPPLY_CHARGE_FULL_DESIGN"
9794
)
98-
full_design = self._charge_to_energy(name, charge_full_design)
95+
full_design = self._charge_to_energy(dev, charge_full_design)
9996

10097
percent = float(full) / int(full_design)
10198
return f"Battery {name} ({man} {model}) is operating at {percent:.2%} of design"

src/test_batteries.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,19 +47,35 @@ def test_get_energy(self):
4747
result = self.batteries.get_energy("BAT0")
4848
self.assertEqual(result, "50000")
4949

50+
def test_get_energy_no_attrs(self):
51+
"""Test graceful failure for a battery with no energy information"""
52+
mock_device = MagicMock()
53+
mock_device.device_path = "/devices/LNXSYSTM:00/device:00/PNP0C0A:00"
54+
mock_device.properties = {
55+
"POWER_SUPPLY_NAME": "BAT0",
56+
}
57+
self.mock_context.list_devices.return_value = [mock_device]
58+
result = self.batteries.get_energy("BAT0")
59+
self.assertEqual(result, "")
60+
5061
def test_get_energy_from_charge(self):
5162
"""Test getting current energy for a battery that only reports charge"""
5263
mock_device = MagicMock()
5364
mock_device.device_path = "/devices/LNXSYSTM:00/device:00/PNP0C0A:00"
5465
mock_device.properties = {
5566
"POWER_SUPPLY_NAME": "BAT0",
5667
"POWER_SUPPLY_CHARGE_NOW": "3230",
57-
"POWER_SUPPLY_VOLTAGE_NOW": "15480000",
5868
}
5969
self.mock_context.list_devices.return_value = [mock_device]
70+
71+
# Confirm graceful handling when no design voltage available
6072
result = self.batteries.get_energy("BAT0")
61-
self.assertEqual(result, "50000")
73+
self.assertEqual(result, "")
74+
6275
# Confirm precedence among possible battery voltage attributes
76+
mock_device.properties["POWER_SUPPLY_VOLTAGE_NOW"] = "15480000"
77+
result = self.batteries.get_energy("BAT0")
78+
self.assertEqual(result, "50000")
6379
mock_device.properties["POWER_SUPPLY_VOLTAGE_MIN_DESIGN"] = "15000000"
6480
result = self.batteries.get_energy("BAT0")
6581
self.assertEqual(result, "48450")

0 commit comments

Comments
 (0)