1 #include "../w32knapi.h"
11 IN OPTIONAL LPBYTE pjInit
14 return (HBITMAP
)Syscall(L
"NtGdiCreateBitmap", 5, &cx
);
18 Test_NtGdiCreateBitmap_Params(PTESTINFO pti
)
22 BYTE BitmapData
[10] = {0x11, 0x22, 0x33};
24 /* Test simple params */
25 SetLastError(ERROR_SUCCESS
);
26 TEST((hBmp
= NtGdiCreateBitmap(1, 1, 1, 1, NULL
)) != NULL
);
27 TEST(GetLastError() == ERROR_SUCCESS
);
31 SetLastError(ERROR_SUCCESS
);
32 TEST(NtGdiCreateBitmap(0, 0, 0, 0, NULL
) == NULL
);
33 TEST(GetLastError() == ERROR_INVALID_PARAMETER
);
36 SetLastError(ERROR_SUCCESS
);
37 TEST(NtGdiCreateBitmap(0, 1, 1, 1, NULL
) == NULL
);
38 TEST(GetLastError() == ERROR_INVALID_PARAMETER
);
40 /* Test negative cx */
41 SetLastError(ERROR_SUCCESS
);
42 TEST(NtGdiCreateBitmap(-10, 1, 1, 1, NULL
) == NULL
);
43 TEST(GetLastError() == ERROR_INVALID_PARAMETER
);
46 SetLastError(ERROR_SUCCESS
);
47 TEST(NtGdiCreateBitmap(1, 0, 1, 1, NULL
) == NULL
);
48 TEST(GetLastError() == ERROR_INVALID_PARAMETER
);
50 /* Test negative cy */
51 SetLastError(ERROR_SUCCESS
);
52 TEST(NtGdiCreateBitmap(1, -2, 1, 1, NULL
) == NULL
);
53 TEST(GetLastError() == ERROR_INVALID_PARAMETER
);
55 /* Test negative cy */
56 SetLastError(ERROR_SUCCESS
);
57 TEST(NtGdiCreateBitmap(1, -2, 1, 1, BitmapData
) == NULL
);
58 TEST(GetLastError() == ERROR_SUCCESS
);
61 SetLastError(ERROR_SUCCESS
);
62 TEST(NtGdiCreateBitmap(100000, 100000, 1, 1, NULL
) == NULL
);
63 TEST(GetLastError() == ERROR_NOT_ENOUGH_MEMORY
);
65 /* Test cPlanes == 0 */
66 SetLastError(ERROR_SUCCESS
);
67 TEST((hBmp
= NtGdiCreateBitmap(1, 1, 0, 1, NULL
)) != NULL
);
68 TEST(GetLastError() == ERROR_SUCCESS
);
69 ASSERT1(GetObject(hBmp
, sizeof(BITMAP
), &bitmap
) == sizeof(BITMAP
));
70 TEST(bitmap
.bmType
== 0);
71 TEST(bitmap
.bmWidth
== 1);
72 TEST(bitmap
.bmHeight
== 1);
73 TEST(bitmap
.bmWidthBytes
== 2);
74 TEST(bitmap
.bmPlanes
== 1);
75 TEST(bitmap
.bmBitsPixel
== 1);
78 /* Test big cPlanes */
79 SetLastError(ERROR_SUCCESS
);
80 TEST((hBmp
= NtGdiCreateBitmap(1, 1, 32, 1, NULL
)) != NULL
);
81 TEST(GetLastError() == ERROR_SUCCESS
);
84 TEST(NtGdiCreateBitmap(1, 1, 33, 1, NULL
) == NULL
);
85 TEST(GetLastError() == ERROR_INVALID_PARAMETER
);
88 SetLastError(ERROR_SUCCESS
);
89 TEST((hBmp
= NtGdiCreateBitmap(1, 1, 1, 0, NULL
)) != NULL
);
90 TEST(GetLastError() == ERROR_SUCCESS
);
91 ASSERT1(GetObject(hBmp
, sizeof(BITMAP
), &bitmap
) == sizeof(BITMAP
));
92 TEST(bitmap
.bmType
== 0);
93 TEST(bitmap
.bmWidth
== 1);
94 TEST(bitmap
.bmHeight
== 1);
95 TEST(bitmap
.bmWidthBytes
== 2);
96 TEST(bitmap
.bmPlanes
== 1);
97 TEST(bitmap
.bmBitsPixel
== 1);
100 /* Test negative cBPP */
101 SetLastError(ERROR_SUCCESS
);
102 TEST(NtGdiCreateBitmap(1, 1, 1, -1, NULL
) == NULL
);
103 TEST(GetLastError() == ERROR_INVALID_PARAMETER
);
106 SetLastError(ERROR_SUCCESS
);
107 TEST((hBmp
= NtGdiCreateBitmap(1, 1, 1, 3, NULL
)) != NULL
);
108 ASSERT1(GetObject(hBmp
, sizeof(BITMAP
), &bitmap
) == sizeof(BITMAP
));
109 TEST(bitmap
.bmBitsPixel
== 4);
112 TEST((hBmp
= NtGdiCreateBitmap(1, 1, 1, 6, NULL
)) != NULL
);
113 ASSERT1(GetObject(hBmp
, sizeof(BITMAP
), &bitmap
) == sizeof(BITMAP
));
114 TEST(bitmap
.bmBitsPixel
== 8);
117 TEST((hBmp
= NtGdiCreateBitmap(1, 1, 1, 15, NULL
)) != NULL
);
118 ASSERT1(GetObject(hBmp
, sizeof(BITMAP
), &bitmap
) == sizeof(BITMAP
));
119 TEST(bitmap
.bmBitsPixel
== 16);
122 TEST((hBmp
= NtGdiCreateBitmap(1, 1, 1, 17, NULL
)) != NULL
);
123 ASSERT1(GetObject(hBmp
, sizeof(BITMAP
), &bitmap
) == sizeof(BITMAP
));
124 TEST(bitmap
.bmBitsPixel
== 24);
127 TEST((hBmp
= NtGdiCreateBitmap(1, 1, 3, 7, NULL
)) != NULL
);
128 ASSERT1(GetObject(hBmp
, sizeof(BITMAP
), &bitmap
) == sizeof(BITMAP
));
129 TEST(bitmap
.bmBitsPixel
== 24);
132 TEST((hBmp
= NtGdiCreateBitmap(1, 1, 1, 25, NULL
)) != NULL
);
133 ASSERT1(GetObject(hBmp
, sizeof(BITMAP
), &bitmap
) == sizeof(BITMAP
));
134 TEST(bitmap
.bmBitsPixel
== 32);
137 TEST(GetLastError() == ERROR_SUCCESS
);
139 TEST(NtGdiCreateBitmap(1, 1, 1, 33, NULL
) == NULL
);
140 TEST(GetLastError() == ERROR_INVALID_PARAMETER
);
142 /* Test bad pointer */
143 SetLastError(ERROR_SUCCESS
);
144 TEST(NtGdiCreateBitmap(1, 1, 1, 1, (BYTE
*)0x80001234) == NULL
);
145 TEST(GetLastError() == ERROR_SUCCESS
);
147 /* Test pointer alignment */
148 SetLastError(ERROR_SUCCESS
);
149 TEST((hBmp
= NtGdiCreateBitmap(1, 1, 1, 1, &BitmapData
[1])) != NULL
);
150 TEST(GetLastError() == ERROR_SUCCESS
);
153 /* Test normal params */
154 SetLastError(ERROR_SUCCESS
);
155 TEST((hBmp
= NtGdiCreateBitmap(5, 7, 2, 4, NULL
)) != NULL
);
156 TEST(GetLastError() == ERROR_SUCCESS
);
157 ASSERT1(GetObject(hBmp
, sizeof(BITMAP
), &bitmap
) == sizeof(BITMAP
));
158 TEST(bitmap
.bmType
== 0);
159 TEST(bitmap
.bmWidth
== 5);
160 TEST(bitmap
.bmHeight
== 7);
161 TEST(bitmap
.bmWidthBytes
== 6);
162 TEST(bitmap
.bmPlanes
== 1);
163 TEST(bitmap
.bmBitsPixel
== 8);
166 return APISTATUS_NORMAL
;
170 Test_NtGdiCreateBitmap(PTESTINFO pti
)
174 ret
= Test_NtGdiCreateBitmap_Params(pti
);
175 if (ret
!= APISTATUS_NORMAL
)
178 // ret = Test_NtGdiCreateBitmap_Pixel(pti);
179 // if (ret != APISTATUS_NORMAL)
182 return APISTATUS_NORMAL
;