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/HighResol... 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?rev... ============================================================================== --- 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 } };