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