ntdll/tests: Add RtlFindNextForwardRun{Set, Clear} tests.
The tests in particular should trigger an edge case in implementation. Signed-off-by: Michał Janiszewski <janisozaur@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
9be5eadee4
commit
961061419a
|
@ -40,6 +40,8 @@ static CCHAR (WINAPI *pRtlFindMostSignificantBit)(ULONGLONG);
|
|||
static CCHAR (WINAPI *pRtlFindLeastSignificantBit)(ULONGLONG);
|
||||
static ULONG (WINAPI *pRtlFindSetRuns)(PRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
|
||||
static ULONG (WINAPI *pRtlFindClearRuns)(PRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
|
||||
static ULONG (WINAPI *pRtlFindNextForwardRunSet)(PRTL_BITMAP,ULONG,PULONG);
|
||||
static ULONG (WINAPI *pRtlFindNextForwardRunClear)(PRTL_BITMAP,ULONG,PULONG);
|
||||
static ULONG (WINAPI *pRtlNumberOfSetBits)(PRTL_BITMAP);
|
||||
static ULONG (WINAPI *pRtlNumberOfClearBits)(PRTL_BITMAP);
|
||||
static ULONG (WINAPI *pRtlFindLongestRunSet)(PRTL_BITMAP,PULONG);
|
||||
|
@ -69,6 +71,8 @@ static void InitFunctionPtrs(void)
|
|||
pRtlFindLeastSignificantBit = (void *)GetProcAddress(hntdll, "RtlFindLeastSignificantBit");
|
||||
pRtlFindSetRuns = (void *)GetProcAddress(hntdll, "RtlFindSetRuns");
|
||||
pRtlFindClearRuns = (void *)GetProcAddress(hntdll, "RtlFindClearRuns");
|
||||
pRtlFindNextForwardRunSet = (void *)GetProcAddress(hntdll, "RtlFindNextForwardRunSet");
|
||||
pRtlFindNextForwardRunClear = (void *)GetProcAddress(hntdll, "RtlFindNextForwardRunClear");
|
||||
pRtlFindLongestRunSet = (void *)GetProcAddress(hntdll, "RtlFindLongestRunSet");
|
||||
pRtlFindLongestRunClear = (void *)GetProcAddress(hntdll, "RtlFindLongestRunClear");
|
||||
}
|
||||
|
@ -620,6 +624,37 @@ static void test_RtlFindClearRuns(void)
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
static void test_RtlFindNextForwardRunSet(void)
|
||||
{
|
||||
BYTE mask[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff };
|
||||
ULONG ulStart = 0;
|
||||
ULONG ulCount, lpPos;
|
||||
if (!pRtlFindNextForwardRunSet)
|
||||
return;
|
||||
|
||||
pRtlInitializeBitMap(&bm, mask, 62);
|
||||
ulCount = pRtlFindNextForwardRunSet(&bm, ulStart, &lpPos);
|
||||
todo_wine
|
||||
ok(ulCount == 6, "Invalid length of found set run: %d, expected 6\n", ulCount);
|
||||
ok(lpPos == 56, "Invalid position of found set run: %d, expected 56\n", lpPos);
|
||||
}
|
||||
|
||||
static void test_RtlFindNextForwardRunClear(void)
|
||||
{
|
||||
BYTE mask[8] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 };
|
||||
ULONG ulStart = 0;
|
||||
ULONG ulCount, lpPos;
|
||||
if (!pRtlFindNextForwardRunClear)
|
||||
return;
|
||||
|
||||
pRtlInitializeBitMap(&bm, mask, 62);
|
||||
ulCount = pRtlFindNextForwardRunClear(&bm, ulStart, &lpPos);
|
||||
todo_wine
|
||||
ok(ulCount == 6, "Invalid length of found clear run: %d, expected 6\n", ulCount);
|
||||
ok(lpPos == 56, "Invalid position of found clear run: %d, expected 56\n", lpPos);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
START_TEST(rtlbitmap)
|
||||
|
@ -645,6 +680,8 @@ START_TEST(rtlbitmap)
|
|||
test_RtlFindLeastSignificantBit();
|
||||
test_RtlFindSetRuns();
|
||||
test_RtlFindClearRuns();
|
||||
test_RtlFindNextForwardRunSet();
|
||||
test_RtlFindNextForwardRunClear();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue