=?UTF-8?Q?Micha=C5=82=20Janiszewski=20?=: ntdll/tests: Add RtlFindNextForwardRun{Set, Clear} tests.
Alexandre Julliard
julliard at winehq.org
Tue Jul 10 15:36:44 CDT 2018
Module: wine
Branch: master
Commit: 961061419a9058f50d3b00511dcaf4d7b3df1e3d
URL: https://source.winehq.org/git/wine.git/?a=commit;h=961061419a9058f50d3b00511dcaf4d7b3df1e3d
Author: Michał Janiszewski <janisozaur at gmail.com>
Date: Sun Jul 8 21:57:42 2018 +0200
ntdll/tests: Add RtlFindNextForwardRun{Set, Clear} tests.
The tests in particular should trigger an edge case in implementation.
Signed-off-by: Michał Janiszewski <janisozaur at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/tests/rtlbitmap.c | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/dlls/ntdll/tests/rtlbitmap.c b/dlls/ntdll/tests/rtlbitmap.c
index 9552318..10ee5f6 100644
--- a/dlls/ntdll/tests/rtlbitmap.c
+++ b/dlls/ntdll/tests/rtlbitmap.c
@@ -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
}
More information about the wine-cvs
mailing list