e509e5c49b5a59ce937daf3a0c09fa96644473c4
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 #define _WIN32_IE 0x0501
11 #define _WIN32_WINNT 0x0501
14 #define WINE_NOWINSOCK
23 #include "wine/test.h"
25 /***********************************************************************
26 * Compatibility macros
29 #define DWORD_PTR UINT_PTR
30 #define LONG_PTR INT_PTR
31 #define ULONG_PTR UINT_PTR
33 /***********************************************************************
34 * Windows API extension
37 #if defined(_MSC_VER) && (_MSC_VER >= 1300) && defined(__cplusplus)
38 # define _TYPE_ALIGNMENT(type) __alignof(type)
39 #elif defined(__GNUC__)
40 # define _TYPE_ALIGNMENT(type) __alignof__(type)
43 * FIXME: May not be possible without a compiler extension
44 * (if type is not just a name that is, otherwise the normal
45 * TYPE_ALIGNMENT can be used)
49 #if defined(TYPE_ALIGNMENT) && defined(_MSC_VER) && _MSC_VER >= 800 && !defined(__cplusplus)
50 #pragma warning(disable:4116)
53 #if !defined(TYPE_ALIGNMENT) && defined(_TYPE_ALIGNMENT)
54 # define TYPE_ALIGNMENT _TYPE_ALIGNMENT
57 /***********************************************************************
61 #define TEST_TYPE_SIZE(type, size) C_ASSERT(sizeof(type) == size);
64 # define TEST_TYPE_ALIGN(type, align) C_ASSERT(TYPE_ALIGNMENT(type) == align);
66 # define TEST_TYPE_ALIGN(type, align)
69 #ifdef _TYPE_ALIGNMENT
70 # define TEST_TARGET_ALIGN(type, align) C_ASSERT(_TYPE_ALIGNMENT(*(type)0) == align);
71 # define TEST_FIELD_ALIGN(type, field, align) C_ASSERT(_TYPE_ALIGNMENT(((type*)0)->field) == align);
73 # define TEST_TARGET_ALIGN(type, align)
74 # define TEST_FIELD_ALIGN(type, field, align)
77 #define TEST_FIELD_OFFSET(type, field, offset) C_ASSERT(FIELD_OFFSET(type, field) == offset);
79 #define TEST_TARGET_SIZE(type, size) TEST_TYPE_SIZE(*(type)0, size)
80 #define TEST_FIELD_SIZE(type, field, size) TEST_TYPE_SIZE((((type*)0)->field), size)
81 #define TEST_TYPE_SIGNED(type) C_ASSERT((type) -1 < 0);
82 #define TEST_TYPE_UNSIGNED(type) C_ASSERT((type) -1 > 0);
87 static void test_pack_ASSOCF(void)
90 TEST_TYPE_SIZE (ASSOCF
, 4)
91 TEST_TYPE_ALIGN (ASSOCF
, 4)
92 TEST_TYPE_UNSIGNED(ASSOCF
)
95 static void test_pack_DLLGETVERSIONPROC(void)
97 /* DLLGETVERSIONPROC */
98 TEST_TYPE_SIZE (DLLGETVERSIONPROC
, 8)
99 TEST_TYPE_ALIGN (DLLGETVERSIONPROC
, 8)
102 static void test_pack_DLLVERSIONINFO(void)
104 /* DLLVERSIONINFO (pack 8) */
105 TEST_TYPE_SIZE (DLLVERSIONINFO
, 20)
106 TEST_TYPE_ALIGN (DLLVERSIONINFO
, 4)
107 TEST_FIELD_SIZE (DLLVERSIONINFO
, cbSize
, 4)
108 TEST_FIELD_ALIGN (DLLVERSIONINFO
, cbSize
, 4)
109 TEST_FIELD_OFFSET(DLLVERSIONINFO
, cbSize
, 0)
110 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwMajorVersion
, 4)
111 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwMajorVersion
, 4)
112 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwMajorVersion
, 4)
113 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwMinorVersion
, 4)
114 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwMinorVersion
, 4)
115 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwMinorVersion
, 8)
116 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwBuildNumber
, 4)
117 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwBuildNumber
, 4)
118 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwBuildNumber
, 12)
119 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwPlatformID
, 4)
120 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwPlatformID
, 4)
121 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwPlatformID
, 16)
124 static void test_pack_DLLVERSIONINFO2(void)
126 /* DLLVERSIONINFO2 (pack 8) */
127 TEST_TYPE_SIZE (DLLVERSIONINFO2
, 32)
128 TEST_TYPE_ALIGN (DLLVERSIONINFO2
, 8)
129 TEST_FIELD_SIZE (DLLVERSIONINFO2
, info1
, 20)
130 TEST_FIELD_ALIGN (DLLVERSIONINFO2
, info1
, 4)
131 TEST_FIELD_OFFSET(DLLVERSIONINFO2
, info1
, 0)
132 TEST_FIELD_SIZE (DLLVERSIONINFO2
, dwFlags
, 4)
133 TEST_FIELD_ALIGN (DLLVERSIONINFO2
, dwFlags
, 4)
134 TEST_FIELD_OFFSET(DLLVERSIONINFO2
, dwFlags
, 20)
135 TEST_FIELD_SIZE (DLLVERSIONINFO2
, ullVersion
, 8)
136 TEST_FIELD_ALIGN (DLLVERSIONINFO2
, ullVersion
, 8)
137 TEST_FIELD_OFFSET(DLLVERSIONINFO2
, ullVersion
, 24)
140 static void test_pack_HUSKEY(void)
143 TEST_TYPE_SIZE (HUSKEY
, 8)
144 TEST_TYPE_ALIGN (HUSKEY
, 8)
147 static void test_pack_PHUSKEY(void)
150 TEST_TYPE_SIZE (PHUSKEY
, 8)
151 TEST_TYPE_ALIGN (PHUSKEY
, 8)
152 TEST_TARGET_SIZE (PHUSKEY
, 8)
153 TEST_TARGET_ALIGN(PHUSKEY
, 8)
158 static void test_pack_ASSOCF(void)
161 TEST_TYPE_SIZE (ASSOCF
, 4)
162 TEST_TYPE_ALIGN (ASSOCF
, 4)
163 TEST_TYPE_UNSIGNED(ASSOCF
)
166 static void test_pack_DLLGETVERSIONPROC(void)
168 /* DLLGETVERSIONPROC */
169 TEST_TYPE_SIZE (DLLGETVERSIONPROC
, 4)
170 TEST_TYPE_ALIGN (DLLGETVERSIONPROC
, 4)
173 static void test_pack_DLLVERSIONINFO(void)
175 /* DLLVERSIONINFO (pack 8) */
176 TEST_TYPE_SIZE (DLLVERSIONINFO
, 20)
177 TEST_TYPE_ALIGN (DLLVERSIONINFO
, 4)
178 TEST_FIELD_SIZE (DLLVERSIONINFO
, cbSize
, 4)
179 TEST_FIELD_ALIGN (DLLVERSIONINFO
, cbSize
, 4)
180 TEST_FIELD_OFFSET(DLLVERSIONINFO
, cbSize
, 0)
181 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwMajorVersion
, 4)
182 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwMajorVersion
, 4)
183 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwMajorVersion
, 4)
184 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwMinorVersion
, 4)
185 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwMinorVersion
, 4)
186 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwMinorVersion
, 8)
187 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwBuildNumber
, 4)
188 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwBuildNumber
, 4)
189 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwBuildNumber
, 12)
190 TEST_FIELD_SIZE (DLLVERSIONINFO
, dwPlatformID
, 4)
191 TEST_FIELD_ALIGN (DLLVERSIONINFO
, dwPlatformID
, 4)
192 TEST_FIELD_OFFSET(DLLVERSIONINFO
, dwPlatformID
, 16)
195 static void test_pack_DLLVERSIONINFO2(void)
197 /* DLLVERSIONINFO2 (pack 8) */
198 TEST_TYPE_SIZE (DLLVERSIONINFO2
, 32)
199 TEST_TYPE_ALIGN (DLLVERSIONINFO2
, 8)
200 TEST_FIELD_SIZE (DLLVERSIONINFO2
, info1
, 20)
201 TEST_FIELD_ALIGN (DLLVERSIONINFO2
, info1
, 4)
202 TEST_FIELD_OFFSET(DLLVERSIONINFO2
, info1
, 0)
203 TEST_FIELD_SIZE (DLLVERSIONINFO2
, dwFlags
, 4)
204 TEST_FIELD_ALIGN (DLLVERSIONINFO2
, dwFlags
, 4)
205 TEST_FIELD_OFFSET(DLLVERSIONINFO2
, dwFlags
, 20)
206 TEST_FIELD_SIZE (DLLVERSIONINFO2
, ullVersion
, 8)
207 TEST_FIELD_ALIGN (DLLVERSIONINFO2
, ullVersion
, 8)
208 TEST_FIELD_OFFSET(DLLVERSIONINFO2
, ullVersion
, 24)
211 static void test_pack_HUSKEY(void)
214 TEST_TYPE_SIZE (HUSKEY
, 4)
215 TEST_TYPE_ALIGN (HUSKEY
, 4)
218 static void test_pack_PHUSKEY(void)
221 TEST_TYPE_SIZE (PHUSKEY
, 4)
222 TEST_TYPE_ALIGN (PHUSKEY
, 4)
223 TEST_TARGET_SIZE (PHUSKEY
, 4)
224 TEST_TARGET_ALIGN(PHUSKEY
, 4)
229 static void test_pack(void)
232 test_pack_DLLGETVERSIONPROC();
233 test_pack_DLLVERSIONINFO();
234 test_pack_DLLVERSIONINFO2();
239 START_TEST(generated
)