Module: wine Branch: master Commit: 34e15e5a1d8d7101423a35d27aa1de68e5570aa4 URL: https://source.winehq.org/git/wine.git/?a=commit;h=34e15e5a1d8d7101423a35d27...
Author: Alex Henrie alexhenrie24@gmail.com Date: Wed Sep 25 00:45:56 2019 -0600
ntdll/tests: Add tests for NtPowerInformation(SystemBatteryState).
Signed-off-by: Alex Henrie alexhenrie24@gmail.com Signed-off-by: Alexandre Julliard julliard@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();