Alex Henrie : ntdll/tests: Add tests for NtPowerInformation(SystemBatteryState).

Alexandre Julliard julliard at winehq.org
Thu Sep 26 15:51:19 CDT 2019


Module: wine
Branch: master
Commit: 34e15e5a1d8d7101423a35d27aa1de68e5570aa4
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=34e15e5a1d8d7101423a35d27aa1de68e5570aa4

Author: Alex Henrie <alexhenrie24 at gmail.com>
Date:   Wed Sep 25 00:45:56 2019 -0600

ntdll/tests: Add tests for NtPowerInformation(SystemBatteryState).

Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/tests/info.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c
index 25c379929b..93920714f2 100644
--- a/dlls/ntdll/tests/info.c
+++ b/dlls/ntdll/tests/info.c
@@ -888,6 +888,48 @@ static void test_query_firmware(void)
     HeapFree(GetProcessHeap(), 0, sfti);
 }
 
+static void test_query_battery(void)
+{
+    SYSTEM_BATTERY_STATE bs;
+    NTSTATUS status;
+    DWORD time_left;
+
+    memset(&bs, 0x23, sizeof(bs));
+    status = NtPowerInformation(SystemBatteryState, NULL, 0, &bs, sizeof(bs));
+    if (status == STATUS_NOT_IMPLEMENTED)
+    {
+        skip("SystemBatteryState not implemented\n");
+        return;
+    }
+    ok(status == STATUS_SUCCESS, "expected success\n");
+
+    trace("Battery state:\n");
+    trace("AcOnLine          : %u\n", bs.AcOnLine);
+    trace("BatteryPresent    : %u\n", bs.BatteryPresent);
+    trace("Charging          : %u\n", bs.Charging);
+    trace("Discharging       : %u\n", bs.Discharging);
+    trace("Tag               : %u\n", bs.Tag);
+    trace("MaxCapacity       : %u\n", bs.MaxCapacity);
+    trace("RemainingCapacity : %u\n", bs.RemainingCapacity);
+    trace("Rate              : %d\n", (LONG)bs.Rate);
+    trace("EstimatedTime     : %u\n", bs.EstimatedTime);
+    trace("DefaultAlert1     : %u\n", bs.DefaultAlert1);
+    trace("DefaultAlert2     : %u\n", bs.DefaultAlert2);
+
+    ok(bs.MaxCapacity >= bs.RemainingCapacity,
+       "expected MaxCapacity %u to be greater than or equal to RemainingCapacity %u\n",
+       bs.MaxCapacity, bs.RemainingCapacity);
+
+    if (!bs.BatteryPresent)
+        time_left = 0;
+    else if (!bs.Charging && (LONG)bs.Rate < 0)
+        time_left = 3600 * bs.RemainingCapacity / -(LONG)bs.Rate;
+    else
+        time_left = ~0u;
+    ok(bs.EstimatedTime == time_left,
+       "expected %u minutes remaining got %u minutes\n", time_left, bs.EstimatedTime);
+}
+
 static void test_query_processor_power_info(void)
 {
     NTSTATUS status;
@@ -2374,6 +2416,10 @@ START_TEST(info)
 
     /* NtPowerInformation */
 
+    /* 0x5 SystemBatteryState */
+    trace("Starting test_query_battery()\n");
+    test_query_battery();
+
     /* 0xb ProcessorInformation */
     trace("Starting test_query_processor_power_info()\n");
     test_query_processor_power_info();




More information about the wine-cvs mailing list