Author: hbelusca
Date: Tue Aug 20 18:55:42 2013
New Revision: 59788
URL:
http://svn.reactos.org/svn/reactos?rev=59788&view=rev
Log:
[ROSTESTS]
Fix timer tests, by Aleksander Andrejevic.
See CORE-7387 for more details, and:
http://mirrors.arcadecontrols.com/www.sysinternals.com/Information/HighReso…
too.
Modified:
trunk/rostests/apitests/ntdll/Timer.c
trunk/rostests/apitests/ntdll/testlist.c
Modified: 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 [iso-8859-1] (original)
+++ trunk/rostests/apitests/ntdll/Timer.c [iso-8859-1] Tue Aug 20 18:55:42 2013
@@ -26,8 +26,8 @@
&CurrentResolution);
/*
- * When not setting the resolution, it always
- * returns STATUS_TIMER_RESOLUTION_NOT_SET
+ * If the timer resolution hasn't been changed for this process,
+ * it returns STATUS_TIMER_RESOLUTION_NOT_SET
*/
ok_hex(Status, STATUS_TIMER_RESOLUTION_NOT_SET);
@@ -42,6 +42,9 @@
/* This function should always return STATUS_SUCCESS */
ok_hex(Status, STATUS_SUCCESS);
+ /* The MinimumResolution should be higher than the MaximumResolution */
+ ok(MinimumResolution >= MaximumResolution, "MaximumResolution higher than
MinimumResolution!");
+
/* These two values should be the same */
ok_hex(CurrentResolution, CurrentResolution2);
@@ -50,17 +53,25 @@
* NtSetTimerResolution will return STATUS_SUCCESS,
* but it will not change the resolution.
*/
- Status = NtSetTimerResolution(MinimumResolution - 1,
+ 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);
+ ok(CurrentResolution <= MinimumResolution, "Current resolution: %d became too
high! (minimum resolution: %d)\n", CurrentResolution, MinimumResolution);
- Status = NtSetTimerResolution(MaximumResolution + 1,
+ 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);
+ ok(CurrentResolution >= MaximumResolution, "Current resolution: %d became too
low! (maximum resolution: %d)\n", CurrentResolution, MaximumResolution);
+
+ /* Get the current timer resolution */
+ Status = NtSetTimerResolution(0, /* Ignored */
+ FALSE, /* Don't change resolution */
+ &CurrentResolution);
+
+ /* Since we have changed the resolution earlier, it returns STATUS_SUCCESS. */
+ ok_hex(Status, STATUS_SUCCESS);
}
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] Tue Aug 20 18:55:42 2013
@@ -21,8 +21,8 @@
extern void func_RtlGetFullPathName_UstrEx(void);
extern void func_RtlGetLongestNtPathLength(void);
extern void func_RtlInitializeBitMap(void);
+extern void func_TimerResolution(void);
extern void func_ZwContinue(void);
-extern void func_TimerResolution(void);
const struct test winetest_testlist[] =
{
@@ -44,8 +44,8 @@
{ "RtlGetFullPathName_UstrEx", func_RtlGetFullPathName_UstrEx },
{ "RtlGetLongestNtPathLength", func_RtlGetLongestNtPathLength },
{ "RtlInitializeBitMap", func_RtlInitializeBitMap },
+ { "TimerResolution", func_TimerResolution },
{ "ZwContinue", func_ZwContinue },
- { "TimerResolution", func_TimerResolution },
{ 0, 0 }
};