mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-15 00:07:16 +00:00
ntdll/tests: Make function pointer checks consistent and report skips.
This commit is contained in:
parent
1cad1646e5
commit
3ed716f833
|
@ -112,7 +112,10 @@ static void test_RtlCompareMemory(void)
|
|||
SIZE_T size;
|
||||
|
||||
if (!pRtlCompareMemory)
|
||||
{
|
||||
win_skip("RtlCompareMemory is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
strcpy(dest, src);
|
||||
|
||||
|
@ -127,6 +130,12 @@ static void test_RtlCompareMemoryUlong(void)
|
|||
ULONG a[10];
|
||||
ULONG result;
|
||||
|
||||
if (!pRtlCompareMemoryUlong)
|
||||
{
|
||||
win_skip("RtlCompareMemoryUlong is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
a[0]= 0x0123;
|
||||
a[1]= 0x4567;
|
||||
a[2]= 0x89ab;
|
||||
|
@ -173,7 +182,10 @@ static void test_RtlCompareMemoryUlong(void)
|
|||
static void test_RtlMoveMemory(void)
|
||||
{
|
||||
if (!pRtlMoveMemory)
|
||||
{
|
||||
win_skip("RtlMoveMemory is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Length should be in bytes and not rounded. Use strcmp to ensure we
|
||||
* didn't write past the end (it checks for the final NUL left by memset)
|
||||
|
@ -201,7 +213,10 @@ static void test_RtlMoveMemory(void)
|
|||
static void test_RtlFillMemory(void)
|
||||
{
|
||||
if (!pRtlFillMemory)
|
||||
{
|
||||
win_skip("RtlFillMemory is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Length should be in bytes and not rounded. Use strcmp to ensure we
|
||||
* didn't write past the end (the remainder of the string should match)
|
||||
|
@ -224,7 +239,10 @@ static void test_RtlFillMemoryUlong(void)
|
|||
{
|
||||
ULONG val = ('x' << 24) | ('x' << 16) | ('x' << 8) | 'x';
|
||||
if (!pRtlFillMemoryUlong)
|
||||
{
|
||||
win_skip("RtlFillMemoryUlong is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Length should be in bytes and not rounded. Use strcmp to ensure we
|
||||
* didn't write past the end (the remainder of the string should match)
|
||||
|
@ -247,7 +265,10 @@ static void test_RtlFillMemoryUlong(void)
|
|||
static void test_RtlZeroMemory(void)
|
||||
{
|
||||
if (!pRtlZeroMemory)
|
||||
{
|
||||
win_skip("RtlZeroMemory is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Length should be in bytes and not rounded. */
|
||||
ZERO(0); MCMP("This is a test!");
|
||||
|
@ -266,6 +287,12 @@ static void test_RtlUlonglongByteSwap(void)
|
|||
{
|
||||
ULONGLONG result;
|
||||
|
||||
if ( !pRtlUlonglongByteSwap )
|
||||
{
|
||||
win_skip("RtlUlonglongByteSwap is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if ( pRtlUlonglongByteSwap( 0 ) != 0 )
|
||||
{
|
||||
win_skip("Broken RtlUlonglongByteSwap in win2k\n");
|
||||
|
@ -287,6 +314,12 @@ static void test_RtlUniform(void)
|
|||
ULONG expected;
|
||||
ULONG result;
|
||||
|
||||
if (!pRtlUniform)
|
||||
{
|
||||
win_skip("RtlUniform is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* According to the documentation RtlUniform is using D.H. Lehmer's 1948
|
||||
* algorithm. This algorithm is:
|
||||
|
@ -612,6 +645,12 @@ static void test_RtlRandom(void)
|
|||
ULONG result;
|
||||
ULONG result_expected;
|
||||
|
||||
if (!pRtlRandom)
|
||||
{
|
||||
win_skip("RtlRandom is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Unlike RtlUniform, RtlRandom is not documented. We guess that for
|
||||
* RtlRandom D.H. Lehmer's 1948 algorithm is used like stated in
|
||||
|
@ -820,6 +859,12 @@ static void test_RtlAreAllAccessesGranted(void)
|
|||
unsigned int test_num;
|
||||
BOOLEAN result;
|
||||
|
||||
if (!pRtlAreAllAccessesGranted)
|
||||
{
|
||||
win_skip("RtlAreAllAccessesGranted is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
for (test_num = 0; test_num < NB_ALL_ACCESSES; test_num++) {
|
||||
result = pRtlAreAllAccessesGranted(all_accesses[test_num].GrantedAccess,
|
||||
all_accesses[test_num].DesiredAccess);
|
||||
|
@ -857,6 +902,12 @@ static void test_RtlAreAnyAccessesGranted(void)
|
|||
unsigned int test_num;
|
||||
BOOLEAN result;
|
||||
|
||||
if (!pRtlAreAnyAccessesGranted)
|
||||
{
|
||||
win_skip("RtlAreAnyAccessesGranted is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
for (test_num = 0; test_num < NB_ANY_ACCESSES; test_num++) {
|
||||
result = pRtlAreAnyAccessesGranted(any_accesses[test_num].GrantedAccess,
|
||||
any_accesses[test_num].DesiredAccess);
|
||||
|
@ -873,7 +924,10 @@ static void test_RtlComputeCrc32(void)
|
|||
DWORD crc = 0;
|
||||
|
||||
if (!pRtlComputeCrc32)
|
||||
{
|
||||
win_skip("RtlComputeCrc32 is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
crc = pRtlComputeCrc32(crc, (const BYTE *)src, LEN);
|
||||
ok(crc == 0x40861dc2,"Expected 0x40861dc2, got %8x\n", crc);
|
||||
|
@ -900,6 +954,12 @@ static void test_HandleTables(void)
|
|||
MY_HANDLE * MyHandle;
|
||||
RTL_HANDLE_TABLE HandleTable;
|
||||
|
||||
if (!pRtlInitializeHandleTable)
|
||||
{
|
||||
win_skip("RtlInitializeHandleTable is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
pRtlInitializeHandleTable(0x3FFF, sizeof(MY_HANDLE), &HandleTable);
|
||||
MyHandle = (MY_HANDLE *)pRtlAllocateHandle(&HandleTable, &Index);
|
||||
ok(MyHandle != NULL, "RtlAllocateHandle failed\n");
|
||||
|
@ -919,6 +979,12 @@ static void test_RtlAllocateAndInitializeSid(void)
|
|||
SID_IDENTIFIER_AUTHORITY sia = {{ 1, 2, 3, 4, 5, 6 }};
|
||||
PSID psid;
|
||||
|
||||
if (!pRtlAllocateAndInitializeSid)
|
||||
{
|
||||
win_skip("RtlAllocateAndInitializeSid is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
ret = pRtlAllocateAndInitializeSid(&sia, 0, 1, 2, 3, 4, 5, 6, 7, 8, &psid);
|
||||
ok(!ret, "RtlAllocateAndInitializeSid error %08x\n", ret);
|
||||
ret = pRtlFreeSid(psid);
|
||||
|
@ -935,6 +1001,13 @@ static void test_RtlAllocateAndInitializeSid(void)
|
|||
static void test_RtlDeleteTimer(void)
|
||||
{
|
||||
NTSTATUS ret;
|
||||
|
||||
if (!pRtlDeleteTimer)
|
||||
{
|
||||
win_skip("RtlDeleteTimer is not available\n");
|
||||
return;
|
||||
}
|
||||
|
||||
ret = pRtlDeleteTimer(NULL, NULL, NULL);
|
||||
ok(ret == STATUS_INVALID_PARAMETER_1 ||
|
||||
ret == STATUS_INVALID_PARAMETER, /* W2K */
|
||||
|
@ -945,34 +1018,19 @@ START_TEST(rtl)
|
|||
{
|
||||
InitFunctionPtrs();
|
||||
|
||||
if (pRtlCompareMemory)
|
||||
test_RtlCompareMemory();
|
||||
if (pRtlCompareMemoryUlong)
|
||||
test_RtlCompareMemoryUlong();
|
||||
if (pRtlMoveMemory)
|
||||
test_RtlMoveMemory();
|
||||
if (pRtlFillMemory)
|
||||
test_RtlFillMemory();
|
||||
if (pRtlFillMemoryUlong)
|
||||
test_RtlFillMemoryUlong();
|
||||
if (pRtlZeroMemory)
|
||||
test_RtlZeroMemory();
|
||||
if (pRtlUlonglongByteSwap)
|
||||
test_RtlUlonglongByteSwap();
|
||||
if (pRtlUniform)
|
||||
test_RtlUniform();
|
||||
if (pRtlRandom)
|
||||
test_RtlRandom();
|
||||
if (pRtlAreAllAccessesGranted)
|
||||
test_RtlAreAllAccessesGranted();
|
||||
if (pRtlAreAnyAccessesGranted)
|
||||
test_RtlAreAnyAccessesGranted();
|
||||
if (pRtlComputeCrc32)
|
||||
test_RtlComputeCrc32();
|
||||
if (pRtlInitializeHandleTable)
|
||||
test_HandleTables();
|
||||
if (pRtlAllocateAndInitializeSid)
|
||||
test_RtlAllocateAndInitializeSid();
|
||||
if (pRtlDeleteTimer)
|
||||
test_RtlDeleteTimer();
|
||||
test_RtlCompareMemory();
|
||||
test_RtlCompareMemoryUlong();
|
||||
test_RtlMoveMemory();
|
||||
test_RtlFillMemory();
|
||||
test_RtlFillMemoryUlong();
|
||||
test_RtlZeroMemory();
|
||||
test_RtlUlonglongByteSwap();
|
||||
test_RtlUniform();
|
||||
test_RtlRandom();
|
||||
test_RtlAreAllAccessesGranted();
|
||||
test_RtlAreAnyAccessesGranted();
|
||||
test_RtlComputeCrc32();
|
||||
test_HandleTables();
|
||||
test_RtlAllocateAndInitializeSid();
|
||||
test_RtlDeleteTimer();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue