From a120b1e94322b17bf5ae41bb885faf3d17b991cd Mon Sep 17 00:00:00 2001 From: Giampaolo Rodola Date: Thu, 26 Jan 2017 19:52:56 +0100 Subject: #955: battery windows specific tests --- psutil/__init__.py | 2 ++ psutil/tests/test_windows.py | 47 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/psutil/__init__.py b/psutil/__init__.py index 745d66fd..bfef0512 100644 --- a/psutil/__init__.py +++ b/psutil/__init__.py @@ -195,6 +195,8 @@ __author__ = "Giampaolo Rodola'" __version__ = "5.1.0" version_info = tuple([int(num) for num in __version__.split('.')]) AF_LINK = _psplatform.AF_LINK +POWER_TIME_UNLIMITED = _common.POWER_TIME_UNLIMITED +POWER_TIME_UNKNOWN = _common.POWER_TIME_UNKNOWN _TOTAL_PHYMEM = None _timer = getattr(time, 'monotonic', time.time) diff --git a/psutil/tests/test_windows.py b/psutil/tests/test_windows.py index 07f1d796..669adad0 100755 --- a/psutil/tests/test_windows.py +++ b/psutil/tests/test_windows.py @@ -158,6 +158,53 @@ class TestSystemAPIs(unittest.TestCase): "no common entries in %s, %s" % (ps_names, wmi_names)) +# =================================================================== +# sensors_battery() +# =================================================================== + + +@unittest.skipUnless(WINDOWS, "WINDOWS only") +class TestSensorsBattery(unittest.TestCase): + + def test_percent(self): + w = wmi.WMI() + battery_psutil = psutil.sensors_battery() + battery_wmi = w.query('select * from Win32_Battery')[0] + if battery_psutil is None: + self.assertNot(battery_wmi.EstimatedChargeRemaining) + else: + self.assertAlmostEqual( + battery_psutil.percent, battery_wmi.EstimatedChargeRemaining, + delta=1) + + def test_emulate_no_battery(self): + with mock.patch("psutil._pswindows.cext.sensors_battery", + return_value=(0, 128, 0, 0)) as m: + self.assertIsNone(psutil.sensors_battery()) + assert m.called + + def test_emulate_power_connected(self): + with mock.patch("psutil._pswindows.cext.sensors_battery", + return_value=(1, 0, 0, 0)) as m: + self.assertEqual(psutil.sensors_battery().secsleft, + psutil.POWER_TIME_UNLIMITED) + assert m.called + + def test_emulate_power_charging(self): + with mock.patch("psutil._pswindows.cext.sensors_battery", + return_value=(0, 8, 0, 0)) as m: + self.assertEqual(psutil.sensors_battery().secsleft, + psutil.POWER_TIME_UNLIMITED) + assert m.called + + def test_emulate_secs_left_unknown(self): + with mock.patch("psutil._pswindows.cext.sensors_battery", + return_value=(0, 0, 0, -1)) as m: + self.assertEqual(psutil.sensors_battery().secsleft, + psutil.POWER_TIME_UNKNOWN) + assert m.called + + # =================================================================== # Process APIs # =================================================================== -- cgit v1.2.1