1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
|
#+build windows
package test_core_sys_windows // generated by win32gen
import "core:testing"
import win32 "core:sys/windows"
@(test)
verify_win32_type_sizes :: proc(t: ^testing.T) {
// minwindef.h
expect_size(t, win32.ULONG, 4)
expect_size(t, win32.PULONG, 8)
expect_size(t, win32.USHORT, 2)
expect_size(t, win32.PUSHORT, 8)
expect_size(t, win32.UCHAR, 1)
expect_size(t, win32.DWORD, 4)
expect_size(t, win32.BOOL, 4)
expect_size(t, win32.BYTE, 1)
expect_size(t, win32.WORD, 2)
expect_size(t, win32.PBOOL, 8)
expect_size(t, win32.LPBOOL, 8)
expect_size(t, win32.PBYTE, 8)
expect_size(t, win32.LPBYTE, 8)
expect_size(t, win32.PINT, 8)
expect_size(t, win32.LPINT, 8)
expect_size(t, win32.LPWORD, 8)
expect_size(t, win32.PDWORD, 8)
expect_size(t, win32.LPDWORD, 8)
expect_size(t, win32.LPVOID, 8)
expect_size(t, win32.LPCVOID, 8)
expect_size(t, win32.INT, 4)
expect_size(t, win32.UINT, 4)
expect_size(t, win32.PUINT, 8)
expect_size(t, win32.UINT_PTR, 8)
expect_size(t, win32.LONG_PTR, 8)
expect_size(t, win32.HANDLE, 8)
expect_size(t, win32.WPARAM, 8)
expect_size(t, win32.LPARAM, 8)
expect_size(t, win32.LRESULT, 8)
expect_size(t, win32.LPHANDLE, 8)
expect_size(t, win32.HGLOBAL, 8)
expect_size(t, win32.ATOM, 2)
expect_size(t, win32.HKEY, 8)
expect_size(t, win32.PHKEY, 8)
expect_size(t, win32.HINSTANCE, 8)
expect_size(t, win32.HMODULE, 8)
expect_size(t, win32.HRGN, 8)
expect_size(t, win32.HRSRC, 8)
// windef.h
expect_size(t, win32.HWND, 8)
expect_size(t, win32.HHOOK, 8)
expect_size(t, win32.HGDIOBJ, 8)
expect_size(t, win32.HBITMAP, 8)
expect_size(t, win32.HPALETTE, 8)
expect_size(t, win32.HBRUSH, 8)
expect_size(t, win32.HPEN, 8)
expect_size(t, win32.HFONT, 8)
expect_size(t, win32.HICON, 8)
expect_size(t, win32.HMENU, 8)
expect_size(t, win32.HCURSOR, 8)
expect_size(t, win32.COLORREF, 4)
expect_size(t, win32.RECT, 16)
expect_size(t, win32.POINT, 8)
expect_size(t, win32.SIZE, 8)
// wtypes.h
expect_size(t, win32.DECIMAL, 16)
// fileapi.h
expect_size(t, win32.WIN32_FILE_ATTRIBUTE_DATA, 36)
// libloaderapi.h
expect_size(t, win32.ENUMRESNAMEPROCW, 8)
expect_size(t, win32.ENUMRESTYPEPROCW, 8)
// minwinbase.h
expect_size(t, win32.SYSTEMTIME, 16)
expect_size(t, win32.WIN32_FIND_DATAW, 592)
expect_size(t, win32.CRITICAL_SECTION, 40)
expect_size(t, win32.REASON_CONTEXT, 32)
// guiddef.h
expect_size(t, win32.GUID, 16)
expect_size(t, win32.IID, 16)
expect_size(t, win32.CLSID, 16)
// combaseapi.h
expect_size(t, win32.SCODE, 4)
// commdlg.h
expect_size(t, win32.OPENFILENAMEW, 152)
// wtypesbase.h
expect_size(t, win32.OLECHAR, 2)
}
@(test)
verify_macros :: proc(t: ^testing.T) {
// minwindef.h
expect_value(t, win32.MAKEWORD(1, 2), 0x00000201)
expect_value(t, win32.MAKEWORD(0x1111, 0x2222), 0x00002211)
expect_value(t, win32.MAKELONG(1, 2), 0x00020001)
expect_value(t, win32.MAKELONG(0x1111, 0x2222), 0x22221111)
expect_value(t, win32.LOWORD(0x12345678), 0x00005678)
expect_value(t, win32.HIWORD(0x12345678), 0x00001234)
expect_value(t, u32(win32.LOBYTE(0x1234)), 0x00000034)
expect_value(t, u32(win32.HIBYTE(0x1234)), 0x00000012)
// winuser.h
expect_value(t, win32.MAKEWPARAM(1, 2), 0x00020001)
expect_value(t, win32.MAKEWPARAM(0x1111, 0x2222), 0x22221111)
expect_value(t, win32.MAKELPARAM(1, 2), 0x00020001)
expect_value(t, win32.MAKELPARAM(0x1111, 0x2222), 0x22221111)
expect_value(t, win32.MAKELRESULT(1, 2), 0x00020001)
expect_value(t, win32.MAKELRESULT(0x1111, 0x2222), 0x22221111)
// winnt.h
expect_value(t, win32.MAKELCID(1, 2), 0x00020001)
expect_value(t, win32.MAKELCID(0x1111, 0x2222), 0x22221111)
expect_value(t, win32.MAKELANGID(1, 2), 0x00000801)
expect_value(t, win32.MAKELANGID(0x111, 0x222), 0x00088911)
expect_value(t, win32.LANGIDFROMLCID(0x12345678), 0x00005678)
}
@(test)
verify_winnt :: proc(t: ^testing.T) {
// winnt.h
expect_size(t, win32.CHAR, 1)
expect_size(t, win32.SHORT, 2)
expect_size(t, win32.LONG, 4)
expect_size(t, win32.INT, 4)
expect_size(t, win32.WCHAR, 2)
expect_size(t, win32.ULONGLONG, 8)
expect_size(t, win32.LARGE_INTEGER, 8)
expect_size(t, win32.PLARGE_INTEGER, 8)
expect_size(t, win32.ULARGE_INTEGER, 8)
expect_size(t, win32.PULARGE_INTEGER, 8)
expect_size(t, win32.BOOLEAN, 1)
expect_size(t, win32.HANDLE, 8)
expect_size(t, win32.PHANDLE, 8)
expect_size(t, win32.HRESULT, 4)
expect_size(t, win32.LCID, 4)
expect_size(t, win32.LANGID, 2)
expect_size(t, win32.LUID, 8)
expect_size(t, win32.SECURITY_INFORMATION, 4)
expect_size(t, win32.ACCESS_MASK, 4)
expect_size(t, win32.REGSAM, 4)
expect_value(t, win32.LANG_NEUTRAL, 0x00000000)
expect_value(t, win32.LANG_INVARIANT, 0x0000007F)
expect_value(t, win32.SUBLANG_NEUTRAL, 0x00000000)
expect_value(t, win32.SUBLANG_DEFAULT, 0x00000001)
}
@(test)
verify_winuser :: proc(t: ^testing.T) {
// winuser.h
expect_size(t, win32.USEROBJECTFLAGS, 12)
expect_size(t, win32.MSG, 48)
expect_size(t, win32.WINDOWPOS, 40)
expect_size(t, win32.ACCEL, 6)
expect_size(t, win32.MENUITEMINFOW, 80)
expect_size(t, win32.PAINTSTRUCT, 72)
expect_size(t, win32.CREATESTRUCTW, 80)
expect_size(t, win32.WINDOWPLACEMENT, 44)
expect_size(t, win32.MOUSEINPUT, 32)
expect_size(t, win32.KEYBDINPUT, 24)
expect_size(t, win32.HARDWAREINPUT, 8)
expect_size(t, win32.INPUT, 40)
expect_size(t, win32.ICONINFOEXW, 1080)
expect_size(t, win32.CURSORINFO, 24)
expect_size(t, win32.WINDOWINFO, 60)
expect_size(t, win32.RAWINPUTHEADER, 24)
expect_size(t, win32.RAWMOUSE, 24)
expect_size(t, win32.RAWKEYBOARD, 16)
expect_size(t, win32.RAWINPUT, 48)
expect_size(t, win32.RAWINPUTDEVICE, 16)
expect_size(t, win32.RAWINPUTDEVICELIST, 16)
expect_size(t, win32.RID_DEVICE_INFO_HID, 16)
expect_size(t, win32.RID_DEVICE_INFO_KEYBOARD, 24)
expect_size(t, win32.RID_DEVICE_INFO_MOUSE, 16)
expect_size(t, win32.RID_DEVICE_INFO, 32)
expect_value(t, win32.GET_RAWINPUT_CODE_WPARAM(0x12345678), 0x00000078)
expect_size(t, win32.DRAWTEXTPARAMS, 20)
expect_size(t, win32.BSMINFO, 32)
expect_value(t, win32.BROADCAST_QUERY_DENY, 0x424D5144)
expect_value_64(t, u64(win32.HWND_BROADCAST), 0x0000FFFF)
expect_value_64(t, u64(win32.HWND_MESSAGE), 0xFFFFFFFFFFFFFFFD)
expect_value_64(t, uintptr(win32.MAKEINTRESOURCEW(1)), 0x00000001)
expect_value_64(t, uintptr(win32.MAKEINTRESOURCEW(0x12345678)), 0x00005678)
expect_value_64(t, uintptr(win32.RT_CURSOR), 0x00000001)
expect_value_64(t, uintptr(win32.RT_BITMAP), 0x00000002)
expect_value_64(t, uintptr(win32.RT_ICON), 0x00000003)
expect_value_64(t, uintptr(win32.RT_MENU), 0x00000004)
expect_value_64(t, uintptr(win32.RT_DIALOG), 0x00000005)
expect_value_64(t, uintptr(win32.RT_STRING), 0x00000006)
expect_value_64(t, uintptr(win32.RT_FONTDIR), 0x00000007)
expect_value_64(t, uintptr(win32.RT_FONT), 0x00000008)
expect_value_64(t, uintptr(win32.RT_ACCELERATOR), 0x00000009)
expect_value_64(t, uintptr(win32.RT_RCDATA), 0x0000000A)
expect_value_64(t, uintptr(win32.RT_MESSAGETABLE), 0x0000000B)
expect_value_64(t, uintptr(win32.RT_GROUP_CURSOR), 0x0000000C)
expect_value_64(t, uintptr(win32.RT_GROUP_ICON), 0x0000000E)
expect_value_64(t, uintptr(win32.RT_VERSION), 0x00000010)
expect_value_64(t, uintptr(win32.RT_DLGINCLUDE), 0x00000011)
expect_value_64(t, uintptr(win32.RT_PLUGPLAY), 0x00000013)
expect_value_64(t, uintptr(win32.RT_VXD), 0x00000014)
expect_value_64(t, uintptr(win32.RT_ANICURSOR), 0x00000015)
expect_value_64(t, uintptr(win32.RT_ANIICON), 0x00000016)
expect_value_64(t, uintptr(win32.RT_MANIFEST), 0x00000018)
expect_value_64(t, uintptr(win32.CREATEPROCESS_MANIFEST_RESOURCE_ID), 0x00000001)
expect_value_64(t, uintptr(win32.ISOLATIONAWARE_MANIFEST_RESOURCE_ID), 0x00000002)
expect_value_64(t, uintptr(win32.ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID), 0x00000003)
expect_value_64(t, uintptr(win32.ISOLATIONPOLICY_MANIFEST_RESOURCE_ID), 0x00000004)
expect_value_64(t, uintptr(win32.ISOLATIONPOLICY_BROWSER_MANIFEST_RESOURCE_ID), 0x00000005)
expect_value_64(t, uintptr(win32.MINIMUM_RESERVED_MANIFEST_RESOURCE_ID), 0x00000001)
expect_value_64(t, uintptr(win32.MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID), 0x00000010)
expect_value(t, win32.SM_CXICON, 0x0000000B)
expect_value(t, win32.SM_CYICON, 0x0000000C)
expect_value(t, win32.LR_DEFAULTCOLOR, 0x00000000)
expect_value(t, win32.LR_MONOCHROME, 0x00000001)
expect_value(t, win32.LR_COLOR, 0x00000002)
expect_value(t, win32.LR_COPYRETURNORG, 0x00000004)
expect_value(t, win32.LR_COPYDELETEORG, 0x00000008)
expect_value(t, win32.LR_LOADFROMFILE, 0x00000010)
expect_value(t, win32.LR_LOADTRANSPARENT, 0x00000020)
expect_value(t, win32.LR_DEFAULTSIZE, 0x00000040)
expect_value(t, win32.LR_VGACOLOR, 0x00000080)
expect_value(t, win32.LR_LOADMAP3DCOLORS, 0x00001000)
expect_value(t, win32.LR_CREATEDIBSECTION, 0x00002000)
expect_value(t, win32.LR_COPYFROMRESOURCE, 0x00004000)
expect_value(t, win32.LR_SHARED, 0x00008000)
expect_value(t, win32.NIM_ADD, 0x00000000)
expect_value(t, win32.NIM_MODIFY, 0x00000001)
expect_value(t, win32.NIM_DELETE, 0x00000002)
expect_value(t, win32.NIM_SETFOCUS, 0x00000003)
expect_value(t, win32.NIM_SETVERSION, 0x00000004)
expect_value(t, win32.NIF_MESSAGE, 0x00000001)
expect_value(t, win32.NIF_ICON, 0x00000002)
expect_value(t, win32.NIF_TIP, 0x00000004)
expect_value(t, win32.NIF_STATE, 0x00000008)
expect_value(t, win32.NIF_INFO, 0x00000010)
expect_value(t, win32.NIF_GUID, 0x00000020)
expect_value(t, win32.NIF_REALTIME, 0x00000040)
expect_value(t, win32.NIF_SHOWTIP, 0x00000080)
expect_value(t, win32.MF_INSERT, 0x00000000)
expect_value(t, win32.MF_CHANGE, 0x00000080)
expect_value(t, win32.MF_APPEND, 0x00000100)
expect_value(t, win32.MF_DELETE, 0x00000200)
expect_value(t, win32.MF_REMOVE, 0x00001000)
expect_value(t, win32.MF_BYCOMMAND, 0x00000000)
expect_value(t, win32.MF_BYPOSITION, 0x00000400)
expect_value(t, win32.MF_SEPARATOR, 0x00000800)
expect_value(t, win32.MF_ENABLED, 0x00000000)
expect_value(t, win32.MF_GRAYED, 0x00000001)
expect_value(t, win32.MF_DISABLED, 0x00000002)
expect_value(t, win32.MF_UNCHECKED, 0x00000000)
expect_value(t, win32.MF_CHECKED, 0x00000008)
expect_value(t, win32.MF_USECHECKBITMAPS, 0x00000200)
expect_value(t, win32.MF_STRING, 0x00000000)
expect_value(t, win32.MF_BITMAP, 0x00000004)
expect_value(t, win32.MF_OWNERDRAW, 0x00000100)
expect_value(t, win32.MF_POPUP, 0x00000010)
expect_value(t, win32.MF_MENUBARBREAK, 0x00000020)
expect_value(t, win32.MF_MENUBREAK, 0x00000040)
expect_value(t, win32.MF_UNHILITE, 0x00000000)
expect_value(t, win32.MF_HILITE, 0x00000080)
expect_value(t, win32.MF_DEFAULT, 0x00001000)
expect_value(t, win32.MF_SYSMENU, 0x00002000)
expect_value(t, win32.MF_HELP, 0x00004000)
expect_value(t, win32.MF_RIGHTJUSTIFY, 0x00004000)
expect_value(t, win32.MF_MOUSESELECT, 0x00008000)
expect_value(t, win32.MF_END, 0x00000080)
expect_value(t, win32.MFS_GRAYED, 0x00000003)
expect_value(t, win32.MFS_DISABLED, 0x00000003)
expect_value(t, win32.MFS_CHECKED, 0x00000008)
expect_value(t, win32.MFS_HILITE, 0x00000080)
expect_value(t, win32.MFS_ENABLED, 0x00000000)
expect_value(t, win32.MFS_UNCHECKED, 0x00000000)
expect_value(t, win32.MFS_UNHILITE, 0x00000000)
expect_value(t, win32.MFS_DEFAULT, 0x00001000)
expect_value(t, win32.TPM_LEFTBUTTON, 0x00000000)
expect_value(t, win32.TPM_RIGHTBUTTON, 0x00000002)
expect_value(t, win32.TPM_LEFTALIGN, 0x00000000)
expect_value(t, win32.TPM_CENTERALIGN, 0x00000004)
expect_value(t, win32.TPM_RIGHTALIGN, 0x00000008)
expect_value(t, win32.TPM_TOPALIGN, 0x00000000)
expect_value(t, win32.TPM_VCENTERALIGN, 0x00000010)
expect_value(t, win32.TPM_BOTTOMALIGN, 0x00000020)
expect_value(t, win32.TPM_HORIZONTAL, 0x00000000)
expect_value(t, win32.TPM_VERTICAL, 0x00000040)
expect_value(t, win32.TPM_NONOTIFY, 0x00000080)
expect_value(t, win32.TPM_RETURNCMD, 0x00000100)
expect_value(t, win32.TPM_RECURSE, 0x00000001)
expect_value(t, win32.TPM_HORPOSANIMATION, 0x00000400)
expect_value(t, win32.TPM_HORNEGANIMATION, 0x00000800)
expect_value(t, win32.TPM_VERPOSANIMATION, 0x00001000)
expect_value(t, win32.TPM_VERNEGANIMATION, 0x00002000)
expect_value(t, win32.TPM_NOANIMATION, 0x00004000)
expect_value(t, win32.TPM_LAYOUTRTL, 0x00008000)
expect_value(t, win32.TPM_WORKAREA, 0x00010000)
expect_value(t, win32.MIIM_STATE, 0x00000001)
expect_value(t, win32.MIIM_ID, 0x00000002)
expect_value(t, win32.MIIM_SUBMENU, 0x00000004)
expect_value(t, win32.MIIM_CHECKMARKS, 0x00000008)
expect_value(t, win32.MIIM_TYPE, 0x00000010)
expect_value(t, win32.MIIM_DATA, 0x00000020)
expect_value(t, win32.MIIM_STRING, 0x00000040)
expect_value(t, win32.MIIM_BITMAP, 0x00000080)
expect_value(t, win32.MIIM_FTYPE, 0x00000100)
expect_value(t, win32.ANSI_CHARSET, 0x00000000)
expect_value(t, win32.DEFAULT_CHARSET, 0x00000001)
expect_value(t, win32.SYMBOL_CHARSET, 0x00000002)
expect_value(t, win32.SHIFTJIS_CHARSET, 0x00000080)
expect_value(t, win32.HANGEUL_CHARSET, 0x00000081)
expect_value(t, win32.HANGUL_CHARSET, 0x00000081)
expect_value(t, win32.GB2312_CHARSET, 0x00000086)
expect_value(t, win32.CHINESEBIG5_CHARSET, 0x00000088)
expect_value(t, win32.OEM_CHARSET, 0x000000FF)
expect_value(t, win32.JOHAB_CHARSET, 0x00000082)
expect_value(t, win32.HEBREW_CHARSET, 0x000000B1)
expect_value(t, win32.ARABIC_CHARSET, 0x000000B2)
expect_value(t, win32.GREEK_CHARSET, 0x000000A1)
expect_value(t, win32.TURKISH_CHARSET, 0x000000A2)
expect_value(t, win32.VIETNAMESE_CHARSET, 0x000000A3)
expect_value(t, win32.THAI_CHARSET, 0x000000DE)
expect_value(t, win32.EASTEUROPE_CHARSET, 0x000000EE)
expect_value(t, win32.RUSSIAN_CHARSET, 0x000000CC)
expect_value(t, win32.MAC_CHARSET, 0x0000004D)
expect_value(t, win32.BALTIC_CHARSET, 0x000000BA)
expect_value(t, win32.FS_LATIN1, 0x00000001)
expect_value(t, win32.FS_LATIN2, 0x00000002)
expect_value(t, win32.FS_CYRILLIC, 0x00000004)
expect_value(t, win32.FS_GREEK, 0x00000008)
expect_value(t, win32.FS_TURKISH, 0x00000010)
expect_value(t, win32.FS_HEBREW, 0x00000020)
expect_value(t, win32.FS_ARABIC, 0x00000040)
expect_value(t, win32.FS_BALTIC, 0x00000080)
expect_value(t, win32.FS_VIETNAMESE, 0x00000100)
expect_value(t, win32.FS_THAI, 0x00010000)
expect_value(t, win32.FS_JISJAPAN, 0x00020000)
expect_value(t, win32.FS_CHINESESIMP, 0x00040000)
expect_value(t, win32.FS_WANSUNG, 0x00080000)
expect_value(t, win32.FS_CHINESETRAD, 0x00100000)
expect_value(t, win32.FS_JOHAB, 0x00200000)
expect_value(t, win32.FS_SYMBOL, 0x80000000)
expect_value(t, win32.OUT_DEFAULT_PRECIS, 0x00000000)
expect_value(t, win32.OUT_STRING_PRECIS, 0x00000001)
expect_value(t, win32.OUT_CHARACTER_PRECIS, 0x00000002)
expect_value(t, win32.OUT_STROKE_PRECIS, 0x00000003)
expect_value(t, win32.OUT_TT_PRECIS, 0x00000004)
expect_value(t, win32.OUT_DEVICE_PRECIS, 0x00000005)
expect_value(t, win32.OUT_RASTER_PRECIS, 0x00000006)
expect_value(t, win32.OUT_TT_ONLY_PRECIS, 0x00000007)
expect_value(t, win32.OUT_OUTLINE_PRECIS, 0x00000008)
expect_value(t, win32.OUT_SCREEN_OUTLINE_PRECIS, 0x00000009)
expect_value(t, win32.OUT_PS_ONLY_PRECIS, 0x0000000A)
expect_value(t, win32.CLIP_DEFAULT_PRECIS, 0x00000000)
expect_value(t, win32.CLIP_CHARACTER_PRECIS, 0x00000001)
expect_value(t, win32.CLIP_STROKE_PRECIS, 0x00000002)
expect_value(t, win32.CLIP_MASK, 0x0000000F)
expect_value(t, win32.CLIP_LH_ANGLES, 0x00000010)
expect_value(t, win32.CLIP_TT_ALWAYS, 0x00000020)
expect_value(t, win32.CLIP_DFA_DISABLE, 0x00000040)
expect_value(t, win32.CLIP_EMBEDDED, 0x00000080)
expect_value(t, win32.DEFAULT_QUALITY, 0x00000000)
expect_value(t, win32.DRAFT_QUALITY, 0x00000001)
expect_value(t, win32.PROOF_QUALITY, 0x00000002)
expect_value(t, win32.NONANTIALIASED_QUALITY, 0x00000003)
expect_value(t, win32.ANTIALIASED_QUALITY, 0x00000004)
expect_value(t, win32.CLEARTYPE_QUALITY, 0x00000005)
expect_value(t, win32.CLEARTYPE_NATURAL_QUALITY, 0x00000006)
expect_value(t, win32.DEFAULT_PITCH, 0x00000000)
expect_value(t, win32.FIXED_PITCH, 0x00000001)
expect_value(t, win32.VARIABLE_PITCH, 0x00000002)
expect_value(t, win32.MONO_FONT, 0x00000008)
expect_value(t, win32.FF_DONTCARE, 0x00000000)
expect_value(t, win32.FF_ROMAN, 0x00000010)
expect_value(t, win32.FF_SWISS, 0x00000020)
expect_value(t, win32.FF_MODERN, 0x00000030)
expect_value(t, win32.FF_SCRIPT, 0x00000040)
expect_value(t, win32.FF_DECORATIVE, 0x00000050)
}
@(test)
verify_gdi32 :: proc(t: ^testing.T) {
// wingdi.h
expect_size(t, win32.DEVMODEW, 220)
expect_size(t, win32.RGBQUAD, 4)
expect_size(t, win32.PIXELFORMATDESCRIPTOR, 40)
expect_size(t, win32.BITMAPINFOHEADER, 40)
expect_size(t, win32.BITMAP, 32)
expect_size(t, win32.BITMAPV5HEADER, 124)
expect_size(t, win32.CIEXYZTRIPLE, 36)
expect_size(t, win32.CIEXYZ, 12)
expect_size(t, win32.FXPT2DOT30, 4)
expect_size(t, win32.TEXTMETRICW, 60)
expect_size(t, win32.POINTFLOAT, 8)
expect_size(t, win32.GLYPHMETRICSFLOAT, 24)
expect_size(t, win32.PALETTEENTRY, 4)
expect_size(t, win32.DESIGNVECTOR, 72)
expect_value(t, win32.LF_FACESIZE, 0x00000020)
expect_value(t, win32.LF_FULLFACESIZE, 0x00000040)
expect_size(t, win32.LOGFONTW, 92)
expect_size(t, win32.ENUMLOGFONTW, 284)
expect_size(t, win32.ENUMLOGFONTEXW, 348)
expect_size(t, win32.ENUMLOGFONTEXDVW, 420)
expect_size(t, win32.NEWTEXTMETRICW, 76)
expect_size(t, win32.LAYERPLANEDESCRIPTOR, 32)
expect_size(t, win32.COLOR16, 2)
expect_size(t, win32.TRIVERTEX, 16)
expect_size(t, win32.GRADIENT_TRIANGLE, 12)
expect_size(t, win32.GRADIENT_RECT, 8)
expect_size(t, win32.BLENDFUNCTION, 4)
expect_size(t, win32.DISPLAY_DEVICEW, 840)
expect_value(t, win32.AC_SRC_OVER, 0x00000000)
expect_value(t, win32.AC_SRC_ALPHA, 0x00000001)
expect_value(t, win32.RGB(12, 34, 56), 0x0038220C)
expect_value(t, win32.PALETTERGB(12, 34, 56), 0x0238220C)
expect_value(t, win32.PALETTEINDEX(123), 0x0100007B)
expect_value(t, win32.GRADIENT_FILL_RECT_H, 0x00000000)
expect_value(t, win32.GRADIENT_FILL_RECT_V, 0x00000001)
expect_value(t, win32.GRADIENT_FILL_TRIANGLE, 0x00000002)
expect_value(t, win32.BS_SOLID, 0x00000000)
expect_value(t, win32.BS_NULL, 0x00000001)
expect_value(t, win32.BS_HOLLOW, 0x00000001)
expect_value(t, win32.BS_HATCHED, 0x00000002)
expect_value(t, win32.BS_PATTERN, 0x00000003)
expect_value(t, win32.BS_INDEXED, 0x00000004)
expect_value(t, win32.BS_DIBPATTERN, 0x00000005)
expect_value(t, win32.BS_DIBPATTERNPT, 0x00000006)
expect_value(t, win32.BS_PATTERN8X8, 0x00000007)
expect_value(t, win32.BS_DIBPATTERN8X8, 0x00000008)
expect_value(t, win32.BS_MONOPATTERN, 0x00000009)
expect_value(t, win32.HS_HORIZONTAL, 0x00000000)
expect_value(t, win32.HS_VERTICAL, 0x00000001)
expect_value(t, win32.HS_FDIAGONAL, 0x00000002)
expect_value(t, win32.HS_BDIAGONAL, 0x00000003)
expect_value(t, win32.HS_CROSS, 0x00000004)
expect_value(t, win32.HS_DIAGCROSS, 0x00000005)
expect_value(t, win32.HS_API_MAX, 0x0000000C)
expect_value(t, win32.PS_SOLID, 0x00000000)
expect_value(t, win32.PS_DASH, 0x00000001)
expect_value(t, win32.PS_DOT, 0x00000002)
expect_value(t, win32.PS_DASHDOT, 0x00000003)
expect_value(t, win32.PS_DASHDOTDOT, 0x00000004)
expect_value(t, win32.PS_NULL, 0x00000005)
expect_value(t, win32.PS_INSIDEFRAME, 0x00000006)
expect_value(t, win32.PS_USERSTYLE, 0x00000007)
expect_value(t, win32.PS_ALTERNATE, 0x00000008)
expect_value(t, win32.PS_STYLE_MASK, 0x0000000F)
expect_value(t, win32.PS_ENDCAP_ROUND, 0x00000000)
expect_value(t, win32.PS_ENDCAP_SQUARE, 0x00000100)
expect_value(t, win32.PS_ENDCAP_FLAT, 0x00000200)
expect_value(t, win32.PS_ENDCAP_MASK, 0x00000F00)
expect_value(t, win32.PS_JOIN_ROUND, 0x00000000)
expect_value(t, win32.PS_JOIN_BEVEL, 0x00001000)
expect_value(t, win32.PS_JOIN_MITER, 0x00002000)
expect_value(t, win32.PS_COSMETIC, 0x00000000)
expect_value(t, win32.PS_GEOMETRIC, 0x00010000)
expect_value(t, win32.PS_TYPE_MASK, 0x000F0000)
// Binary raster ops
expect_value(t, win32.R2_BLACK, 0x00000001)
expect_value(t, win32.R2_NOTMERGEPEN, 0x00000002)
expect_value(t, win32.R2_MASKNOTPEN, 0x00000003)
expect_value(t, win32.R2_NOTCOPYPEN, 0x00000004)
expect_value(t, win32.R2_MASKPENNOT, 0x00000005)
expect_value(t, win32.R2_NOT, 0x00000006)
expect_value(t, win32.R2_XORPEN, 0x00000007)
expect_value(t, win32.R2_NOTMASKPEN, 0x00000008)
expect_value(t, win32.R2_MASKPEN, 0x00000009)
expect_value(t, win32.R2_NOTXORPEN, 0x0000000A)
expect_value(t, win32.R2_NOP, 0x0000000B)
expect_value(t, win32.R2_MERGENOTPEN, 0x0000000C)
expect_value(t, win32.R2_COPYPEN, 0x0000000D)
expect_value(t, win32.R2_MERGEPENNOT, 0x0000000E)
expect_value(t, win32.R2_MERGEPEN, 0x0000000F)
expect_value(t, win32.R2_WHITE, 0x00000010)
// Ternary raster operations
expect_value(t, win32.SRCCOPY, 0x00CC0020)
expect_value(t, win32.SRCPAINT, 0x00EE0086)
expect_value(t, win32.SRCAND, 0x008800C6)
expect_value(t, win32.SRCINVERT, 0x00660046)
expect_value(t, win32.SRCERASE, 0x00440328)
expect_value(t, win32.NOTSRCCOPY, 0x00330008)
expect_value(t, win32.NOTSRCERASE, 0x001100A6)
expect_value(t, win32.MERGECOPY, 0x00C000CA)
expect_value(t, win32.MERGEPAINT, 0x00BB0226)
expect_value(t, win32.PATCOPY, 0x00F00021)
expect_value(t, win32.PATPAINT, 0x00FB0A09)
expect_value(t, win32.PATINVERT, 0x005A0049)
expect_value(t, win32.DSTINVERT, 0x00550009)
expect_value(t, win32.BLACKNESS, 0x00000042)
expect_value(t, win32.WHITENESS, 0x00FF0062)
expect_value(t, win32.NOMIRRORBITMAP, 0x80000000)
expect_value(t, win32.CAPTUREBLT, 0x40000000)
// Region Flags
expect_value(t, win32.ERROR, 0x00000000)
expect_value(t, win32.NULLREGION, 0x00000001)
expect_value(t, win32.SIMPLEREGION, 0x00000002)
expect_value(t, win32.COMPLEXREGION, 0x00000003)
expect_value(t, win32.RGN_ERROR, 0x00000000)
// CombineRgn() Styles
expect_value(t, win32.RGN_AND, 0x00000001)
expect_value(t, win32.RGN_OR, 0x00000002)
expect_value(t, win32.RGN_XOR, 0x00000003)
expect_value(t, win32.RGN_DIFF, 0x00000004)
expect_value(t, win32.RGN_COPY, 0x00000005)
// StretchBlt() Modes
expect_value(t, win32.BLACKONWHITE, 0x00000001)
expect_value(t, win32.WHITEONBLACK, 0x00000002)
expect_value(t, win32.COLORONCOLOR, 0x00000003)
expect_value(t, win32.HALFTONE, 0x00000004)
// PolyFill() Modes
expect_value(t, win32.ALTERNATE, 0x00000001)
expect_value(t, win32.WINDING, 0x00000002)
// Layout Orientation Options
expect_value(t, win32.LAYOUT_RTL, 0x00000001)
expect_value(t, win32.LAYOUT_BTT, 0x00000002)
expect_value(t, win32.LAYOUT_VBH, 0x00000004)
expect_value(t, win32.LAYOUT_ORIENTATIONMASK, 0x00000007)
// Text Alignment Options
expect_value(t, win32.TA_NOUPDATECP, 0x00000000)
expect_value(t, win32.TA_UPDATECP, 0x00000001)
expect_value(t, win32.TA_LEFT, 0x00000000)
expect_value(t, win32.TA_RIGHT, 0x00000002)
expect_value(t, win32.TA_CENTER, 0x00000006)
expect_value(t, win32.TA_TOP, 0x00000000)
expect_value(t, win32.TA_BOTTOM, 0x00000008)
expect_value(t, win32.TA_BASELINE, 0x00000018)
expect_value(t, win32.TA_RTLREADING, 0x00000100)
expect_value(t, win32.TA_MASK, 0x0000011F)
}
@(test)
verify_winmm :: proc(t: ^testing.T) {
// timeapi.h
expect_size(t, win32.TIMECAPS, 8)
// mmsyscom.h
expect_size(t, win32.MMVERSION, 4)
expect_size(t, win32.MMTIME, 12)
// mmreg.h
expect_size(t, win32.WAVEFORMATEX, 18)
expect_size(t, win32.WAVEFORMATEXTENSIBLE, 40)
// mmeapi.h
expect_size(t, win32.WAVEHDR, 48)
expect_size(t, win32.WAVEINCAPSW, 80)
expect_size(t, win32.WAVEOUTCAPSW, 84)
}
@(test)
verify_advapi32 :: proc(t: ^testing.T) {
// wincrypt.h
expect_size(t, win32.HCRYPTPROV, 8)
}
@(test)
verify_winnls :: proc(t: ^testing.T) {
// winnls.h
expect_value(t, win32.CP_ACP, 0x00000000)
expect_value(t, win32.CP_OEMCP, 0x00000001)
expect_value(t, win32.CP_MACCP, 0x00000002)
expect_value(t, win32.CP_THREAD_ACP, 0x00000003)
expect_value(t, win32.CP_SYMBOL, 0x0000002A)
expect_value(t, win32.CP_UTF7, 0x0000FDE8)
expect_value(t, win32.CP_UTF8, 0x0000FDE9)
expect_value(t, win32.MAX_DEFAULTCHAR, 0x00000002)
expect_value(t, win32.MAX_LEADBYTES, 0x0000000C)
expect_value(t, win32.LOCALE_NAME_MAX_LENGTH, 0x00000055)
expect_value(t, win32.LOCALE_NAME_USER_DEFAULT, 0x00000000)
expect_value_str(t, win32.LOCALE_NAME_INVARIANT, L(""))
expect_value_str(t, win32.LOCALE_NAME_SYSTEM_DEFAULT, L("!x-sys-default-locale"))
expect_size(t, win32.LCTYPE, 4)
expect_size(t, win32.CPINFOEXW, 544)
}
@(test)
verify_winreg :: proc(t: ^testing.T) {
// winreg.h
expect_value(t, win32.RRF_RT_REG_NONE, 0x00000001)
expect_value(t, win32.RRF_RT_REG_SZ, 0x00000002)
expect_value(t, win32.RRF_RT_REG_EXPAND_SZ, 0x00000004)
expect_value(t, win32.RRF_RT_REG_BINARY, 0x00000008)
expect_value(t, win32.RRF_RT_REG_DWORD, 0x00000010)
expect_value(t, win32.RRF_RT_REG_MULTI_SZ, 0x00000020)
expect_value(t, win32.RRF_RT_REG_QWORD, 0x00000040)
expect_value(t, win32.RRF_RT_DWORD, 0x00000018)
expect_value(t, win32.RRF_RT_QWORD, 0x00000048)
expect_value(t, win32.RRF_RT_ANY, 0x0000FFFF)
expect_value(t, win32.RRF_NOEXPAND, 0x10000000)
expect_value(t, win32.RRF_ZEROONFAILURE, 0x20000000)
// winnt.h
expect_value(t, u32(win32.HKEY_CLASSES_ROOT), 0x80000000)
expect_value(t, u32(win32.HKEY_CURRENT_USER), 0x80000001)
expect_value(t, u32(win32.HKEY_LOCAL_MACHINE), 0x80000002)
expect_value(t, u32(win32.HKEY_USERS), 0x80000003)
expect_value(t, u32(win32.HKEY_PERFORMANCE_DATA), 0x80000004)
expect_value(t, u32(win32.HKEY_PERFORMANCE_TEXT), 0x80000050)
expect_value(t, u32(win32.HKEY_PERFORMANCE_NLSTEXT), 0x80000060)
expect_value(t, u32(win32.HKEY_CURRENT_CONFIG), 0x80000005)
expect_value(t, u32(win32.HKEY_DYN_DATA), 0x80000006)
expect_value(t, u32(win32.HKEY_CURRENT_USER_LOCAL_SETTINGS), 0x80000007)
expect_value(t, win32.DELETE, 0x00010000)
expect_value(t, win32.READ_CONTROL, 0x00020000)
expect_value(t, win32.WRITE_DAC, 0x00040000)
expect_value(t, win32.WRITE_OWNER, 0x00080000)
expect_value(t, win32.SYNCHRONIZE, 0x00100000)
expect_value(t, win32.KEY_QUERY_VALUE, 0x00000001)
expect_value(t, win32.KEY_SET_VALUE, 0x00000002)
expect_value(t, win32.KEY_CREATE_SUB_KEY, 0x00000004)
expect_value(t, win32.KEY_ENUMERATE_SUB_KEYS, 0x00000008)
expect_value(t, win32.KEY_NOTIFY, 0x00000010)
expect_value(t, win32.KEY_CREATE_LINK, 0x00000020)
expect_value(t, win32.KEY_WOW64_32KEY, 0x00000200)
expect_value(t, win32.KEY_WOW64_64KEY, 0x00000100)
expect_value(t, win32.KEY_WOW64_RES, 0x00000300)
expect_value(t, win32.KEY_READ, 0x00020019)
expect_value(t, win32.KEY_WRITE, 0x00020006)
expect_value(t, win32.KEY_EXECUTE, 0x00020019)
expect_value(t, win32.KEY_ALL_ACCESS, 0x000F003F)
}
@(test)
verify_verrsrc :: proc(t: ^testing.T) {
// verrsrc.h
expect_value(t, win32.VS_VERSION_INFO, 0x00000001)
expect_value(t, win32.VS_USER_DEFINED, 0x00000064)
expect_size(t, win32.VS_FIXEDFILEINFO, 52)
expect_value(t, win32.VS_FFI_SIGNATURE, 0xFEEF04BD)
}
@(test)
verify_error_codes :: proc(t: ^testing.T) {
// winerror.h
expect_value(t, win32.ERROR_SUCCESS, 0x00000000)
expect_value(t, win32.NO_ERROR, 0x00000000)
expect_value(t, win32.SEC_E_OK, 0x00000000)
expect_value(t, win32.ERROR_INVALID_FUNCTION, 0x00000001)
expect_value(t, win32.ERROR_FILE_NOT_FOUND, 0x00000002)
expect_value(t, win32.ERROR_PATH_NOT_FOUND, 0x00000003)
expect_value(t, win32.ERROR_ACCESS_DENIED, 0x00000005)
expect_value(t, win32.ERROR_INVALID_HANDLE, 0x00000006)
expect_value(t, win32.ERROR_NOT_ENOUGH_MEMORY, 0x00000008)
expect_value(t, win32.ERROR_INVALID_BLOCK, 0x00000009)
expect_value(t, win32.ERROR_BAD_ENVIRONMENT, 0x0000000A)
expect_value(t, win32.ERROR_BAD_FORMAT, 0x0000000B)
expect_value(t, win32.ERROR_INVALID_ACCESS, 0x0000000C)
expect_value(t, win32.ERROR_INVALID_DATA, 0x0000000D)
expect_value(t, win32.ERROR_OUTOFMEMORY, 0x0000000E)
expect_value(t, win32.ERROR_INVALID_DRIVE, 0x0000000F)
expect_value(t, win32.ERROR_CURRENT_DIRECTORY, 0x00000010)
expect_value(t, win32.ERROR_NO_MORE_FILES, 0x00000012)
expect_value(t, win32.ERROR_SHARING_VIOLATION, 0x00000020)
expect_value(t, win32.ERROR_LOCK_VIOLATION, 0x00000021)
expect_value(t, win32.ERROR_HANDLE_EOF, 0x00000026)
expect_value(t, win32.ERROR_NOT_SUPPORTED, 0x00000032)
expect_value(t, win32.ERROR_FILE_EXISTS, 0x00000050)
expect_value(t, win32.ERROR_INVALID_PARAMETER, 0x00000057)
expect_value(t, win32.ERROR_BROKEN_PIPE, 0x0000006D)
expect_value(t, win32.ERROR_CALL_NOT_IMPLEMENTED, 0x00000078)
expect_value(t, win32.ERROR_INSUFFICIENT_BUFFER, 0x0000007A)
expect_value(t, win32.ERROR_INVALID_NAME, 0x0000007B)
expect_value(t, win32.ERROR_BAD_ARGUMENTS, 0x000000A0)
expect_value(t, win32.ERROR_LOCK_FAILED, 0x000000A7)
expect_value(t, win32.ERROR_ALREADY_EXISTS, 0x000000B7)
expect_value(t, win32.ERROR_NO_DATA, 0x000000E8)
expect_value(t, win32.ERROR_ENVVAR_NOT_FOUND, 0x000000CB)
expect_value(t, win32.ERROR_OPERATION_ABORTED, 0x000003E3)
expect_value(t, win32.ERROR_IO_PENDING, 0x000003E5)
expect_value(t, win32.ERROR_NO_UNICODE_TRANSLATION, 0x00000459)
expect_value(t, win32.ERROR_TIMEOUT, 0x000005B4)
expect_value(t, win32.ERROR_DATATYPE_MISMATCH, 0x0000065D)
expect_value(t, win32.ERROR_UNSUPPORTED_TYPE, 0x0000065E)
expect_value(t, win32.ERROR_NOT_SAME_OBJECT, 0x00000678)
expect_value(t, win32.ERROR_PIPE_CONNECTED, 0x00000217)
expect_value(t, win32.ERROR_PIPE_BUSY, 0x000000E7)
expect_value(t, win32.S_OK, 0x00000000)
expect_value(t, win32.E_NOTIMPL, 0x80004001)
expect_value(t, win32.E_NOINTERFACE, 0x80004002)
expect_value(t, win32.E_POINTER, 0x80004003)
expect_value(t, win32.E_ABORT, 0x80004004)
expect_value(t, win32.E_FAIL, 0x80004005)
expect_value(t, win32.E_UNEXPECTED, 0x8000FFFF)
expect_value(t, win32.E_ACCESSDENIED, 0x80070005)
expect_value(t, win32.E_HANDLE, 0x80070006)
expect_value(t, win32.E_OUTOFMEMORY, 0x8007000E)
expect_value(t, win32.E_INVALIDARG, 0x80070057)
}
@(test)
verify_error_helpers :: proc(t: ^testing.T) {
// winerror.h
expect_value(t, win32.SUCCEEDED(-1), 0x00000000)
expect_value(t, win32.SUCCEEDED(0), 0x00000001)
expect_value(t, win32.SUCCEEDED(1), 0x00000001)
expect_value(t, win32.FAILED(-1), 0x00000001)
expect_value(t, win32.FAILED(0), 0x00000000)
expect_value(t, win32.FAILED(1), 0x00000000)
expect_value(t, win32.IS_ERROR(-1), 0x00000001)
expect_value(t, win32.IS_ERROR(0), 0x00000000)
expect_value(t, win32.IS_ERROR(1), 0x00000000)
expect_value(t, win32.HRESULT_CODE(0xFFFFCCCC), 0x0000CCCC)
expect_value(t, win32.HRESULT_FACILITY(0xFFFFCCCC), 0x00001FFF)
expect_value(t, win32.HRESULT_SEVERITY(0x12345678), 0x00000000)
expect_value(t, win32.HRESULT_SEVERITY(0x87654321), 0x00000001)
expect_value(t, win32.MAKE_HRESULT(1, 2, 3), 0x80020003)
}
|