[PATCH] ntdll/tests: Add a test for qsort() stability.

Nikolay Sivov nsivov at codeweavers.com
Wed Oct 24 08:34:31 CDT 2018


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/ntdll/tests/string.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/dlls/ntdll/tests/string.c b/dlls/ntdll/tests/string.c
index 708d6e7b65..0ab28ff1c6 100644
--- a/dlls/ntdll/tests/string.c
+++ b/dlls/ntdll/tests/string.c
@@ -1189,6 +1189,16 @@ static int __cdecl strcomparefunc(const void *a, const void *b)
     return lstrcmpA(*p, *q);
 }
 
+static int __cdecl istrcomparefunc(const void *a, const void *b)
+{
+    const char * const *p = a;
+    const char * const *q = b;
+
+    ok (a != b, "must never get the same pointer\n");
+
+    return lstrcmpiA(*p, *q);
+}
+
 static void test_qsort(void)
 {
     int arr[5] = { 23, 42, 8, 4, 16 };
@@ -1202,6 +1212,15 @@ static void test_qsort(void)
 	"Sorted",
 	"."
     };
+    const char *strarr2[7] = {
+        "Hello",
+        "Wine",
+        "World",
+        "!",
+        "wine",
+        "Sorted",
+        "WINE"
+    };
 
     p_qsort ((void*)arr, 0, sizeof(int), intcomparefunc);
     ok(arr[0] == 23, "badly sorted, nmemb=0, arr[0] is %d\n", arr[0]);
@@ -1246,6 +1265,17 @@ static void test_qsort(void)
     ok(!strcmp(strarr[4],"Sorted"),  "badly sorted, strarr[4] is %s\n", strarr[4]);
     ok(!strcmp(strarr[5],"Wine"),  "badly sorted, strarr[5] is %s\n", strarr[5]);
     ok(!strcmp(strarr[6],"World"),  "badly sorted, strarr[6] is %s\n", strarr[6]);
+
+    p_qsort ((void*)strarr2, 7, sizeof(char*), istrcomparefunc);
+    ok(!strcmp(strarr2[0], "!"),  "badly sorted, strar2r[0] is %s\n", strarr2[0]);
+    ok(!strcmp(strarr2[1], "Hello"),  "badly sorted, strarr2[1] is %s\n", strarr2[1]);
+    ok(!strcmp(strarr2[2], "Sorted"),  "badly sorted, strarr2[2] is %s\n", strarr2[2]);
+todo_wine {
+    ok(!strcmp(strarr2[3], "wine"),  "badly sorted, strarr2[3] is %s\n", strarr2[3]);
+    ok(!strcmp(strarr2[4], "WINE"),  "badly sorted, strarr2[4] is %s\n", strarr2[4]);
+    ok(!strcmp(strarr2[5], "Wine"),  "badly sorted, strarr2[5] is %s\n", strarr2[5]);
+}
+    ok(!strcmp(strarr2[6], "World"),  "badly sorted, strarr2[6] is %s\n", strarr2[6]);
 }
 
 static void test_bsearch(void)
-- 
2.19.1




More information about the wine-devel mailing list