Author: hbelusca
Date: Mon Aug 19 21:44:26 2013
New Revision: 59786
URL:
http://svn.reactos.org/svn/reactos?rev=59786&view=rev
Log:
[ROSTESTS]
Add a test for NtQueryTimerResolution and NtSetTimerResolution, by Aleksander Andrejevic.
See CORE-7387 for more information.
Added:
trunk/rostests/apitests/ntdll/Timer.c (with props)
Modified:
trunk/rostests/apitests/ntdll/CMakeLists.txt
trunk/rostests/apitests/ntdll/testlist.c
Modified: trunk/rostests/apitests/ntdll/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/ntdll/CMakeLists…
==============================================================================
--- trunk/rostests/apitests/ntdll/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/rostests/apitests/ntdll/CMakeLists.txt [iso-8859-1] Mon Aug 19 21:44:26 2013
@@ -18,6 +18,7 @@
RtlGetLongestNtPathLength.c
RtlInitializeBitMap.c
SystemInfo.c
+ Timer.c
ZwContinue.c
testlist.c)
Added: trunk/rostests/apitests/ntdll/Timer.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/ntdll/Timer.c?re…
==============================================================================
--- trunk/rostests/apitests/ntdll/Timer.c (added)
+++ trunk/rostests/apitests/ntdll/Timer.c [iso-8859-1] Mon Aug 19 21:44:26 2013
@@ -0,0 +1,66 @@
+/*
+ * PROJECT: ReactOS API tests
+ * LICENSE: GPL - See COPYING in the top level directory
+ * PURPOSE: Test for NtQueryTimerResolution and NtSetTimerResolution.
+ * PROGRAMMER: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
+ */
+
+#define WIN32_NO_STATUS
+#include <wine/test.h>
+#include <ndk/ketypes.h>
+#include <ndk/kefuncs.h>
+
+#include <stdio.h>
+
+START_TEST(TimerResolution)
+{
+ NTSTATUS Status;
+ ULONG CurrentResolution;
+ ULONG MinimumResolution;
+ ULONG MaximumResolution;
+ ULONG CurrentResolution2;
+
+ /* Get the current timer resolution */
+ Status = NtSetTimerResolution(0, /* Ignored */
+ FALSE, /* Don't change resolution */
+ &CurrentResolution);
+
+ /*
+ * When not setting the resolution, it always
+ * returns STATUS_TIMER_RESOLUTION_NOT_SET
+ */
+ ok_hex(Status, STATUS_TIMER_RESOLUTION_NOT_SET);
+
+ /*
+ * Get the timer resolution limits and current timer resolution
+ * using a different method
+ */
+ Status = NtQueryTimerResolution(&MinimumResolution,
+ &MaximumResolution,
+ &CurrentResolution2);
+
+ /* This function should always return STATUS_SUCCESS */
+ ok_hex(Status, STATUS_SUCCESS);
+
+ /* These two values should be the same */
+ ok_hex(CurrentResolution, CurrentResolution2);
+
+ /*
+ * Even if you give it invalid values,
+ * NtSetTimerResolution will return STATUS_SUCCESS,
+ * but it will not change the resolution.
+ */
+ Status = NtSetTimerResolution(MinimumResolution - 1,
+ TRUE,
+ &CurrentResolution);
+ ok_hex(Status, STATUS_SUCCESS);
+ printf("Current resolution: %d ; minimum resolution: %d\n",
CurrentResolution, MinimumResolution);
+ ok(CurrentResolution >= MinimumResolution, "Current resolution: %d became too
low! (minimum resolution: %d)\n", CurrentResolution, MinimumResolution);
+
+ Status = NtSetTimerResolution(MaximumResolution + 1,
+ TRUE,
+ &CurrentResolution);
+ ok_hex(Status, STATUS_SUCCESS);
+ printf("Current resolution: %d ; maximum resolution: %d\n",
CurrentResolution, MaximumResolution);
+ ok(CurrentResolution <= MaximumResolution, "Current resolution: %d became too
high! (maximum resolution: %d)\n", CurrentResolution, MaximumResolution);
+}
Propchange: trunk/rostests/apitests/ntdll/Timer.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/rostests/apitests/ntdll/testlist.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/ntdll/testlist.c…
==============================================================================
--- trunk/rostests/apitests/ntdll/testlist.c [iso-8859-1] (original)
+++ trunk/rostests/apitests/ntdll/testlist.c [iso-8859-1] Mon Aug 19 21:44:26 2013
@@ -22,6 +22,7 @@
extern void func_RtlGetLongestNtPathLength(void);
extern void func_RtlInitializeBitMap(void);
extern void func_ZwContinue(void);
+extern void func_TimerResolution(void);
const struct test winetest_testlist[] =
{
@@ -44,6 +45,7 @@
{ "RtlGetLongestNtPathLength", func_RtlGetLongestNtPathLength },
{ "RtlInitializeBitMap", func_RtlInitializeBitMap },
{ "ZwContinue", func_ZwContinue },
+ { "TimerResolution", func_TimerResolution },
{ 0, 0 }
};