1 /* File generated automatically from tools/winapi/tests.dat; do not edit! */
2 /* This file can be copied, modified and distributed without restriction. */
5 * Unit tests for data structure packing
10 /***********************************************************************
11 * Compatibility macros
14 #define DWORD_PTR UINT_PTR
15 #define LONG_PTR INT_PTR
16 #define ULONG_PTR UINT_PTR
18 /***********************************************************************
19 * Windows API extension
22 #if defined(_MSC_VER) && (_MSC_VER >= 1300) && defined(__cplusplus)
23 # define _TYPE_ALIGNMENT(type) __alignof(type)
24 #elif defined(__GNUC__)
25 # define _TYPE_ALIGNMENT(type) __alignof__(type)
28 * FIXME: May not be possible without a compiler extension
29 * (if type is not just a name that is, otherwise the normal
30 * TYPE_ALIGNMENT can be used)
34 #if defined(TYPE_ALIGNMENT) && defined(_MSC_VER) && _MSC_VER >= 800 && !defined(__cplusplus)
35 #pragma warning(disable:4116)
38 #if !defined(TYPE_ALIGNMENT) && defined(_TYPE_ALIGNMENT)
39 # define TYPE_ALIGNMENT _TYPE_ALIGNMENT
42 /***********************************************************************
46 #define TEST_TYPE_SIZE(type, size) C_ASSERT(sizeof(type) == size);
49 # define TEST_TYPE_ALIGN(type, align) C_ASSERT(TYPE_ALIGNMENT(type) == align);
51 # define TEST_TYPE_ALIGN(type, align)
54 #ifdef _TYPE_ALIGNMENT
55 # define TEST_TARGET_ALIGN(type, align) C_ASSERT(_TYPE_ALIGNMENT(*(type)0) == align);
56 # define TEST_FIELD_ALIGN(type, field, align) C_ASSERT(_TYPE_ALIGNMENT(((type*)0)->field) == align);
58 # define TEST_TARGET_ALIGN(type, align)
59 # define TEST_FIELD_ALIGN(type, field, align)
62 #define TEST_FIELD_OFFSET(type, field, offset) C_ASSERT(FIELD_OFFSET(type, field) == offset);
64 #define TEST_TARGET_SIZE(type, size) TEST_TYPE_SIZE(*(type)0, size)
65 #define TEST_FIELD_SIZE(type, field, size) TEST_TYPE_SIZE((((type*)0)->field), size)
66 #define TEST_TYPE_SIGNED(type) C_ASSERT((type) -1 < 0);
67 #define TEST_TYPE_UNSIGNED(type) C_ASSERT((type) -1 > 0);
72 static void test_pack_ASSOCF(void)
75 TEST_TYPE_SIZE (ASSOCF
, 4)
76 TEST_TYPE_ALIGN (ASSOCF
, 4)
77 TEST_TYPE_UNSIGNED(ASSOCF
)
80 static void test_pack_DLLGETVERSIONPROC(void)
82 /* DLLGETVERSIONPROC */
83 TEST_TYPE_SIZE (DLLGETVERSIONPROC
, 8)
84 TEST_TYPE_ALIGN (DLLGETVERSIONPROC
, 8)
87 static void test_pack_DLLVERSIONINFO(void)
89 /* DLLVERSIONINFO (pack 8) */
90 TEST_TYPE_SIZE (DLLVERSIONINFO
, 20)
91 TEST_TYPE_ALIGN (DLLVERSIONINFO
, 4)
92 TEST_FIELD_SIZE (DLLVERSIONINFO
, cbSize
, 4)
93 TEST_FIELD_ALIGN (DLLVERSIONINFO
, cbSize
, 4)
94 TEST_FIELD_OFFSET(DLLVERSIONINFO
, cbSize
, 0)
95 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwMajorVersion
, 4)
96 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwMajorVersion
, 4)
97 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwMajorVersion
, 4)
98 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwMinorVersion
, 4)
99 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwMinorVersion
, 4)
100 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwMinorVersion
, 8)
101 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwBuildNumber
, 4)
102 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwBuildNumber
, 4)
103 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwBuildNumber
, 12)
104 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwPlatformID
, 4)
105 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwPlatformID
, 4)
106 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwPlatformID
, 16)
109 static void test_pack_DLLVERSIONINFO2(void)
111 /* DLLVERSIONINFO2 (pack 8) */
112 TEST_TYPE_SIZE (DLLVERSIONINFO2
, 32)
113 TEST_TYPE_ALIGN (DLLVERSIONINFO2
, 8)
114 TEST_FIELD_SIZE (DLLVERSIONINFO2
, info1
, 20)
115 TEST_FIELD_ALIGN (DLLVERSIONINFO2
, info1
, 4)
116 TEST_FIELD_OFFSET(DLLVERSIONINFO2
, info1
, 0)
117 TEST_FIELD_SIZE (DLLVERSIONINFO2
, dwFlags
, 4)
118 TEST_FIELD_ALIGN (DLLVERSIONINFO2
, dwFlags
, 4)
119 TEST_FIELD_OFFSET(DLLVERSIONINFO2
, dwFlags
, 20)
120 TEST_FIELD_SIZE (DLLVERSIONINFO2
, ullVersion
, 8)
121 TEST_FIELD_ALIGN (DLLVERSIONINFO2
, ullVersion
, 8)
122 TEST_FIELD_OFFSET(DLLVERSIONINFO2
, ullVersion
, 24)
125 static void test_pack_HUSKEY(void)
128 TEST_TYPE_SIZE (HUSKEY
, 8)
129 TEST_TYPE_ALIGN (HUSKEY
, 8)
132 static void test_pack_PHUSKEY(void)
135 TEST_TYPE_SIZE (PHUSKEY
, 8)
136 TEST_TYPE_ALIGN (PHUSKEY
, 8)
137 TEST_TARGET_SIZE (PHUSKEY
, 8)
138 TEST_TARGET_ALIGN(PHUSKEY
, 8)
143 static void test_pack_ASSOCF(void)
146 TEST_TYPE_SIZE (ASSOCF
, 4)
147 TEST_TYPE_ALIGN (ASSOCF
, 4)
148 TEST_TYPE_UNSIGNED(ASSOCF
)
151 static void test_pack_DLLGETVERSIONPROC(void)
153 /* DLLGETVERSIONPROC */
154 TEST_TYPE_SIZE (DLLGETVERSIONPROC
, 4)
155 TEST_TYPE_ALIGN (DLLGETVERSIONPROC
, 4)
158 static void test_pack_DLLVERSIONINFO(void)
160 /* DLLVERSIONINFO (pack 8) */
161 TEST_TYPE_SIZE (DLLVERSIONINFO
, 20)
162 TEST_TYPE_ALIGN (DLLVERSIONINFO
, 4)
163 TEST_FIELD_SIZE (DLLVERSIONINFO
, cbSize
, 4)
164 TEST_FIELD_ALIGN (DLLVERSIONINFO
, cbSize
, 4)
165 TEST_FIELD_OFFSET(DLLVERSIONINFO
, cbSize
, 0)
166 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwMajorVersion
, 4)
167 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwMajorVersion
, 4)
168 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwMajorVersion
, 4)
169 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwMinorVersion
, 4)
170 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwMinorVersion
, 4)
171 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwMinorVersion
, 8)
172 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwBuildNumber
, 4)
173 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwBuildNumber
, 4)
174 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwBuildNumber
, 12)
175 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwPlatformID
, 4)
176 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwPlatformID
, 4)
177 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwPlatformID
, 16)
180 static void test_pack_DLLVERSIONINFO2(void)
182 /* DLLVERSIONINFO2 (pack 8) */
183 TEST_TYPE_SIZE (DLLVERSIONINFO2
, 32)
184 TEST_TYPE_ALIGN (DLLVERSIONINFO2
, 8)
185 TEST_FIELD_SIZE (DLLVERSIONINFO2
, info1
, 20)
186 TEST_FIELD_ALIGN (DLLVERSIONINFO2
, info1
, 4)
187 TEST_FIELD_OFFSET(DLLVERSIONINFO2
, info1
, 0)
188 TEST_FIELD_SIZE (DLLVERSIONINFO2
, dwFlags
, 4)
189 TEST_FIELD_ALIGN (DLLVERSIONINFO2
, dwFlags
, 4)
190 TEST_FIELD_OFFSET(DLLVERSIONINFO2
, dwFlags
, 20)
191 TEST_FIELD_SIZE (DLLVERSIONINFO2
, ullVersion
, 8)
192 TEST_FIELD_ALIGN (DLLVERSIONINFO2
, ullVersion
, 8)
193 TEST_FIELD_OFFSET(DLLVERSIONINFO2
, ullVersion
, 24)
196 static void test_pack_HUSKEY(void)
199 TEST_TYPE_SIZE (HUSKEY
, 4)
200 TEST_TYPE_ALIGN (HUSKEY
, 4)
203 static void test_pack_PHUSKEY(void)
206 TEST_TYPE_SIZE (PHUSKEY
, 4)
207 TEST_TYPE_ALIGN (PHUSKEY
, 4)
208 TEST_TARGET_SIZE (PHUSKEY
, 4)
209 TEST_TARGET_ALIGN(PHUSKEY
, 4)
214 static void test_pack(void)
217 test_pack_DLLGETVERSIONPROC();
218 test_pack_DLLVERSIONINFO();
219 test_pack_DLLVERSIONINFO2();
224 START_TEST(generated
)