Commit 96106141 authored by Michał Janiszewski's avatar Michał Janiszewski Committed by Alexandre Julliard

ntdll/tests: Add RtlFindNextForwardRun{Set, Clear} tests.

The tests in particular should trigger an edge case in implementation. Signed-off-by: 's avatarMichał Janiszewski <janisozaur@gmail.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent 9be5eade
......@@ -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
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment