Set svn:eol-style "native" for all apitest stuff
[reactos.git] / rostests / apitests / w32knapi / ntgdi / NtGdiCreateBitmap.c
1 INT
2 Test_NtGdiCreateBitmap_Params(PTESTINFO pti)
3 {
4 HBITMAP hBmp;
5 BITMAP bitmap;
6 BYTE BitmapData[10] = {0x11, 0x22, 0x33};
7
8 /* Test simple params */
9 SetLastError(ERROR_SUCCESS);
10 TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 1, NULL)) != NULL);
11 TEST(GetLastError() == ERROR_SUCCESS);
12 DeleteObject(hBmp);
13
14 /* Test all zero */
15 SetLastError(ERROR_SUCCESS);
16 TEST(NtGdiCreateBitmap(0, 0, 0, 0, NULL) == NULL);
17 TEST(GetLastError() == ERROR_INVALID_PARAMETER);
18
19 /* Test cx == 0 */
20 SetLastError(ERROR_SUCCESS);
21 TEST(NtGdiCreateBitmap(0, 1, 1, 1, NULL) == NULL);
22 TEST(GetLastError() == ERROR_INVALID_PARAMETER);
23
24 /* Test negative cx */
25 SetLastError(ERROR_SUCCESS);
26 TEST(NtGdiCreateBitmap(-10, 1, 1, 1, NULL) == NULL);
27 TEST(GetLastError() == ERROR_INVALID_PARAMETER);
28
29 /* Test cy == 0 */
30 SetLastError(ERROR_SUCCESS);
31 TEST(NtGdiCreateBitmap(1, 0, 1, 1, NULL) == NULL);
32 TEST(GetLastError() == ERROR_INVALID_PARAMETER);
33
34 /* Test negative cy */
35 SetLastError(ERROR_SUCCESS);
36 TEST(NtGdiCreateBitmap(1, -2, 1, 1, NULL) == NULL);
37 TEST(GetLastError() == ERROR_INVALID_PARAMETER);
38
39 /* Test negative cy */
40 SetLastError(ERROR_SUCCESS);
41 TEST(NtGdiCreateBitmap(1, -2, 1, 1, BitmapData) == NULL);
42 TEST(GetLastError() == ERROR_SUCCESS);
43
44 /* Test huge size */
45 SetLastError(ERROR_SUCCESS);
46 TEST(NtGdiCreateBitmap(100000, 100000, 1, 1, NULL) == NULL);
47 TEST(GetLastError() == ERROR_NOT_ENOUGH_MEMORY);
48
49 /* Test cPlanes == 0 */
50 SetLastError(ERROR_SUCCESS);
51 TEST((hBmp = NtGdiCreateBitmap(1, 1, 0, 1, NULL)) != NULL);
52 TEST(GetLastError() == ERROR_SUCCESS);
53 ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
54 TEST(bitmap.bmType == 0);
55 TEST(bitmap.bmWidth == 1);
56 TEST(bitmap.bmHeight == 1);
57 TEST(bitmap.bmWidthBytes == 2);
58 TEST(bitmap.bmPlanes == 1);
59 TEST(bitmap.bmBitsPixel == 1);
60 DeleteObject(hBmp);
61
62 /* Test big cPlanes */
63 SetLastError(ERROR_SUCCESS);
64 TEST((hBmp = NtGdiCreateBitmap(1, 1, 32, 1, NULL)) != NULL);
65 TEST(GetLastError() == ERROR_SUCCESS);
66 DeleteObject(hBmp);
67
68 TEST(NtGdiCreateBitmap(1, 1, 33, 1, NULL) == NULL);
69 TEST(GetLastError() == ERROR_INVALID_PARAMETER);
70
71 /* Test cBPP == 0 */
72 SetLastError(ERROR_SUCCESS);
73 TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 0, NULL)) != NULL);
74 TEST(GetLastError() == ERROR_SUCCESS);
75 ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
76 TEST(bitmap.bmType == 0);
77 TEST(bitmap.bmWidth == 1);
78 TEST(bitmap.bmHeight == 1);
79 TEST(bitmap.bmWidthBytes == 2);
80 TEST(bitmap.bmPlanes == 1);
81 TEST(bitmap.bmBitsPixel == 1);
82 DeleteObject(hBmp);
83
84 /* Test negative cBPP */
85 SetLastError(ERROR_SUCCESS);
86 TEST(NtGdiCreateBitmap(1, 1, 1, -1, NULL) == NULL);
87 TEST(GetLastError() == ERROR_INVALID_PARAMETER);
88
89 /* Test bad cBPP */
90 SetLastError(ERROR_SUCCESS);
91 TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 3, NULL)) != NULL);
92 ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
93 TEST(bitmap.bmBitsPixel == 4);
94 DeleteObject(hBmp);
95
96 TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 6, NULL)) != NULL);
97 ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
98 TEST(bitmap.bmBitsPixel == 8);
99 DeleteObject(hBmp);
100
101 TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 15, NULL)) != NULL);
102 ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
103 TEST(bitmap.bmBitsPixel == 16);
104 DeleteObject(hBmp);
105
106 TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 17, NULL)) != NULL);
107 ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
108 TEST(bitmap.bmBitsPixel == 24);
109 DeleteObject(hBmp);
110
111 TEST((hBmp = NtGdiCreateBitmap(1, 1, 3, 7, NULL)) != NULL);
112 ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
113 TEST(bitmap.bmBitsPixel == 24);
114 DeleteObject(hBmp);
115
116 TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 25, NULL)) != NULL);
117 ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
118 TEST(bitmap.bmBitsPixel == 32);
119 DeleteObject(hBmp);
120
121 TEST(GetLastError() == ERROR_SUCCESS);
122
123 TEST(NtGdiCreateBitmap(1, 1, 1, 33, NULL) == NULL);
124 TEST(GetLastError() == ERROR_INVALID_PARAMETER);
125
126 /* Test bad pointer */
127 SetLastError(ERROR_SUCCESS);
128 TEST(NtGdiCreateBitmap(1, 1, 1, 1, (BYTE*)0x80001234) == NULL);
129 TEST(GetLastError() == ERROR_SUCCESS);
130
131 /* Test pointer alignment */
132 SetLastError(ERROR_SUCCESS);
133 TEST((hBmp = NtGdiCreateBitmap(1, 1, 1, 1, &BitmapData[1])) != NULL);
134 TEST(GetLastError() == ERROR_SUCCESS);
135 DeleteObject(hBmp);
136
137 /* Test normal params */
138 SetLastError(ERROR_SUCCESS);
139 TEST((hBmp = NtGdiCreateBitmap(5, 7, 2, 4, NULL)) != NULL);
140 TEST(GetLastError() == ERROR_SUCCESS);
141 ASSERT(GetObject(hBmp, sizeof(BITMAP), &bitmap) == sizeof(BITMAP));
142 TEST(bitmap.bmType == 0);
143 TEST(bitmap.bmWidth == 5);
144 TEST(bitmap.bmHeight == 7);
145 TEST(bitmap.bmWidthBytes == 6);
146 TEST(bitmap.bmPlanes == 1);
147 TEST(bitmap.bmBitsPixel == 8);
148 DeleteObject(hBmp);
149
150
151 /* Test height 0 params */
152 SetLastError(ERROR_SUCCESS);
153 TEST((hBmp = NtGdiCreateBitmap(1, 0, 1, 1, NULL)) == NULL);
154 TEST(GetLastError() == ERROR_INVALID_PARAMETER);
155
156 /* Test height -1 params */
157 SetLastError(ERROR_SUCCESS);
158 TEST((hBmp = NtGdiCreateBitmap(1, -1, 1, 1, NULL)) == NULL);
159 TEST(GetLastError() == ERROR_INVALID_PARAMETER);
160
161 /* Test witdth 0 params */
162 SetLastError(ERROR_SUCCESS);
163 TEST((hBmp = NtGdiCreateBitmap(0, 1, 1, 1, NULL)) == NULL);
164 TEST(GetLastError() == ERROR_INVALID_PARAMETER);
165
166 /* Test witdth -1 params */
167 SetLastError(ERROR_SUCCESS);
168 TEST((hBmp = NtGdiCreateBitmap(-1, 0, 1, 1, NULL)) == NULL);
169 TEST(GetLastError() == ERROR_INVALID_PARAMETER);
170
171
172 /* Test witdth -1 params */
173 SetLastError(ERROR_SUCCESS);
174 TEST((hBmp = NtGdiCreateBitmap(0, 0, 1, 1, NULL)) == NULL);
175 TEST(GetLastError() == ERROR_INVALID_PARAMETER);
176
177
178 return APISTATUS_NORMAL;
179 }
180
181 INT
182 Test_NtGdiCreateBitmap(PTESTINFO pti)
183 {
184 INT ret;
185
186 ret = Test_NtGdiCreateBitmap_Params(pti);
187 if (ret != APISTATUS_NORMAL)
188 return ret;
189
190 // ret = Test_NtGdiCreateBitmap_Pixel(pti);
191 // if (ret != APISTATUS_NORMAL)
192 // return ret;
193
194 return APISTATUS_NORMAL;
195
196 }