=?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