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