ReactOS
0.4.15-dev-7108-g1cf6ce6
NtGdiCreateBitmap.c
Go to the documentation of this file.
1
/*
2
* PROJECT: ReactOS api tests
3
* LICENSE: GPL - See COPYING in the top level directory
4
* PURPOSE: Test for NtGdiCreateBitmap
5
* PROGRAMMERS:
6
*/
7
8
#include "../win32nt.h"
9
10
void
Test_NtGdiCreateBitmap_Params
(
void
)
11
{
12
HBITMAP
hBmp;
13
BITMAP
bitmap
;
14
BYTE
BitmapData
[10] = {0x11, 0x22, 0x33};
15
16
/* Test simple params */
17
SetLastError
(
ERROR_SUCCESS
);
18
ok
((hBmp =
NtGdiCreateBitmap
(1, 1, 1, 1,
NULL
)) !=
NULL
,
"hBmp was NULL.\n"
);
19
ok_long
(
GetLastError
(),
ERROR_SUCCESS
);
20
DeleteObject
(hBmp);
21
22
/* Test all zero */
23
SetLastError
(
ERROR_SUCCESS
);
24
ok_ptr
(
NtGdiCreateBitmap
(0, 0, 0, 0,
NULL
),
NULL
);
25
ok_long
(
GetLastError
(),
ERROR_INVALID_PARAMETER
);
26
27
/* Test cx == 0 */
28
SetLastError
(
ERROR_SUCCESS
);
29
ok_ptr
(
NtGdiCreateBitmap
(0, 1, 1, 1,
NULL
),
NULL
);
30
ok_long
(
GetLastError
(),
ERROR_INVALID_PARAMETER
);
31
32
/* Test negative cx */
33
SetLastError
(
ERROR_SUCCESS
);
34
ok_ptr
(
NtGdiCreateBitmap
(-10, 1, 1, 1,
NULL
),
NULL
);
35
ok_long
(
GetLastError
(),
ERROR_INVALID_PARAMETER
);
36
37
/* Test cy == 0 */
38
SetLastError
(
ERROR_SUCCESS
);
39
ok_ptr
(
NtGdiCreateBitmap
(1, 0, 1, 1,
NULL
),
NULL
);
40
ok_long
(
GetLastError
(),
ERROR_INVALID_PARAMETER
);
41
42
/* Test negative cy */
43
SetLastError
(
ERROR_SUCCESS
);
44
ok_ptr
(
NtGdiCreateBitmap
(1, -2, 1, 1,
NULL
),
NULL
);
45
ok_long
(
GetLastError
(),
ERROR_INVALID_PARAMETER
);
46
47
/* Test negative cy and valid bits */
48
SetLastError
(
ERROR_SUCCESS
);
49
ok_ptr
(
NtGdiCreateBitmap
(1, -2, 1, 1,
BitmapData
),
NULL
);
50
ok_long
(
GetLastError
(),
ERROR_SUCCESS
);
51
52
/* Test negative cy and invalid bits */
53
SetLastError
(
ERROR_SUCCESS
);
54
ok_ptr
(
NtGdiCreateBitmap
(1, -2, 1, 1, (
BYTE
*)(
LONG_PTR
)0x80001234),
NULL
);
55
ok_long
(
GetLastError
(),
ERROR_SUCCESS
);
56
57
/* Test huge size */
58
SetLastError
(
ERROR_SUCCESS
);
59
ok_ptr
(
NtGdiCreateBitmap
(100000, 100000, 1, 1,
NULL
),
NULL
);
60
ok_long
(
GetLastError
(),
ERROR_NOT_ENOUGH_MEMORY
);
61
62
/* Test huge size and valid bits */
63
SetLastError
(
ERROR_SUCCESS
);
64
TEST
(
NtGdiCreateBitmap
(1000, 1000, 1, 1,
BitmapData
) ==
NULL
);
65
ok_long
(
GetLastError
(),
ERROR_SUCCESS
);
66
67
/* Test huge size and invalid bits */
68
SetLastError
(
ERROR_SUCCESS
);
69
ok_ptr
(
NtGdiCreateBitmap
(100000, 100000, 1, 1, (
BYTE
*)(
LONG_PTR
)0x80001234),
NULL
);
70
ok_long
(
GetLastError
(),
ERROR_SUCCESS
);
71
72
/* Test cPlanes == 0 */
73
SetLastError
(
ERROR_SUCCESS
);
74
ok
((hBmp =
NtGdiCreateBitmap
(1, 1, 0, 1,
NULL
)) !=
NULL
,
"hBmp was NULL.\n"
);
75
ok_long
(
GetLastError
(),
ERROR_SUCCESS
);
76
ok_int
(
GetObject
(hBmp,
sizeof
(
BITMAP
), &
bitmap
), (
int
)
sizeof
(
BITMAP
));
77
ok_int
(
bitmap
.bmType, 0);
78
ok_int
(
bitmap
.bmWidth, 1);
79
ok_int
(
bitmap
.bmHeight, 1);
80
ok_int
(
bitmap
.bmWidthBytes, 2);
81
ok_int
(
bitmap
.bmPlanes, 1);
82
ok_int
(
bitmap
.bmBitsPixel, 1);
83
DeleteObject
(hBmp);
84
85
/* Test big cPlanes */
86
SetLastError
(
ERROR_SUCCESS
);
87
ok
((hBmp =
NtGdiCreateBitmap
(1, 1, 32, 1,
NULL
)) !=
NULL
,
"hBmp was NULL.\n"
);
88
ok_long
(
GetLastError
(),
ERROR_SUCCESS
);
89
DeleteObject
(hBmp);
90
91
ok_ptr
(
NtGdiCreateBitmap
(1, 1, 33, 1,
NULL
),
NULL
);
92
ok_long
(
GetLastError
(),
ERROR_INVALID_PARAMETER
);
93
94
/* Test cBPP == 0 */
95
SetLastError
(
ERROR_SUCCESS
);
96
ok
((hBmp =
NtGdiCreateBitmap
(1, 1, 1, 0,
NULL
)) !=
NULL
,
"hBmp was NULL.\n"
);
97
ok_long
(
GetLastError
(),
ERROR_SUCCESS
);
98
ok_int
(
GetObject
(hBmp,
sizeof
(
BITMAP
), &
bitmap
), (
int
)
sizeof
(
BITMAP
));
99
ok_int
(
bitmap
.bmType, 0);
100
ok_int
(
bitmap
.bmWidth, 1);
101
ok_int
(
bitmap
.bmHeight, 1);
102
ok_int
(
bitmap
.bmWidthBytes, 2);
103
ok_int
(
bitmap
.bmPlanes, 1);
104
ok_int
(
bitmap
.bmBitsPixel, 1);
105
DeleteObject
(hBmp);
106
107
/* Test negative cBPP */
108
SetLastError
(
ERROR_SUCCESS
);
109
ok_ptr
(
NtGdiCreateBitmap
(1, 1, 1, -1,
NULL
),
NULL
);
110
ok_long
(
GetLastError
(),
ERROR_INVALID_PARAMETER
);
111
112
/* Test bad cBPP */
113
SetLastError
(
ERROR_SUCCESS
);
114
ok
((hBmp =
NtGdiCreateBitmap
(1, 1, 1, 3,
NULL
)) !=
NULL
,
"hBmp was NULL.\n"
);
115
ok_int
(
GetObject
(hBmp,
sizeof
(
BITMAP
), &
bitmap
), (
int
)
sizeof
(
BITMAP
));
116
ok_int
(
bitmap
.bmBitsPixel, 4);
117
DeleteObject
(hBmp);
118
119
ok
((hBmp =
NtGdiCreateBitmap
(1, 1, 1, 6,
NULL
)) !=
NULL
,
"hBmp was NULL.\n"
);
120
ok_int
(
GetObject
(hBmp,
sizeof
(
BITMAP
), &
bitmap
), (
int
)
sizeof
(
BITMAP
));
121
ok_int
(
bitmap
.bmBitsPixel, 8);
122
DeleteObject
(hBmp);
123
124
ok
((hBmp =
NtGdiCreateBitmap
(1, 1, 1, 15,
NULL
)) !=
NULL
,
"hBmp was NULL.\n"
);
125
ok_int
(
GetObject
(hBmp,
sizeof
(
BITMAP
), &
bitmap
), (
int
)
sizeof
(
BITMAP
));
126
ok_int
(
bitmap
.bmBitsPixel, 16);
127
DeleteObject
(hBmp);
128
129
ok
((hBmp =
NtGdiCreateBitmap
(1, 1, 1, 17,
NULL
)) !=
NULL
,
"hBmp was NULL.\n"
);
130
ok_int
(
GetObject
(hBmp,
sizeof
(
BITMAP
), &
bitmap
), (
int
)
sizeof
(
BITMAP
));
131
ok_int
(
bitmap
.bmBitsPixel, 24);
132
DeleteObject
(hBmp);
133
134
ok
((hBmp =
NtGdiCreateBitmap
(1, 1, 3, 7,
NULL
)) !=
NULL
,
"hBmp was NULL.\n"
);
135
ok_int
(
GetObject
(hBmp,
sizeof
(
BITMAP
), &
bitmap
), (
int
)
sizeof
(
BITMAP
));
136
ok_int
(
bitmap
.bmBitsPixel, 24);
137
DeleteObject
(hBmp);
138
139
ok
((hBmp =
NtGdiCreateBitmap
(1, 1, 1, 25,
NULL
)) !=
NULL
,
"hBmp was NULL.\n"
);
140
ok_int
(
GetObject
(hBmp,
sizeof
(
BITMAP
), &
bitmap
), (
int
)
sizeof
(
BITMAP
));
141
ok_int
(
bitmap
.bmBitsPixel, 32);
142
DeleteObject
(hBmp);
143
144
ok_long
(
GetLastError
(),
ERROR_SUCCESS
);
145
146
ok_ptr
(
NtGdiCreateBitmap
(1, 1, 1, 33,
NULL
),
NULL
);
147
ok_long
(
GetLastError
(),
ERROR_INVALID_PARAMETER
);
148
149
/* Test bad pointer */
150
SetLastError
(
ERROR_SUCCESS
);
151
ok_ptr
(
NtGdiCreateBitmap
(1, 1, 1, 1, (
BYTE
*)(
LONG_PTR
)0x80001234),
NULL
);
152
ok_long
(
GetLastError
(),
ERROR_SUCCESS
);
153
154
/* Test pointer alignment */
155
SetLastError
(
ERROR_SUCCESS
);
156
ok
((hBmp =
NtGdiCreateBitmap
(1, 1, 1, 1, &
BitmapData
[1])) !=
NULL
,
"hBmp was NULL.\n"
);
157
ok_long
(
GetLastError
(),
ERROR_SUCCESS
);
158
DeleteObject
(hBmp);
159
160
/* Test normal params */
161
SetLastError
(
ERROR_SUCCESS
);
162
ok
((hBmp =
NtGdiCreateBitmap
(5, 7, 2, 4,
NULL
)) !=
NULL
,
"hBmp was NULL.\n"
);
163
ok_long
(
GetLastError
(),
ERROR_SUCCESS
);
164
ok_int
(
GetObject
(hBmp,
sizeof
(
BITMAP
), &
bitmap
), (
int
)
sizeof
(
BITMAP
));
165
ok_int
(
bitmap
.bmType, 0);
166
ok_int
(
bitmap
.bmWidth, 5);
167
ok_int
(
bitmap
.bmHeight, 7);
168
ok_int
(
bitmap
.bmWidthBytes, 6);
169
ok_int
(
bitmap
.bmPlanes, 1);
170
ok_int
(
bitmap
.bmBitsPixel, 8);
171
DeleteObject
(hBmp);
172
173
174
/* Test height 0 params */
175
SetLastError
(
ERROR_SUCCESS
);
176
ok_ptr
(
NtGdiCreateBitmap
(1, 0, 1, 1,
NULL
),
NULL
);
177
ok_long
(
GetLastError
(),
ERROR_INVALID_PARAMETER
);
178
179
/* Test height -1 params */
180
SetLastError
(
ERROR_SUCCESS
);
181
ok_ptr
(
NtGdiCreateBitmap
(1, -1, 1, 1,
NULL
),
NULL
);
182
ok_long
(
GetLastError
(),
ERROR_INVALID_PARAMETER
);
183
184
/* Test witdth 0 params */
185
SetLastError
(
ERROR_SUCCESS
);
186
ok_ptr
(
NtGdiCreateBitmap
(0, 1, 1, 1,
NULL
),
NULL
);
187
ok_long
(
GetLastError
(),
ERROR_INVALID_PARAMETER
);
188
189
/* Test witdth -1 params */
190
SetLastError
(
ERROR_SUCCESS
);
191
ok_ptr
(
NtGdiCreateBitmap
(-1, 0, 1, 1,
NULL
),
NULL
);
192
ok_long
(
GetLastError
(),
ERROR_INVALID_PARAMETER
);
193
194
/* Test witdth -1 params */
195
SetLastError
(
ERROR_SUCCESS
);
196
ok_ptr
(
NtGdiCreateBitmap
(0, 0, 1, 1,
NULL
),
NULL
);
197
ok_long
(
GetLastError
(),
ERROR_INVALID_PARAMETER
);
198
}
199
200
START_TEST
(
NtGdiCreateBitmap
)
201
{
202
203
Test_NtGdiCreateBitmap_Params
();
204
// Test_NtGdiCreateBitmap_Pixel();
205
206
}
Test_NtGdiCreateBitmap_Params
void Test_NtGdiCreateBitmap_Params(void)
Definition:
NtGdiCreateBitmap.c:10
ok_long
#define ok_long(expression, result)
Definition:
atltest.h:133
ok
#define ok(value,...)
Definition:
atltest.h:57
START_TEST
#define START_TEST(x)
Definition:
atltest.h:75
ok_int
#define ok_int(expression, result)
Definition:
atltest.h:134
ok_ptr
#define ok_ptr(expression, result)
Definition:
atltest.h:108
ERROR_NOT_ENOUGH_MEMORY
#define ERROR_NOT_ENOUGH_MEMORY
Definition:
dderror.h:7
ERROR_SUCCESS
#define ERROR_SUCCESS
Definition:
deptool.c:10
NULL
#define NULL
Definition:
types.h:112
ERROR_INVALID_PARAMETER
#define ERROR_INVALID_PARAMETER
Definition:
compat.h:101
SetLastError
#define SetLastError(x)
Definition:
compat.h:752
DeleteObject
pKey DeleteObject()
TEST
#define TEST(x)
Definition:
precomp.h:20
HBITMAP
static HBITMAP
Definition:
button.c:44
LONG_PTR
__int3264 LONG_PTR
Definition:
mstsclib_h.h:276
NtGdiCreateBitmap
__kernel_entry W32KAPI HBITMAP APIENTRY NtGdiCreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBPP, _In_opt_ LPBYTE pjInit)
BitmapData
Definition:
gdiplusimaging.h:176
_BITMAP
Definition:
bl.h:1331
bitmap
Definition:
uimain.c:89
GetLastError
DWORD WINAPI GetLastError(void)
Definition:
except.c:1042
GetObject
#define GetObject
Definition:
wingdi.h:4468
BYTE
unsigned char BYTE
Definition:
xxhash.c:193
modules
rostests
apitests
win32nt
ntgdi
NtGdiCreateBitmap.c
Generated on Sat Dec 2 2023 06:07:20 for ReactOS by
1.9.6