2 * PROJECT: ReactOS api tests
3 * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory
4 * PURPOSE: Test for SetScrollInfo
5 * PROGRAMMERS: Thomas Faber <thomas.faber@reactos.org>
13 START_TEST(SetScrollInfo
)
27 /* min max pg pos min max pg pos */
28 /* [0] */ { 0, 0, 0, 0, 0, 0, 0, 0 },
29 { 0, 0, 1, 1, 0, 0, 1, 0 },
32 { 5, 10, 0, 0, 5, 10, 0, 5 },
33 { 5, 10, 1, 0, 5, 10, 1, 5 },
34 { 5, 10, 4, 0, 5, 10, 4, 5 },
35 /* [5] */ { 5, 10, 5, 0, 5, 10, 5, 5 },
36 { 5, 10, 6, 0, 5, 10, 6, 5 },
37 { 5, 10, 7, 0, 5, 10, 6, 5 },
38 { 5, 10, 10, 0, 5, 10, 6, 5 },
39 { 5, 10, 11, 0, 5, 10, 6, 5 },
40 /* [10] */ { 5, 10, 0xffffffff, 0, 5, 10, 6, 5 },
43 { 5, 10, 0, 4, 5, 10, 0, 5 },
44 { 5, 10, 0, 5, 5, 10, 0, 5 },
45 { 5, 10, 0, 10, 5, 10, 0, 10 },
46 { 5, 10, 0, 11, 5, 10, 0, 10 },
47 /* [15] */ { 5, 10, 0, -1, 5, 10, 0, 5 },
48 { 5, 10, 0, 0x80000000, 5, 10, 0, 5 },
49 { 5, 10, 0, 0x7fffffff, 5, 10, 0, 10 },
51 /* maximum nPos depends on nPage */
52 { 5, 10, 0, 9, 5, 10, 0, 9 },
53 { 5, 10, 0, 10, 5, 10, 0, 10 },
54 /* [20] */ { 5, 10, 0, 11, 5, 10, 0, 10 },
55 { 5, 10, 1, 9, 5, 10, 1, 9 },
56 { 5, 10, 1, 10, 5, 10, 1, 10 },
57 { 5, 10, 1, 11, 5, 10, 1, 10 },
58 { 5, 10, 2, 9, 5, 10, 2, 9 },
59 /* [25] */ { 5, 10, 2, 10, 5, 10, 2, 9 },
60 { 5, 10, 2, 11, 5, 10, 2, 9 },
61 { 5, 10, 3, 9, 5, 10, 3, 8 },
62 { 5, 10, 3, 10, 5, 10, 3, 8 },
63 { 5, 10, 3, 11, 5, 10, 3, 8 },
65 /* relation between min and max? */
66 /* min max pg pos min max pg pos */
67 /* [30] */ { 5, 6, 0, 0, 5, 6, 0, 5 },
68 { 5, 5, 0, 0, 5, 5, 0, 5 },
69 { 6, 5, 0, 0, 6, 6, 0, 6 },
70 { 7, 5, 0, 0, 7, 7, 0, 7 },
71 { -2, 0, 0, 0, -2, 0, 0, 0 },
72 /* [35] */ { -2, -1, 0, 0, -2, -1, 0, -1 },
73 { -1, 0, 0, 0, -1, 0, 0, 0 },
74 { -1, -1, 0, 0, -1, -1, 0, -1 },
75 { 0, -1, 0, 0, 0, 0, 0, 0 },
76 { 1, -1, 0, 0, 1, 1, 0, 1 },
77 /* [40] */ { 0x80000000, 0x7fffffff, 0, 0, 0x80000000, 0x7fffffff, 0, 0 },
78 { 0x80000001, 0x7fffffff, 0, 0, 0x80000001, 0x7fffffff, 0, 0 },
79 { 0x80000000, 0x7ffffffe, 0, 0, 0x80000000, 0x7ffffffe, 0, 0 },
80 { 0x7fffffff, 0x80000000, 0, 0, 0x7fffffff, 0x7fffffff, 0, 0x7fffffff },
81 { 0, 0x7fffffff, 0, 0, 0, 0x7fffffff, 0, 0 },
82 /* [45] */ { -1, 0x7fffffff, 0, 0, -1, 0x7fffffff, 0, 0 },
83 { -2, 0x7fffffff, 0, 0, -2, 0x7fffffff, 0, 0 },
85 /* What happens to nPage when we have a large range? */
86 { 0x80000000, 0x7fffffff, 1, 5, 0x80000000, 0x7fffffff, 1, 5 },
87 { 0x80000000, 0x7fffffff, 2, 5, 0x80000000, 0x7fffffff, 2, 5 },
88 { 0x80000000, 0x7fffffff, 3, 5, 0x80000000, 0x7fffffff, 2, 5 },
89 /* [50] */ { 0x80000000, 0x7fffffff, 0x7fffffff, 5, 0x80000000, 0x7fffffff, 2, 5 },
90 { 0x80000000, 0x7fffffff, 0x80000000, 5, 0x80000000, 0x7fffffff, 2, 5 },
91 { 0x80000000, 0x7fffffff, 0x80000001, 5, 0x80000000, 0x7fffffff, 2, 5 },
92 { 0x80000000, 0x7fffffff, 0xffffffff, 5, 0x80000000, 0x7fffffff, 2, 5 },
93 { 0x80000001, 0x7fffffff, 1, 5, 0x80000001, 0x7fffffff, 1, 5 },
94 /* [55] */ { 0x80000001, 0x7fffffff, 2, 5, 0x80000001, 0x7fffffff, 2, 5 },
95 { 0x80000001, 0x7fffffff, 3, 5, 0x80000001, 0x7fffffff, 3, 5 },
96 { 0x80000001, 0x7fffffff, 4, 5, 0x80000001, 0x7fffffff, 3, 5 },
97 { 0x80000000, 0x7ffffffe, 1, 5, 0x80000000, 0x7ffffffe, 1, 5 },
98 { 0x80000000, 0x7ffffffe, 2, 5, 0x80000000, 0x7ffffffe, 2, 5 },
99 /* [60] */ { 0x80000000, 0x7ffffffe, 3, 5, 0x80000000, 0x7ffffffe, 3, 5 },
100 { 0x80000000, 0x7ffffffe, 4, 5, 0x80000000, 0x7ffffffe, 3, 5 },
101 { 0, 0x7fffffff, 0x7fffffff, 5, 0, 0x7fffffff, 0x7fffffff, 1 },
102 { 0, 0x7fffffff, 0x80000000, 5, 0, 0x7fffffff, 0x80000000, 0 },
103 { 0, 0x7fffffff, 0x80000001, 5, 0, 0x7fffffff, 0x80000000, 0 },
104 /* [65] */ { 0, 0x7fffffff, 0x80000002, 5, 0, 0x7fffffff, 0x80000000, 0 },
105 { -1, 0x7fffffff, 0x7fffffff, 5, -1, 0x7fffffff, 0x7fffffff, 1 },
106 { -1, 0x7fffffff, 0x80000000, 5, -1, 0x7fffffff, 0x80000000, 0 },
107 { -1, 0x7fffffff, 0x80000001, 5, -1, 0x7fffffff, 0x80000001, -1 },
108 { -1, 0x7fffffff, 0x80000002, 5, -1, 0x7fffffff, 0x80000001, -1 },
109 /* [70] */ { -1, 0x7fffffff, 0x80000003, 5, -1, 0x7fffffff, 0x80000001, -1 },
110 { -2, 0x7fffffff, 0x80000000, 5, -2, 0x7fffffff, 0x80000000, 0 },
111 { -2, 0x7fffffff, 0x80000001, 5, -2, 0x7fffffff, 0x80000000, 0 },
112 { 0xf0000000, 0x7fffffff, 0x90000000, 5, 0xf0000000, 0x7fffffff, 0x70000002, 5 },
113 { 0xf0000000, 0x7fffffff, 0x90000001, 5, 0xf0000000, 0x7fffffff, 0x70000002, 5 },
121 hScroll
= CreateWindowExW(0, L
"SCROLLBAR", NULL
, 0, 0, 0, 0, 0, NULL
, NULL
, NULL
, NULL
);
122 ok(hScroll
!= NULL
, "\n");
125 skip("No scroll bar\n");
129 si
.cbSize
= sizeof(si
);
130 si
.fMask
= SIF_PAGE
| SIF_POS
| SIF_RANGE
;
131 success
= GetScrollInfo(hScroll
, SB_CTL
, &si
);
132 ok(success
== TRUE
, "GetScrollInfo returned %d\n", success
);
133 ok(si
.nMin
== 0, "nMin = %d\n", si
.nMin
);
134 ok(si
.nMax
== 0, "nMax = %d\n", si
.nMax
);
135 ok(si
.nPage
== 0, "nPage = %u\n", si
.nPage
);
136 ok(si
.nPos
== 0, "nPos = %d\n", si
.nPos
);
138 for (i
= 0; i
< sizeof(tests
) / sizeof(tests
[0]); i
++)
140 si
.cbSize
= sizeof(si
);
141 si
.fMask
= SIF_PAGE
| SIF_POS
| SIF_RANGE
;
142 si
.nMin
= tests
[i
].nMin
;
143 si
.nMax
= tests
[i
].nMax
;
144 si
.nPage
= tests
[i
].nPage
;
145 si
.nPos
= tests
[i
].nPos
;
146 ret
= SetScrollInfo(hScroll
, SB_CTL
, &si
, FALSE
);
147 ok(ret
== tests
[i
].nPosResult
, "[%d] ret = %d, expected %d\n", i
, ret
, tests
[i
].nPosResult
);
149 FillMemory(&si
, sizeof(si
), 0x55);
150 si
.cbSize
= sizeof(si
);
151 si
.fMask
= SIF_PAGE
| SIF_POS
| SIF_RANGE
;
152 success
= GetScrollInfo(hScroll
, SB_CTL
, &si
);
153 ok(success
== TRUE
, "[%d] GetScrollInfo returned %d\n", i
, success
);
154 ok(si
.nMin
== tests
[i
].nMinResult
, "[%d] nMin = %d, expected %d\n", i
, si
.nMin
, tests
[i
].nMinResult
);
155 ok(si
.nMax
== tests
[i
].nMaxResult
, "[%d] nMax = %d, expected %d\n", i
, si
.nMax
, tests
[i
].nMaxResult
);
156 ok(si
.nPage
== tests
[i
].nPageResult
, "[%d] nPage = %u, expected %u\n", i
, si
.nPage
, tests
[i
].nPageResult
);
157 ok(si
.nPos
== tests
[i
].nPosResult
, "[%d] nPos = %d, expected %d\n", i
, si
.nPos
, tests
[i
].nPosResult
);
159 DestroyWindow(hScroll
);