[USER32_APITEST]
authorThomas Faber <thomas.faber@reactos.org>
Sat, 4 Mar 2017 18:34:35 +0000 (18:34 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Sat, 4 Mar 2017 18:34:35 +0000 (18:34 +0000)
- Add a test for SetScrollRange
CORE-12763

svn path=/trunk/; revision=74058

rostests/apitests/user32/CMakeLists.txt
rostests/apitests/user32/SetScrollRange.c [new file with mode: 0644]
rostests/apitests/user32/testlist.c

index d16c020..2565662 100644 (file)
@@ -32,6 +32,7 @@ list(APPEND SOURCE
     SetParent.c
     SetProp.c
     SetScrollInfo.c
+    SetScrollRange.c
     SystemParametersInfo.c
     TrackMouseEvent.c
     WndProc.c
diff --git a/rostests/apitests/user32/SetScrollRange.c b/rostests/apitests/user32/SetScrollRange.c
new file mode 100644 (file)
index 0000000..f73db6b
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * PROJECT:         ReactOS API tests
+ * LICENSE:         LGPLv2.1+ - See COPYING.LIB in the top level directory
+ * PURPOSE:         Test for SetScrollRange
+ * PROGRAMMERS:     Thomas Faber <thomas.faber@reactos.org>
+ */
+
+#include <apitest.h>
+
+#include <wingdi.h>
+#include <winuser.h>
+
+START_TEST(SetScrollRange)
+{
+    struct
+    {
+        INT nMin;
+        INT nMax;
+        BOOL result;
+    } tests[] =
+    {
+        {  0,                0,     TRUE },
+        {  0,          INT_MAX,     TRUE },
+        { -1,          INT_MAX,     FALSE },
+        { INT_MIN,     INT_MAX,     FALSE },
+        { INT_MIN,     0,           FALSE },
+        { INT_MIN,     -1,          TRUE },
+    };
+    unsigned i;
+    HWND hScroll;
+    BOOL success;
+    DWORD error;
+    INT newMin, newMax;
+
+    hScroll = CreateWindowExW(0, L"SCROLLBAR", NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL);
+    ok(hScroll != NULL, "CreateWindowEx failed with %lu\n", GetLastError());
+    if (!hScroll)
+    {
+        skip("No scroll bar\n");
+        return;
+    }
+
+    for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++)
+    {
+        (void)SetScrollRange(hScroll, SB_CTL, 123, 456, FALSE);
+        SetLastError(0xdeaff00d);
+        success = SetScrollRange(hScroll, SB_CTL, tests[i].nMin, tests[i].nMax, FALSE);
+        error = GetLastError();
+        (void)GetScrollRange(hScroll, SB_CTL, &newMin, &newMax);
+        if (tests[i].result)
+        {
+            ok(success == TRUE, "SetScrollRange(%d, %d) failed with %d %lu\n", tests[i].nMin, tests[i].nMax, success, error);
+            ok(newMin == tests[i].nMin, "nMin was changed to %d\n", tests[i].nMin);
+            ok(newMax == tests[i].nMax, "nMax was changed to %d\n", tests[i].nMax);
+        }
+        else
+        {
+            ok(success == FALSE, "SetScrollRange(%d, %d) succeeded with %d\n", tests[i].nMin, tests[i].nMax, success);
+            ok(error == ERROR_INVALID_SCROLLBAR_RANGE, "Error %lu\n", error);
+            ok(newMin == 123, "nMin was changed to %d\n", newMin);
+            ok(newMax == 456, "nMax was changed to %d\n", newMax);
+        }
+    }
+
+    DestroyWindow(hScroll);
+}
index e5194f7..74db390 100644 (file)
@@ -34,6 +34,7 @@ extern void func_SetCursorPos(void);
 extern void func_SetParent(void);
 extern void func_SetProp(void);
 extern void func_SetScrollInfo(void);
+extern void func_SetScrollRange(void);
 extern void func_SystemParametersInfo(void);
 extern void func_TrackMouseEvent(void);
 extern void func_WndProc(void);
@@ -72,6 +73,7 @@ const struct test winetest_testlist[] =
     { "SetParent", func_SetParent },
     { "SetProp", func_SetProp },
     { "SetScrollInfo", func_SetScrollInfo },
+    { "SetScrollRange", func_SetScrollRange },
     { "SystemParametersInfo", func_SystemParametersInfo },
     { "TrackMouseEvent", func_TrackMouseEvent },
     { "WndProc", func_WndProc },