/* File generated automatically from tools/winapi/tests.dat; do not edit! */
/* This file can be copied, modified and distributed without restriction. */

/*
 * Unit tests for data structure packing
 */

#define WINVER 0x0501
#define _WIN32_IE 0x0501
#define _WIN32_WINNT 0x0501

#define WINE_NOWINSOCK

#include "ntdll_test.h"

#include "wine/test.h"

/***********************************************************************
 * Compatibility macros
 */

#define DWORD_PTR UINT_PTR
#define LONG_PTR INT_PTR
#define ULONG_PTR UINT_PTR

/***********************************************************************
 * Windows API extension
 */

#if defined(_MSC_VER) && (_MSC_VER >= 1300) && defined(__cplusplus)
# define _TYPE_ALIGNMENT(type) __alignof(type)
#elif defined(__GNUC__)
# define _TYPE_ALIGNMENT(type) __alignof__(type)
#else
/*
 * FIXME: May not be possible without a compiler extension
 *        (if type is not just a name that is, otherwise the normal
 *         TYPE_ALIGNMENT can be used)
 */
#endif

#if defined(TYPE_ALIGNMENT) && defined(_MSC_VER) && _MSC_VER >= 800 && !defined(__cplusplus)
#pragma warning(disable:4116)
#endif

#if !defined(TYPE_ALIGNMENT) && defined(_TYPE_ALIGNMENT)
# define TYPE_ALIGNMENT _TYPE_ALIGNMENT
#endif

/***********************************************************************
 * Test helper macros
 */

#ifdef _WIN64

# define TEST_TYPE_SIZE(type, size)
# define TEST_TYPE_ALIGN(type, align)
# define TEST_TARGET_ALIGN(type, align)
# define TEST_FIELD_ALIGN(type, field, align)
# define TEST_FIELD_OFFSET(type, field, offset)

#else

# define TEST_TYPE_SIZE(type, size)             C_ASSERT(sizeof(type) == size);

# ifdef TYPE_ALIGNMENT
#  define TEST_TYPE_ALIGN(type, align)          C_ASSERT(TYPE_ALIGNMENT(type) == align);
# else
#  define TEST_TYPE_ALIGN(type, align)
# endif

# ifdef _TYPE_ALIGNMENT
#  define TEST_TARGET_ALIGN(type, align)        C_ASSERT(_TYPE_ALIGNMENT(*(type)0) == align);
#  define TEST_FIELD_ALIGN(type, field, align)  C_ASSERT(_TYPE_ALIGNMENT(((type*)0)->field) == align);
# else
#  define TEST_TARGET_ALIGN(type, align)
#  define TEST_FIELD_ALIGN(type, field, align)
# endif

# define TEST_FIELD_OFFSET(type, field, offset) C_ASSERT(FIELD_OFFSET(type, field) == offset);

#endif

#define TEST_TARGET_SIZE(type, size)            TEST_TYPE_SIZE(*(type)0, size)
#define TEST_FIELD_SIZE(type, field, size)      TEST_TYPE_SIZE((((type*)0)->field), size)
#define TEST_TYPE_SIGNED(type)                  C_ASSERT((type) -1 < 0);
#define TEST_TYPE_UNSIGNED(type)                C_ASSERT((type) -1 > 0);


static void test_pack_DWORD32(void)
{
    /* DWORD32 */
    TEST_TYPE_SIZE   (DWORD32, 4)
    TEST_TYPE_ALIGN  (DWORD32, 4)
    TEST_TYPE_UNSIGNED(DWORD32)
}

static void test_pack_DWORD64(void)
{
    /* DWORD64 */
    TEST_TYPE_SIZE   (DWORD64, 8)
    TEST_TYPE_ALIGN  (DWORD64, 8)
    TEST_TYPE_UNSIGNED(DWORD64)
}

static void test_pack_DWORD_PTR(void)
{
    /* DWORD_PTR */
    TEST_TYPE_SIZE   (DWORD_PTR, 4)
    TEST_TYPE_ALIGN  (DWORD_PTR, 4)
}

static void test_pack_HALF_PTR(void)
{
    /* HALF_PTR */
    TEST_TYPE_SIZE   (HALF_PTR, 2)
    TEST_TYPE_ALIGN  (HALF_PTR, 2)
    TEST_TYPE_SIGNED(HALF_PTR)
}

static void test_pack_INT16(void)
{
    /* INT16 */
    TEST_TYPE_SIZE   (INT16, 2)
    TEST_TYPE_ALIGN  (INT16, 2)
    TEST_TYPE_SIGNED(INT16)
}

static void test_pack_INT32(void)
{
    /* INT32 */
    TEST_TYPE_SIZE   (INT32, 4)
    TEST_TYPE_ALIGN  (INT32, 4)
    TEST_TYPE_SIGNED(INT32)
}

static void test_pack_INT64(void)
{
    /* INT64 */
    TEST_TYPE_SIZE   (INT64, 8)
    TEST_TYPE_ALIGN  (INT64, 8)
    TEST_TYPE_SIGNED(INT64)
}

static void test_pack_INT8(void)
{
    /* INT8 */
    TEST_TYPE_SIZE   (INT8, 1)
    TEST_TYPE_ALIGN  (INT8, 1)
    TEST_TYPE_SIGNED(INT8)
}

static void test_pack_INT_PTR(void)
{
    /* INT_PTR */
    TEST_TYPE_SIZE   (INT_PTR, 4)
    TEST_TYPE_ALIGN  (INT_PTR, 4)
    TEST_TYPE_SIGNED(INT_PTR)
}

static void test_pack_LONG32(void)
{
    /* LONG32 */
    TEST_TYPE_SIZE   (LONG32, 4)
    TEST_TYPE_ALIGN  (LONG32, 4)
    TEST_TYPE_SIGNED(LONG32)
}

static void test_pack_LONG64(void)
{
    /* LONG64 */
    TEST_TYPE_SIZE   (LONG64, 8)
    TEST_TYPE_ALIGN  (LONG64, 8)
    TEST_TYPE_SIGNED(LONG64)
}

static void test_pack_LONG_PTR(void)
{
    /* LONG_PTR */
    TEST_TYPE_SIZE   (LONG_PTR, 4)
    TEST_TYPE_ALIGN  (LONG_PTR, 4)
    TEST_TYPE_SIGNED(LONG_PTR)
}

static void test_pack_SIZE_T(void)
{
    /* SIZE_T */
    TEST_TYPE_SIZE   (SIZE_T, 4)
    TEST_TYPE_ALIGN  (SIZE_T, 4)
}

static void test_pack_SSIZE_T(void)
{
    /* SSIZE_T */
    TEST_TYPE_SIZE   (SSIZE_T, 4)
    TEST_TYPE_ALIGN  (SSIZE_T, 4)
}

static void test_pack_UHALF_PTR(void)
{
    /* UHALF_PTR */
    TEST_TYPE_SIZE   (UHALF_PTR, 2)
    TEST_TYPE_ALIGN  (UHALF_PTR, 2)
    TEST_TYPE_UNSIGNED(UHALF_PTR)
}

static void test_pack_UINT16(void)
{
    /* UINT16 */
    TEST_TYPE_SIZE   (UINT16, 2)
    TEST_TYPE_ALIGN  (UINT16, 2)
    TEST_TYPE_UNSIGNED(UINT16)
}

static void test_pack_UINT32(void)
{
    /* UINT32 */
    TEST_TYPE_SIZE   (UINT32, 4)
    TEST_TYPE_ALIGN  (UINT32, 4)
    TEST_TYPE_UNSIGNED(UINT32)
}

static void test_pack_UINT64(void)
{
    /* UINT64 */
    TEST_TYPE_SIZE   (UINT64, 8)
    TEST_TYPE_ALIGN  (UINT64, 8)
    TEST_TYPE_UNSIGNED(UINT64)
}

static void test_pack_UINT8(void)
{
    /* UINT8 */
    TEST_TYPE_SIZE   (UINT8, 1)
    TEST_TYPE_ALIGN  (UINT8, 1)
    TEST_TYPE_UNSIGNED(UINT8)
}

static void test_pack_UINT_PTR(void)
{
    /* UINT_PTR */
    TEST_TYPE_SIZE   (UINT_PTR, 4)
    TEST_TYPE_ALIGN  (UINT_PTR, 4)
    TEST_TYPE_UNSIGNED(UINT_PTR)
}

static void test_pack_ULONG32(void)
{
    /* ULONG32 */
    TEST_TYPE_SIZE   (ULONG32, 4)
    TEST_TYPE_ALIGN  (ULONG32, 4)
    TEST_TYPE_UNSIGNED(ULONG32)
}

static void test_pack_ULONG64(void)
{
    /* ULONG64 */
    TEST_TYPE_SIZE   (ULONG64, 8)
    TEST_TYPE_ALIGN  (ULONG64, 8)
    TEST_TYPE_UNSIGNED(ULONG64)
}

static void test_pack_ULONG_PTR(void)
{
    /* ULONG_PTR */
    TEST_TYPE_SIZE   (ULONG_PTR, 4)
    TEST_TYPE_ALIGN  (ULONG_PTR, 4)
    TEST_TYPE_UNSIGNED(ULONG_PTR)
}

static void test_pack_ACCESS_ALLOWED_ACE(void)
{
    /* ACCESS_ALLOWED_ACE (pack 4) */
    TEST_TYPE_SIZE   (ACCESS_ALLOWED_ACE, 12)
    TEST_TYPE_ALIGN  (ACCESS_ALLOWED_ACE, 4)
    TEST_FIELD_SIZE  (ACCESS_ALLOWED_ACE, Header, 4)
    TEST_FIELD_ALIGN (ACCESS_ALLOWED_ACE, Header, 2)
    TEST_FIELD_OFFSET(ACCESS_ALLOWED_ACE, Header, 0)
    TEST_FIELD_SIZE  (ACCESS_ALLOWED_ACE, Mask, 4)
    TEST_FIELD_ALIGN (ACCESS_ALLOWED_ACE, Mask, 4)
    TEST_FIELD_OFFSET(ACCESS_ALLOWED_ACE, Mask, 4)
    TEST_FIELD_SIZE  (ACCESS_ALLOWED_ACE, SidStart, 4)
    TEST_FIELD_ALIGN (ACCESS_ALLOWED_ACE, SidStart, 4)
    TEST_FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart, 8)
}

static void test_pack_ACCESS_DENIED_ACE(void)
{
    /* ACCESS_DENIED_ACE (pack 4) */
    TEST_TYPE_SIZE   (ACCESS_DENIED_ACE, 12)
    TEST_TYPE_ALIGN  (ACCESS_DENIED_ACE, 4)
    TEST_FIELD_SIZE  (ACCESS_DENIED_ACE, Header, 4)
    TEST_FIELD_ALIGN (ACCESS_DENIED_ACE, Header, 2)
    TEST_FIELD_OFFSET(ACCESS_DENIED_ACE, Header, 0)
    TEST_FIELD_SIZE  (ACCESS_DENIED_ACE, Mask, 4)
    TEST_FIELD_ALIGN (ACCESS_DENIED_ACE, Mask, 4)
    TEST_FIELD_OFFSET(ACCESS_DENIED_ACE, Mask, 4)
    TEST_FIELD_SIZE  (ACCESS_DENIED_ACE, SidStart, 4)
    TEST_FIELD_ALIGN (ACCESS_DENIED_ACE, SidStart, 4)
    TEST_FIELD_OFFSET(ACCESS_DENIED_ACE, SidStart, 8)
}

static void test_pack_ACCESS_MASK(void)
{
    /* ACCESS_MASK */
    TEST_TYPE_SIZE   (ACCESS_MASK, 4)
    TEST_TYPE_ALIGN  (ACCESS_MASK, 4)
    TEST_TYPE_UNSIGNED(ACCESS_MASK)
}

static void test_pack_ACE_HEADER(void)
{
    /* ACE_HEADER (pack 4) */
    TEST_TYPE_SIZE   (ACE_HEADER, 4)
    TEST_TYPE_ALIGN  (ACE_HEADER, 2)
    TEST_FIELD_SIZE  (ACE_HEADER, AceType, 1)
    TEST_FIELD_ALIGN (ACE_HEADER, AceType, 1)
    TEST_FIELD_OFFSET(ACE_HEADER, AceType, 0)
    TEST_FIELD_SIZE  (ACE_HEADER, AceFlags, 1)
    TEST_FIELD_ALIGN (ACE_HEADER, AceFlags, 1)
    TEST_FIELD_OFFSET(ACE_HEADER, AceFlags, 1)
    TEST_FIELD_SIZE  (ACE_HEADER, AceSize, 2)
    TEST_FIELD_ALIGN (ACE_HEADER, AceSize, 2)
    TEST_FIELD_OFFSET(ACE_HEADER, AceSize, 2)
}

static void test_pack_ACL(void)
{
    /* ACL (pack 4) */
    TEST_TYPE_SIZE   (ACL, 8)
    TEST_TYPE_ALIGN  (ACL, 2)
    TEST_FIELD_SIZE  (ACL, AclRevision, 1)
    TEST_FIELD_ALIGN (ACL, AclRevision, 1)
    TEST_FIELD_OFFSET(ACL, AclRevision, 0)
    TEST_FIELD_SIZE  (ACL, Sbz1, 1)
    TEST_FIELD_ALIGN (ACL, Sbz1, 1)
    TEST_FIELD_OFFSET(ACL, Sbz1, 1)
    TEST_FIELD_SIZE  (ACL, AclSize, 2)
    TEST_FIELD_ALIGN (ACL, AclSize, 2)
    TEST_FIELD_OFFSET(ACL, AclSize, 2)
    TEST_FIELD_SIZE  (ACL, AceCount, 2)
    TEST_FIELD_ALIGN (ACL, AceCount, 2)
    TEST_FIELD_OFFSET(ACL, AceCount, 4)
    TEST_FIELD_SIZE  (ACL, Sbz2, 2)
    TEST_FIELD_ALIGN (ACL, Sbz2, 2)
    TEST_FIELD_OFFSET(ACL, Sbz2, 6)
}

static void test_pack_ACL_REVISION_INFORMATION(void)
{
    /* ACL_REVISION_INFORMATION (pack 4) */
    TEST_TYPE_SIZE   (ACL_REVISION_INFORMATION, 4)
    TEST_TYPE_ALIGN  (ACL_REVISION_INFORMATION, 4)
    TEST_FIELD_SIZE  (ACL_REVISION_INFORMATION, AclRevision, 4)
    TEST_FIELD_ALIGN (ACL_REVISION_INFORMATION, AclRevision, 4)
    TEST_FIELD_OFFSET(ACL_REVISION_INFORMATION, AclRevision, 0)
}

static void test_pack_ACL_SIZE_INFORMATION(void)
{
    /* ACL_SIZE_INFORMATION (pack 4) */
    TEST_TYPE_SIZE   (ACL_SIZE_INFORMATION, 12)
    TEST_TYPE_ALIGN  (ACL_SIZE_INFORMATION, 4)
    TEST_FIELD_SIZE  (ACL_SIZE_INFORMATION, AceCount, 4)
    TEST_FIELD_ALIGN (ACL_SIZE_INFORMATION, AceCount, 4)
    TEST_FIELD_OFFSET(ACL_SIZE_INFORMATION, AceCount, 0)
    TEST_FIELD_SIZE  (ACL_SIZE_INFORMATION, AclBytesInUse, 4)
    TEST_FIELD_ALIGN (ACL_SIZE_INFORMATION, AclBytesInUse, 4)
    TEST_FIELD_OFFSET(ACL_SIZE_INFORMATION, AclBytesInUse, 4)
    TEST_FIELD_SIZE  (ACL_SIZE_INFORMATION, AclBytesFree, 4)
    TEST_FIELD_ALIGN (ACL_SIZE_INFORMATION, AclBytesFree, 4)
    TEST_FIELD_OFFSET(ACL_SIZE_INFORMATION, AclBytesFree, 8)
}

static void test_pack_BOOLEAN(void)
{
    /* BOOLEAN */
    TEST_TYPE_SIZE   (BOOLEAN, 1)
    TEST_TYPE_ALIGN  (BOOLEAN, 1)
    TEST_TYPE_UNSIGNED(BOOLEAN)
}

static void test_pack_CCHAR(void)
{
    /* CCHAR */
    TEST_TYPE_SIZE   (CCHAR, 1)
    TEST_TYPE_ALIGN  (CCHAR, 1)
    TEST_TYPE_SIGNED(CCHAR)
}

static void test_pack_CHAR(void)
{
    /* CHAR */
    TEST_TYPE_SIZE   (CHAR, 1)
    TEST_TYPE_ALIGN  (CHAR, 1)
    TEST_TYPE_SIGNED(CHAR)
}

static void test_pack_DWORDLONG(void)
{
    /* DWORDLONG */
    TEST_TYPE_SIZE   (DWORDLONG, 8)
    TEST_TYPE_ALIGN  (DWORDLONG, 8)
    TEST_TYPE_UNSIGNED(DWORDLONG)
}

static void test_pack_EXCEPTION_POINTERS(void)
{
    /* EXCEPTION_POINTERS (pack 4) */
    TEST_TYPE_SIZE   (EXCEPTION_POINTERS, 8)
    TEST_TYPE_ALIGN  (EXCEPTION_POINTERS, 4)
    TEST_FIELD_SIZE  (EXCEPTION_POINTERS, ExceptionRecord, 4)
    TEST_FIELD_ALIGN (EXCEPTION_POINTERS, ExceptionRecord, 4)
    TEST_FIELD_OFFSET(EXCEPTION_POINTERS, ExceptionRecord, 0)
    TEST_FIELD_SIZE  (EXCEPTION_POINTERS, ContextRecord, 4)
    TEST_FIELD_ALIGN (EXCEPTION_POINTERS, ContextRecord, 4)
    TEST_FIELD_OFFSET(EXCEPTION_POINTERS, ContextRecord, 4)
}

static void test_pack_EXCEPTION_RECORD(void)
{
    /* EXCEPTION_RECORD (pack 4) */
    TEST_TYPE_SIZE   (EXCEPTION_RECORD, 80)
    TEST_TYPE_ALIGN  (EXCEPTION_RECORD, 4)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionCode, 4)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionCode, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionCode, 0)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionFlags, 4)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionFlags, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionFlags, 4)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionRecord, 4)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionRecord, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionRecord, 8)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionAddress, 4)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionAddress, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionAddress, 12)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, NumberParameters, 4)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, NumberParameters, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, NumberParameters, 16)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionInformation, 60)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionInformation, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionInformation, 20)
}

static void test_pack_EXECUTION_STATE(void)
{
    /* EXECUTION_STATE */
    TEST_TYPE_SIZE   (EXECUTION_STATE, 4)
    TEST_TYPE_ALIGN  (EXECUTION_STATE, 4)
    TEST_TYPE_UNSIGNED(EXECUTION_STATE)
}

static void test_pack_FLOATING_SAVE_AREA(void)
{
    /* FLOATING_SAVE_AREA (pack 4) */
    TEST_TYPE_SIZE   (FLOATING_SAVE_AREA, 112)
    TEST_TYPE_ALIGN  (FLOATING_SAVE_AREA, 4)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, ControlWord, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, ControlWord, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, ControlWord, 0)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, StatusWord, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, StatusWord, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, StatusWord, 4)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, TagWord, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, TagWord, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, TagWord, 8)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, ErrorOffset, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, ErrorOffset, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, ErrorOffset, 12)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, ErrorSelector, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, ErrorSelector, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, ErrorSelector, 16)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, DataOffset, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, DataOffset, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, DataOffset, 20)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, DataSelector, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, DataSelector, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, DataSelector, 24)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, RegisterArea, 80)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, RegisterArea, 1)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, RegisterArea, 28)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, Cr0NpxState, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, Cr0NpxState, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, Cr0NpxState, 108)
}

static void test_pack_FPO_DATA(void)
{
    /* FPO_DATA (pack 4) */
    TEST_TYPE_SIZE   (FPO_DATA, 16)
    TEST_TYPE_ALIGN  (FPO_DATA, 4)
    TEST_FIELD_SIZE  (FPO_DATA, ulOffStart, 4)
    TEST_FIELD_ALIGN (FPO_DATA, ulOffStart, 4)
    TEST_FIELD_OFFSET(FPO_DATA, ulOffStart, 0)
    TEST_FIELD_SIZE  (FPO_DATA, cbProcSize, 4)
    TEST_FIELD_ALIGN (FPO_DATA, cbProcSize, 4)
    TEST_FIELD_OFFSET(FPO_DATA, cbProcSize, 4)
    TEST_FIELD_SIZE  (FPO_DATA, cdwLocals, 4)
    TEST_FIELD_ALIGN (FPO_DATA, cdwLocals, 4)
    TEST_FIELD_OFFSET(FPO_DATA, cdwLocals, 8)
    TEST_FIELD_SIZE  (FPO_DATA, cdwParams, 2)
    TEST_FIELD_ALIGN (FPO_DATA, cdwParams, 2)
    TEST_FIELD_OFFSET(FPO_DATA, cdwParams, 12)
}

static void test_pack_GENERIC_MAPPING(void)
{
    /* GENERIC_MAPPING (pack 4) */
    TEST_TYPE_SIZE   (GENERIC_MAPPING, 16)
    TEST_TYPE_ALIGN  (GENERIC_MAPPING, 4)
    TEST_FIELD_SIZE  (GENERIC_MAPPING, GenericRead, 4)
    TEST_FIELD_ALIGN (GENERIC_MAPPING, GenericRead, 4)
    TEST_FIELD_OFFSET(GENERIC_MAPPING, GenericRead, 0)
    TEST_FIELD_SIZE  (GENERIC_MAPPING, GenericWrite, 4)
    TEST_FIELD_ALIGN (GENERIC_MAPPING, GenericWrite, 4)
    TEST_FIELD_OFFSET(GENERIC_MAPPING, GenericWrite, 4)
    TEST_FIELD_SIZE  (GENERIC_MAPPING, GenericExecute, 4)
    TEST_FIELD_ALIGN (GENERIC_MAPPING, GenericExecute, 4)
    TEST_FIELD_OFFSET(GENERIC_MAPPING, GenericExecute, 8)
    TEST_FIELD_SIZE  (GENERIC_MAPPING, GenericAll, 4)
    TEST_FIELD_ALIGN (GENERIC_MAPPING, GenericAll, 4)
    TEST_FIELD_OFFSET(GENERIC_MAPPING, GenericAll, 12)
}

static void test_pack_HANDLE(void)
{
    /* HANDLE */
    TEST_TYPE_SIZE   (HANDLE, 4)
    TEST_TYPE_ALIGN  (HANDLE, 4)
}

static void test_pack_HRESULT(void)
{
    /* HRESULT */
    TEST_TYPE_SIZE   (HRESULT, 4)
    TEST_TYPE_ALIGN  (HRESULT, 4)
}

static void test_pack_IMAGE_ARCHIVE_MEMBER_HEADER(void)
{
    /* IMAGE_ARCHIVE_MEMBER_HEADER (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_ARCHIVE_MEMBER_HEADER, 60)
    TEST_TYPE_ALIGN  (IMAGE_ARCHIVE_MEMBER_HEADER, 1)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, Name, 16)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, Name, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, Name, 0)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, Date, 12)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, Date, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, Date, 16)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, UserID, 6)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, UserID, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, UserID, 28)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, GroupID, 6)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, GroupID, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, GroupID, 34)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, Mode, 8)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, Mode, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, Mode, 40)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, Size, 10)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, Size, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, Size, 48)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, EndHeader, 2)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, EndHeader, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, EndHeader, 58)
}

static void test_pack_IMAGE_AUX_SYMBOL(void)
{
    /* IMAGE_AUX_SYMBOL (pack 2) */
}

static void test_pack_IMAGE_BASE_RELOCATION(void)
{
    /* IMAGE_BASE_RELOCATION (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_BASE_RELOCATION, 8)
    TEST_TYPE_ALIGN  (IMAGE_BASE_RELOCATION, 4)
    TEST_FIELD_SIZE  (IMAGE_BASE_RELOCATION, VirtualAddress, 4)
    TEST_FIELD_ALIGN (IMAGE_BASE_RELOCATION, VirtualAddress, 4)
    TEST_FIELD_OFFSET(IMAGE_BASE_RELOCATION, VirtualAddress, 0)
    TEST_FIELD_SIZE  (IMAGE_BASE_RELOCATION, SizeOfBlock, 4)
    TEST_FIELD_ALIGN (IMAGE_BASE_RELOCATION, SizeOfBlock, 4)
    TEST_FIELD_OFFSET(IMAGE_BASE_RELOCATION, SizeOfBlock, 4)
}

static void test_pack_IMAGE_BOUND_FORWARDER_REF(void)
{
    /* IMAGE_BOUND_FORWARDER_REF (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_BOUND_FORWARDER_REF, 8)
    TEST_TYPE_ALIGN  (IMAGE_BOUND_FORWARDER_REF, 4)
    TEST_FIELD_SIZE  (IMAGE_BOUND_FORWARDER_REF, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_BOUND_FORWARDER_REF, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_BOUND_FORWARDER_REF, TimeDateStamp, 0)
    TEST_FIELD_SIZE  (IMAGE_BOUND_FORWARDER_REF, OffsetModuleName, 2)
    TEST_FIELD_ALIGN (IMAGE_BOUND_FORWARDER_REF, OffsetModuleName, 2)
    TEST_FIELD_OFFSET(IMAGE_BOUND_FORWARDER_REF, OffsetModuleName, 4)
    TEST_FIELD_SIZE  (IMAGE_BOUND_FORWARDER_REF, Reserved, 2)
    TEST_FIELD_ALIGN (IMAGE_BOUND_FORWARDER_REF, Reserved, 2)
    TEST_FIELD_OFFSET(IMAGE_BOUND_FORWARDER_REF, Reserved, 6)
}

static void test_pack_IMAGE_BOUND_IMPORT_DESCRIPTOR(void)
{
    /* IMAGE_BOUND_IMPORT_DESCRIPTOR (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_BOUND_IMPORT_DESCRIPTOR, 8)
    TEST_TYPE_ALIGN  (IMAGE_BOUND_IMPORT_DESCRIPTOR, 4)
    TEST_FIELD_SIZE  (IMAGE_BOUND_IMPORT_DESCRIPTOR, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_BOUND_IMPORT_DESCRIPTOR, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_BOUND_IMPORT_DESCRIPTOR, TimeDateStamp, 0)
    TEST_FIELD_SIZE  (IMAGE_BOUND_IMPORT_DESCRIPTOR, OffsetModuleName, 2)
    TEST_FIELD_ALIGN (IMAGE_BOUND_IMPORT_DESCRIPTOR, OffsetModuleName, 2)
    TEST_FIELD_OFFSET(IMAGE_BOUND_IMPORT_DESCRIPTOR, OffsetModuleName, 4)
    TEST_FIELD_SIZE  (IMAGE_BOUND_IMPORT_DESCRIPTOR, NumberOfModuleForwarderRefs, 2)
    TEST_FIELD_ALIGN (IMAGE_BOUND_IMPORT_DESCRIPTOR, NumberOfModuleForwarderRefs, 2)
    TEST_FIELD_OFFSET(IMAGE_BOUND_IMPORT_DESCRIPTOR, NumberOfModuleForwarderRefs, 6)
}

static void test_pack_IMAGE_COFF_SYMBOLS_HEADER(void)
{
    /* IMAGE_COFF_SYMBOLS_HEADER (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_COFF_SYMBOLS_HEADER, 32)
    TEST_TYPE_ALIGN  (IMAGE_COFF_SYMBOLS_HEADER, 4)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, NumberOfSymbols, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, NumberOfSymbols, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, NumberOfSymbols, 0)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstSymbol, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstSymbol, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstSymbol, 4)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, NumberOfLinenumbers, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, NumberOfLinenumbers, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, NumberOfLinenumbers, 8)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstLinenumber, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstLinenumber, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstLinenumber, 12)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfCode, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfCode, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfCode, 16)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfCode, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfCode, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfCode, 20)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfData, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfData, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfData, 24)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfData, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfData, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfData, 28)
}

static void test_pack_IMAGE_DATA_DIRECTORY(void)
{
    /* IMAGE_DATA_DIRECTORY (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_DATA_DIRECTORY, 8)
    TEST_TYPE_ALIGN  (IMAGE_DATA_DIRECTORY, 4)
    TEST_FIELD_SIZE  (IMAGE_DATA_DIRECTORY, VirtualAddress, 4)
    TEST_FIELD_ALIGN (IMAGE_DATA_DIRECTORY, VirtualAddress, 4)
    TEST_FIELD_OFFSET(IMAGE_DATA_DIRECTORY, VirtualAddress, 0)
    TEST_FIELD_SIZE  (IMAGE_DATA_DIRECTORY, Size, 4)
    TEST_FIELD_ALIGN (IMAGE_DATA_DIRECTORY, Size, 4)
    TEST_FIELD_OFFSET(IMAGE_DATA_DIRECTORY, Size, 4)
}

static void test_pack_IMAGE_DEBUG_DIRECTORY(void)
{
    /* IMAGE_DEBUG_DIRECTORY (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_DEBUG_DIRECTORY, 28)
    TEST_TYPE_ALIGN  (IMAGE_DEBUG_DIRECTORY, 4)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, Characteristics, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, Characteristics, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, Characteristics, 0)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, MajorVersion, 8)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, MinorVersion, 10)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, Type, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, Type, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, Type, 12)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, SizeOfData, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, SizeOfData, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, SizeOfData, 16)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, AddressOfRawData, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, AddressOfRawData, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, AddressOfRawData, 20)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, PointerToRawData, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, PointerToRawData, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, PointerToRawData, 24)
}

static void test_pack_IMAGE_DEBUG_MISC(void)
{
    /* IMAGE_DEBUG_MISC (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_DEBUG_MISC, 16)
    TEST_TYPE_ALIGN  (IMAGE_DEBUG_MISC, 4)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, DataType, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, DataType, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, DataType, 0)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, Length, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, Length, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, Length, 4)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, Unicode, 1)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, Unicode, 1)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, Unicode, 8)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, Reserved, 3)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, Reserved, 1)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, Reserved, 9)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, Data, 1)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, Data, 1)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, Data, 12)
}

static void test_pack_IMAGE_DOS_HEADER(void)
{
    /* IMAGE_DOS_HEADER (pack 2) */
    TEST_TYPE_SIZE   (IMAGE_DOS_HEADER, 64)
    TEST_TYPE_ALIGN  (IMAGE_DOS_HEADER, 2)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_magic, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_magic, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_magic, 0)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_cblp, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_cblp, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_cblp, 2)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_cp, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_cp, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_cp, 4)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_crlc, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_crlc, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_crlc, 6)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_cparhdr, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_cparhdr, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_cparhdr, 8)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_minalloc, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_minalloc, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_minalloc, 10)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_maxalloc, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_maxalloc, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_maxalloc, 12)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_ss, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_ss, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_ss, 14)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_sp, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_sp, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_sp, 16)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_csum, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_csum, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_csum, 18)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_ip, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_ip, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_ip, 20)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_cs, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_cs, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_cs, 22)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_lfarlc, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_lfarlc, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_lfarlc, 24)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_ovno, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_ovno, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_ovno, 26)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_res, 8)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_res, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_res, 28)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_oemid, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_oemid, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_oemid, 36)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_oeminfo, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_oeminfo, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_oeminfo, 38)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_res2, 20)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_res2, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_res2, 40)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_lfanew, 4)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_lfanew, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_lfanew, 60)
}

static void test_pack_IMAGE_EXPORT_DIRECTORY(void)
{
    /* IMAGE_EXPORT_DIRECTORY (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_EXPORT_DIRECTORY, 40)
    TEST_TYPE_ALIGN  (IMAGE_EXPORT_DIRECTORY, 4)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, Characteristics, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, Characteristics, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, Characteristics, 0)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, MajorVersion, 8)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, MinorVersion, 10)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, Name, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, Name, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, Name, 12)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, Base, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, Base, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, Base, 16)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, NumberOfFunctions, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, NumberOfFunctions, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, NumberOfFunctions, 20)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, NumberOfNames, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, NumberOfNames, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, NumberOfNames, 24)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, AddressOfFunctions, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, AddressOfFunctions, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, AddressOfFunctions, 28)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, AddressOfNames, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, AddressOfNames, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, AddressOfNames, 32)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, AddressOfNameOrdinals, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, AddressOfNameOrdinals, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, AddressOfNameOrdinals, 36)
}

static void test_pack_IMAGE_FILE_HEADER(void)
{
    /* IMAGE_FILE_HEADER (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_FILE_HEADER, 20)
    TEST_TYPE_ALIGN  (IMAGE_FILE_HEADER, 4)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, Machine, 2)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, Machine, 2)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, Machine, 0)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, NumberOfSections, 2)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, NumberOfSections, 2)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, NumberOfSections, 2)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, PointerToSymbolTable, 4)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, PointerToSymbolTable, 4)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, PointerToSymbolTable, 8)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, NumberOfSymbols, 4)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, NumberOfSymbols, 4)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, NumberOfSymbols, 12)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, SizeOfOptionalHeader, 2)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, SizeOfOptionalHeader, 2)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, SizeOfOptionalHeader, 16)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, Characteristics, 2)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, Characteristics, 2)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, Characteristics, 18)
}

static void test_pack_IMAGE_FUNCTION_ENTRY(void)
{
    /* IMAGE_FUNCTION_ENTRY (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_FUNCTION_ENTRY, 12)
    TEST_TYPE_ALIGN  (IMAGE_FUNCTION_ENTRY, 4)
    TEST_FIELD_SIZE  (IMAGE_FUNCTION_ENTRY, StartingAddress, 4)
    TEST_FIELD_ALIGN (IMAGE_FUNCTION_ENTRY, StartingAddress, 4)
    TEST_FIELD_OFFSET(IMAGE_FUNCTION_ENTRY, StartingAddress, 0)
    TEST_FIELD_SIZE  (IMAGE_FUNCTION_ENTRY, EndingAddress, 4)
    TEST_FIELD_ALIGN (IMAGE_FUNCTION_ENTRY, EndingAddress, 4)
    TEST_FIELD_OFFSET(IMAGE_FUNCTION_ENTRY, EndingAddress, 4)
    TEST_FIELD_SIZE  (IMAGE_FUNCTION_ENTRY, EndOfPrologue, 4)
    TEST_FIELD_ALIGN (IMAGE_FUNCTION_ENTRY, EndOfPrologue, 4)
    TEST_FIELD_OFFSET(IMAGE_FUNCTION_ENTRY, EndOfPrologue, 8)
}

static void test_pack_IMAGE_IMPORT_BY_NAME(void)
{
    /* IMAGE_IMPORT_BY_NAME (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_IMPORT_BY_NAME, 4)
    TEST_TYPE_ALIGN  (IMAGE_IMPORT_BY_NAME, 2)
    TEST_FIELD_SIZE  (IMAGE_IMPORT_BY_NAME, Hint, 2)
    TEST_FIELD_ALIGN (IMAGE_IMPORT_BY_NAME, Hint, 2)
    TEST_FIELD_OFFSET(IMAGE_IMPORT_BY_NAME, Hint, 0)
    TEST_FIELD_SIZE  (IMAGE_IMPORT_BY_NAME, Name, 1)
    TEST_FIELD_ALIGN (IMAGE_IMPORT_BY_NAME, Name, 1)
    TEST_FIELD_OFFSET(IMAGE_IMPORT_BY_NAME, Name, 2)
}

static void test_pack_IMAGE_IMPORT_DESCRIPTOR(void)
{
    /* IMAGE_IMPORT_DESCRIPTOR (pack 4) */
}

static void test_pack_IMAGE_LINENUMBER(void)
{
    /* IMAGE_LINENUMBER (pack 2) */
}

static void test_pack_IMAGE_LOAD_CONFIG_DIRECTORY(void)
{
    /* IMAGE_LOAD_CONFIG_DIRECTORY (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_LOAD_CONFIG_DIRECTORY, 72)
    TEST_TYPE_ALIGN  (IMAGE_LOAD_CONFIG_DIRECTORY, 4)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, Size, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, Size, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, Size, 0)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, MajorVersion, 8)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, MinorVersion, 10)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsClear, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsClear, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsClear, 12)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsSet, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsSet, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsSet, 16)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 20)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 24)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitTotalFreeThreshold, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitTotalFreeThreshold, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitTotalFreeThreshold, 28)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, LockPrefixTable, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, LockPrefixTable, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, LockPrefixTable, 32)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, MaximumAllocationSize, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, MaximumAllocationSize, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, MaximumAllocationSize, 36)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, VirtualMemoryThreshold, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, VirtualMemoryThreshold, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, VirtualMemoryThreshold, 40)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, ProcessHeapFlags, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, ProcessHeapFlags, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, ProcessHeapFlags, 44)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, ProcessAffinityMask, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, ProcessAffinityMask, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, ProcessAffinityMask, 48)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, CSDVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, CSDVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, CSDVersion, 52)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, Reserved1, 2)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, Reserved1, 2)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, Reserved1, 54)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, EditList, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, EditList, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, EditList, 56)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, SecurityCookie, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, SecurityCookie, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, SecurityCookie, 60)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerTable, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerTable, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerTable, 64)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 68)
}

static void test_pack_IMAGE_NT_HEADERS(void)
{
    /* IMAGE_NT_HEADERS */
    TEST_TYPE_SIZE   (IMAGE_NT_HEADERS, 248)
    TEST_TYPE_ALIGN  (IMAGE_NT_HEADERS, 4)
}

static void test_pack_IMAGE_OS2_HEADER(void)
{
    /* IMAGE_OS2_HEADER (pack 2) */
    TEST_TYPE_SIZE   (IMAGE_OS2_HEADER, 64)
    TEST_TYPE_ALIGN  (IMAGE_OS2_HEADER, 2)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_magic, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_magic, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_magic, 0)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_ver, 1)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_ver, 1)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_ver, 2)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_rev, 1)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_rev, 1)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_rev, 3)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_enttab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_enttab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_enttab, 4)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cbenttab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cbenttab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cbenttab, 6)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_crc, 4)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_crc, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_crc, 8)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_flags, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_flags, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_flags, 12)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_autodata, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_autodata, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_autodata, 14)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_heap, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_heap, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_heap, 16)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_stack, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_stack, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_stack, 18)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_csip, 4)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_csip, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_csip, 20)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_sssp, 4)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_sssp, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_sssp, 24)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cseg, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cseg, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cseg, 28)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cmod, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cmod, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cmod, 30)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cbnrestab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cbnrestab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cbnrestab, 32)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_segtab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_segtab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_segtab, 34)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_rsrctab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_rsrctab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_rsrctab, 36)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_restab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_restab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_restab, 38)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_modtab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_modtab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_modtab, 40)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_imptab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_imptab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_imptab, 42)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_nrestab, 4)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_nrestab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_nrestab, 44)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cmovent, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cmovent, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cmovent, 48)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_align, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_align, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_align, 50)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cres, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cres, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cres, 52)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_exetyp, 1)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_exetyp, 1)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_exetyp, 54)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_flagsothers, 1)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_flagsothers, 1)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_flagsothers, 55)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_pretthunks, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_pretthunks, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_pretthunks, 56)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_psegrefbytes, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_psegrefbytes, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_psegrefbytes, 58)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_swaparea, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_swaparea, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_swaparea, 60)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_expver, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_expver, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_expver, 62)
}

static void test_pack_IMAGE_RELOCATION(void)
{
    /* IMAGE_RELOCATION (pack 2) */
}

static void test_pack_IMAGE_RESOURCE_DATA_ENTRY(void)
{
    /* IMAGE_RESOURCE_DATA_ENTRY (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_RESOURCE_DATA_ENTRY, 16)
    TEST_TYPE_ALIGN  (IMAGE_RESOURCE_DATA_ENTRY, 4)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DATA_ENTRY, OffsetToData, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DATA_ENTRY, OffsetToData, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DATA_ENTRY, OffsetToData, 0)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DATA_ENTRY, Size, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DATA_ENTRY, Size, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DATA_ENTRY, Size, 4)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DATA_ENTRY, CodePage, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DATA_ENTRY, CodePage, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DATA_ENTRY, CodePage, 8)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DATA_ENTRY, Reserved, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DATA_ENTRY, Reserved, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DATA_ENTRY, Reserved, 12)
}

static void test_pack_IMAGE_RESOURCE_DIRECTORY(void)
{
    /* IMAGE_RESOURCE_DIRECTORY (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_RESOURCE_DIRECTORY, 16)
    TEST_TYPE_ALIGN  (IMAGE_RESOURCE_DIRECTORY, 4)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, Characteristics, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, Characteristics, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, Characteristics, 0)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, MajorVersion, 8)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, MinorVersion, 10)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, NumberOfNamedEntries, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, NumberOfNamedEntries, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, NumberOfNamedEntries, 12)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, NumberOfIdEntries, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, NumberOfIdEntries, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, NumberOfIdEntries, 14)
}

static void test_pack_IMAGE_RESOURCE_DIRECTORY_ENTRY(void)
{
    /* IMAGE_RESOURCE_DIRECTORY_ENTRY (pack 4) */
}

static void test_pack_IMAGE_RESOURCE_DIRECTORY_STRING(void)
{
    /* IMAGE_RESOURCE_DIRECTORY_STRING (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_RESOURCE_DIRECTORY_STRING, 4)
    TEST_TYPE_ALIGN  (IMAGE_RESOURCE_DIRECTORY_STRING, 2)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY_STRING, Length, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY_STRING, Length, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY_STRING, Length, 0)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY_STRING, NameString, 1)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY_STRING, NameString, 1)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY_STRING, NameString, 2)
}

static void test_pack_IMAGE_RESOURCE_DIR_STRING_U(void)
{
    /* IMAGE_RESOURCE_DIR_STRING_U (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_RESOURCE_DIR_STRING_U, 4)
    TEST_TYPE_ALIGN  (IMAGE_RESOURCE_DIR_STRING_U, 2)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIR_STRING_U, Length, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIR_STRING_U, Length, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIR_STRING_U, Length, 0)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIR_STRING_U, NameString, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIR_STRING_U, NameString, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIR_STRING_U, NameString, 2)
}

static void test_pack_IMAGE_SECTION_HEADER(void)
{
    /* IMAGE_SECTION_HEADER (pack 4) */
    TEST_FIELD_SIZE  (IMAGE_SECTION_HEADER, Name, 8)
    TEST_FIELD_ALIGN (IMAGE_SECTION_HEADER, Name, 1)
    TEST_FIELD_OFFSET(IMAGE_SECTION_HEADER, Name, 0)
}

static void test_pack_IMAGE_SEPARATE_DEBUG_HEADER(void)
{
    /* IMAGE_SEPARATE_DEBUG_HEADER (pack 4) */
    TEST_TYPE_SIZE   (IMAGE_SEPARATE_DEBUG_HEADER, 48)
    TEST_TYPE_ALIGN  (IMAGE_SEPARATE_DEBUG_HEADER, 4)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Signature, 2)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Signature, 2)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Signature, 0)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Flags, 2)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Flags, 2)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Flags, 2)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Machine, 2)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Machine, 2)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Machine, 4)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Characteristics, 2)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Characteristics, 2)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Characteristics, 6)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, TimeDateStamp, 8)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, CheckSum, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, CheckSum, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, CheckSum, 12)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, ImageBase, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, ImageBase, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, ImageBase, 16)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, SizeOfImage, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, SizeOfImage, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, SizeOfImage, 20)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, NumberOfSections, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, NumberOfSections, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, NumberOfSections, 24)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, ExportedNamesSize, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, ExportedNamesSize, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, ExportedNamesSize, 28)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, DebugDirectorySize, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, DebugDirectorySize, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, DebugDirectorySize, 32)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, SectionAlignment, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, SectionAlignment, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, SectionAlignment, 36)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Reserved, 8)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Reserved, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Reserved, 40)
}

static void test_pack_IMAGE_SYMBOL(void)
{
    /* IMAGE_SYMBOL (pack 2) */
}

static void test_pack_IMAGE_THUNK_DATA(void)
{
    /* IMAGE_THUNK_DATA */
}

static void test_pack_IMAGE_TLS_DIRECTORY(void)
{
    /* IMAGE_TLS_DIRECTORY */
    TEST_TYPE_SIZE   (IMAGE_TLS_DIRECTORY, 24)
    TEST_TYPE_ALIGN  (IMAGE_TLS_DIRECTORY, 4)
}

static void test_pack_IMAGE_VXD_HEADER(void)
{
    /* IMAGE_VXD_HEADER (pack 2) */
    TEST_TYPE_SIZE   (IMAGE_VXD_HEADER, 196)
    TEST_TYPE_ALIGN  (IMAGE_VXD_HEADER, 2)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_magic, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_magic, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_magic, 0)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_border, 1)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_border, 1)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_border, 2)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_worder, 1)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_worder, 1)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_worder, 3)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_level, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_level, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_level, 4)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_cpu, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_cpu, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_cpu, 8)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_os, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_os, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_os, 10)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_ver, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_ver, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_ver, 12)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_mflags, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_mflags, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_mflags, 16)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_mpages, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_mpages, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_mpages, 20)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_startobj, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_startobj, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_startobj, 24)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_eip, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_eip, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_eip, 28)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_stackobj, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_stackobj, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_stackobj, 32)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_esp, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_esp, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_esp, 36)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_pagesize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_pagesize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_pagesize, 40)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_lastpagesize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_lastpagesize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_lastpagesize, 44)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_fixupsize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_fixupsize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_fixupsize, 48)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_fixupsum, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_fixupsum, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_fixupsum, 52)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_ldrsize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_ldrsize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_ldrsize, 56)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_ldrsum, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_ldrsum, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_ldrsum, 60)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_objtab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_objtab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_objtab, 64)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_objcnt, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_objcnt, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_objcnt, 68)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_objmap, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_objmap, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_objmap, 72)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_itermap, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_itermap, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_itermap, 76)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_rsrctab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_rsrctab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_rsrctab, 80)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_rsrccnt, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_rsrccnt, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_rsrccnt, 84)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_restab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_restab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_restab, 88)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_enttab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_enttab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_enttab, 92)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_dirtab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_dirtab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_dirtab, 96)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_dircnt, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_dircnt, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_dircnt, 100)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_fpagetab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_fpagetab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_fpagetab, 104)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_frectab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_frectab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_frectab, 108)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_impmod, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_impmod, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_impmod, 112)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_impmodcnt, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_impmodcnt, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_impmodcnt, 116)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_impproc, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_impproc, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_impproc, 120)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_pagesum, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_pagesum, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_pagesum, 124)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_datapage, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_datapage, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_datapage, 128)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_preload, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_preload, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_preload, 132)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_nrestab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_nrestab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_nrestab, 136)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_cbnrestab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_cbnrestab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_cbnrestab, 140)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_nressum, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_nressum, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_nressum, 144)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_autodata, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_autodata, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_autodata, 148)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_debuginfo, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_debuginfo, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_debuginfo, 152)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_debuglen, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_debuglen, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_debuglen, 156)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_instpreload, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_instpreload, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_instpreload, 160)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_instdemand, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_instdemand, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_instdemand, 164)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_heapsize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_heapsize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_heapsize, 168)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_res3, 12)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_res3, 1)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_res3, 172)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_winresoff, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_winresoff, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_winresoff, 184)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_winreslen, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_winreslen, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_winreslen, 188)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_devid, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_devid, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_devid, 192)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_ddkver, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_ddkver, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_ddkver, 194)
}

static void test_pack_IO_COUNTERS(void)
{
    /* IO_COUNTERS (pack 8) */
    TEST_TYPE_SIZE   (IO_COUNTERS, 48)
    TEST_TYPE_ALIGN  (IO_COUNTERS, 8)
    TEST_FIELD_SIZE  (IO_COUNTERS, ReadOperationCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, ReadOperationCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, ReadOperationCount, 0)
    TEST_FIELD_SIZE  (IO_COUNTERS, WriteOperationCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, WriteOperationCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, WriteOperationCount, 8)
    TEST_FIELD_SIZE  (IO_COUNTERS, OtherOperationCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, OtherOperationCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, OtherOperationCount, 16)
    TEST_FIELD_SIZE  (IO_COUNTERS, ReadTransferCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, ReadTransferCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, ReadTransferCount, 24)
    TEST_FIELD_SIZE  (IO_COUNTERS, WriteTransferCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, WriteTransferCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, WriteTransferCount, 32)
    TEST_FIELD_SIZE  (IO_COUNTERS, OtherTransferCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, OtherTransferCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, OtherTransferCount, 40)
}

static void test_pack_LANGID(void)
{
    /* LANGID */
    TEST_TYPE_SIZE   (LANGID, 2)
    TEST_TYPE_ALIGN  (LANGID, 2)
    TEST_TYPE_UNSIGNED(LANGID)
}

static void test_pack_LARGE_INTEGER(void)
{
    /* LARGE_INTEGER (pack 4) */
}

static void test_pack_LCID(void)
{
    /* LCID */
    TEST_TYPE_SIZE   (LCID, 4)
    TEST_TYPE_ALIGN  (LCID, 4)
    TEST_TYPE_UNSIGNED(LCID)
}

static void test_pack_LIST_ENTRY(void)
{
    /* LIST_ENTRY (pack 4) */
    TEST_TYPE_SIZE   (LIST_ENTRY, 8)
    TEST_TYPE_ALIGN  (LIST_ENTRY, 4)
    TEST_FIELD_SIZE  (LIST_ENTRY, Flink, 4)
    TEST_FIELD_ALIGN (LIST_ENTRY, Flink, 4)
    TEST_FIELD_OFFSET(LIST_ENTRY, Flink, 0)
    TEST_FIELD_SIZE  (LIST_ENTRY, Blink, 4)
    TEST_FIELD_ALIGN (LIST_ENTRY, Blink, 4)
    TEST_FIELD_OFFSET(LIST_ENTRY, Blink, 4)
}

static void test_pack_LONG(void)
{
    /* LONG */
    TEST_TYPE_SIZE   (LONG, 4)
    TEST_TYPE_ALIGN  (LONG, 4)
    TEST_TYPE_SIGNED(LONG)
}

static void test_pack_LONGLONG(void)
{
    /* LONGLONG */
    TEST_TYPE_SIZE   (LONGLONG, 8)
    TEST_TYPE_ALIGN  (LONGLONG, 8)
    TEST_TYPE_SIGNED(LONGLONG)
}

static void test_pack_LUID(void)
{
    /* LUID (pack 4) */
    TEST_TYPE_SIZE   (LUID, 8)
    TEST_TYPE_ALIGN  (LUID, 4)
    TEST_FIELD_SIZE  (LUID, LowPart, 4)
    TEST_FIELD_ALIGN (LUID, LowPart, 4)
    TEST_FIELD_OFFSET(LUID, LowPart, 0)
    TEST_FIELD_SIZE  (LUID, HighPart, 4)
    TEST_FIELD_ALIGN (LUID, HighPart, 4)
    TEST_FIELD_OFFSET(LUID, HighPart, 4)
}

static void test_pack_LUID_AND_ATTRIBUTES(void)
{
    /* LUID_AND_ATTRIBUTES (pack 4) */
    TEST_TYPE_SIZE   (LUID_AND_ATTRIBUTES, 12)
    TEST_TYPE_ALIGN  (LUID_AND_ATTRIBUTES, 4)
    TEST_FIELD_SIZE  (LUID_AND_ATTRIBUTES, Luid, 8)
    TEST_FIELD_ALIGN (LUID_AND_ATTRIBUTES, Luid, 4)
    TEST_FIELD_OFFSET(LUID_AND_ATTRIBUTES, Luid, 0)
    TEST_FIELD_SIZE  (LUID_AND_ATTRIBUTES, Attributes, 4)
    TEST_FIELD_ALIGN (LUID_AND_ATTRIBUTES, Attributes, 4)
    TEST_FIELD_OFFSET(LUID_AND_ATTRIBUTES, Attributes, 8)
}

static void test_pack_MEMORY_BASIC_INFORMATION(void)
{
    /* MEMORY_BASIC_INFORMATION (pack 4) */
    TEST_TYPE_SIZE   (MEMORY_BASIC_INFORMATION, 28)
    TEST_TYPE_ALIGN  (MEMORY_BASIC_INFORMATION, 4)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, BaseAddress, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, BaseAddress, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, BaseAddress, 0)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, AllocationBase, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, AllocationBase, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, AllocationBase, 4)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, AllocationProtect, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, AllocationProtect, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, AllocationProtect, 8)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, RegionSize, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, RegionSize, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, RegionSize, 12)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, State, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, State, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, State, 16)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, Protect, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, Protect, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, Protect, 20)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, Type, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, Type, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, Type, 24)
}

static void test_pack_MESSAGE_RESOURCE_BLOCK(void)
{
    /* MESSAGE_RESOURCE_BLOCK (pack 4) */
    TEST_TYPE_SIZE   (MESSAGE_RESOURCE_BLOCK, 12)
    TEST_TYPE_ALIGN  (MESSAGE_RESOURCE_BLOCK, 4)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_BLOCK, LowId, 4)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_BLOCK, LowId, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_BLOCK, LowId, 0)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_BLOCK, HighId, 4)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_BLOCK, HighId, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_BLOCK, HighId, 4)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_BLOCK, OffsetToEntries, 4)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_BLOCK, OffsetToEntries, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_BLOCK, OffsetToEntries, 8)
}

static void test_pack_MESSAGE_RESOURCE_DATA(void)
{
    /* MESSAGE_RESOURCE_DATA (pack 4) */
    TEST_TYPE_SIZE   (MESSAGE_RESOURCE_DATA, 16)
    TEST_TYPE_ALIGN  (MESSAGE_RESOURCE_DATA, 4)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_DATA, NumberOfBlocks, 4)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_DATA, NumberOfBlocks, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_DATA, NumberOfBlocks, 0)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_DATA, Blocks, 12)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_DATA, Blocks, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_DATA, Blocks, 4)
}

static void test_pack_MESSAGE_RESOURCE_ENTRY(void)
{
    /* MESSAGE_RESOURCE_ENTRY (pack 4) */
    TEST_TYPE_SIZE   (MESSAGE_RESOURCE_ENTRY, 6)
    TEST_TYPE_ALIGN  (MESSAGE_RESOURCE_ENTRY, 2)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_ENTRY, Length, 2)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_ENTRY, Length, 2)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_ENTRY, Length, 0)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_ENTRY, Flags, 2)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_ENTRY, Flags, 2)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_ENTRY, Flags, 2)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_ENTRY, Text, 1)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_ENTRY, Text, 1)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_ENTRY, Text, 4)
}

static void test_pack_NT_TIB(void)
{
    /* NT_TIB (pack 4) */
    TEST_FIELD_SIZE  (NT_TIB, ExceptionList, 4)
    TEST_FIELD_ALIGN (NT_TIB, ExceptionList, 4)
    TEST_FIELD_OFFSET(NT_TIB, ExceptionList, 0)
    TEST_FIELD_SIZE  (NT_TIB, StackBase, 4)
    TEST_FIELD_ALIGN (NT_TIB, StackBase, 4)
    TEST_FIELD_OFFSET(NT_TIB, StackBase, 4)
    TEST_FIELD_SIZE  (NT_TIB, StackLimit, 4)
    TEST_FIELD_ALIGN (NT_TIB, StackLimit, 4)
    TEST_FIELD_OFFSET(NT_TIB, StackLimit, 8)
    TEST_FIELD_SIZE  (NT_TIB, SubSystemTib, 4)
    TEST_FIELD_ALIGN (NT_TIB, SubSystemTib, 4)
    TEST_FIELD_OFFSET(NT_TIB, SubSystemTib, 12)
}

static void test_pack_OBJECT_TYPE_LIST(void)
{
    /* OBJECT_TYPE_LIST (pack 4) */
    TEST_TYPE_SIZE   (OBJECT_TYPE_LIST, 8)
    TEST_TYPE_ALIGN  (OBJECT_TYPE_LIST, 4)
    TEST_FIELD_SIZE  (OBJECT_TYPE_LIST, Level, 2)
    TEST_FIELD_ALIGN (OBJECT_TYPE_LIST, Level, 2)
    TEST_FIELD_OFFSET(OBJECT_TYPE_LIST, Level, 0)
    TEST_FIELD_SIZE  (OBJECT_TYPE_LIST, Sbz, 2)
    TEST_FIELD_ALIGN (OBJECT_TYPE_LIST, Sbz, 2)
    TEST_FIELD_OFFSET(OBJECT_TYPE_LIST, Sbz, 2)
    TEST_FIELD_SIZE  (OBJECT_TYPE_LIST, ObjectType, 4)
    TEST_FIELD_ALIGN (OBJECT_TYPE_LIST, ObjectType, 4)
    TEST_FIELD_OFFSET(OBJECT_TYPE_LIST, ObjectType, 4)
}

static void test_pack_PACCESS_ALLOWED_ACE(void)
{
    /* PACCESS_ALLOWED_ACE */
    TEST_TYPE_SIZE   (PACCESS_ALLOWED_ACE, 4)
    TEST_TYPE_ALIGN  (PACCESS_ALLOWED_ACE, 4)
    TEST_TARGET_SIZE (PACCESS_ALLOWED_ACE, 12)
    TEST_TARGET_ALIGN(PACCESS_ALLOWED_ACE, 4)
}

static void test_pack_PACCESS_DENIED_ACE(void)
{
    /* PACCESS_DENIED_ACE */
    TEST_TYPE_SIZE   (PACCESS_DENIED_ACE, 4)
    TEST_TYPE_ALIGN  (PACCESS_DENIED_ACE, 4)
    TEST_TARGET_SIZE (PACCESS_DENIED_ACE, 12)
    TEST_TARGET_ALIGN(PACCESS_DENIED_ACE, 4)
}

static void test_pack_PACCESS_TOKEN(void)
{
    /* PACCESS_TOKEN */
    TEST_TYPE_SIZE   (PACCESS_TOKEN, 4)
    TEST_TYPE_ALIGN  (PACCESS_TOKEN, 4)
}

static void test_pack_PACE_HEADER(void)
{
    /* PACE_HEADER */
    TEST_TYPE_SIZE   (PACE_HEADER, 4)
    TEST_TYPE_ALIGN  (PACE_HEADER, 4)
    TEST_TARGET_SIZE (PACE_HEADER, 4)
    TEST_TARGET_ALIGN(PACE_HEADER, 2)
}

static void test_pack_PACL(void)
{
    /* PACL */
    TEST_TYPE_SIZE   (PACL, 4)
    TEST_TYPE_ALIGN  (PACL, 4)
    TEST_TARGET_SIZE (PACL, 8)
    TEST_TARGET_ALIGN(PACL, 2)
}

static void test_pack_PACL_REVISION_INFORMATION(void)
{
    /* PACL_REVISION_INFORMATION */
    TEST_TYPE_SIZE   (PACL_REVISION_INFORMATION, 4)
    TEST_TYPE_ALIGN  (PACL_REVISION_INFORMATION, 4)
    TEST_TARGET_SIZE (PACL_REVISION_INFORMATION, 4)
    TEST_TARGET_ALIGN(PACL_REVISION_INFORMATION, 4)
}

static void test_pack_PACL_SIZE_INFORMATION(void)
{
    /* PACL_SIZE_INFORMATION */
    TEST_TYPE_SIZE   (PACL_SIZE_INFORMATION, 4)
    TEST_TYPE_ALIGN  (PACL_SIZE_INFORMATION, 4)
    TEST_TARGET_SIZE (PACL_SIZE_INFORMATION, 12)
    TEST_TARGET_ALIGN(PACL_SIZE_INFORMATION, 4)
}

static void test_pack_PCCH(void)
{
    /* PCCH */
    TEST_TYPE_SIZE   (PCCH, 4)
    TEST_TYPE_ALIGN  (PCCH, 4)
    TEST_TARGET_SIZE (PCCH, 1)
    TEST_TARGET_ALIGN(PCCH, 1)
}

static void test_pack_PCH(void)
{
    /* PCH */
    TEST_TYPE_SIZE   (PCH, 4)
    TEST_TYPE_ALIGN  (PCH, 4)
    TEST_TARGET_SIZE (PCH, 1)
    TEST_TARGET_ALIGN(PCH, 1)
}

static void test_pack_PCSTR(void)
{
    /* PCSTR */
    TEST_TYPE_SIZE   (PCSTR, 4)
    TEST_TYPE_ALIGN  (PCSTR, 4)
    TEST_TARGET_SIZE (PCSTR, 1)
    TEST_TARGET_ALIGN(PCSTR, 1)
}

static void test_pack_PCTSTR(void)
{
    /* PCTSTR */
    TEST_TYPE_SIZE   (PCTSTR, 4)
    TEST_TYPE_ALIGN  (PCTSTR, 4)
}

static void test_pack_PCWCH(void)
{
    /* PCWCH */
    TEST_TYPE_SIZE   (PCWCH, 4)
    TEST_TYPE_ALIGN  (PCWCH, 4)
    TEST_TARGET_SIZE (PCWCH, 2)
    TEST_TARGET_ALIGN(PCWCH, 2)
}

static void test_pack_PCWSTR(void)
{
    /* PCWSTR */
    TEST_TYPE_SIZE   (PCWSTR, 4)
    TEST_TYPE_ALIGN  (PCWSTR, 4)
    TEST_TARGET_SIZE (PCWSTR, 2)
    TEST_TARGET_ALIGN(PCWSTR, 2)
}

static void test_pack_PEXCEPTION_POINTERS(void)
{
    /* PEXCEPTION_POINTERS */
    TEST_TYPE_SIZE   (PEXCEPTION_POINTERS, 4)
    TEST_TYPE_ALIGN  (PEXCEPTION_POINTERS, 4)
    TEST_TARGET_SIZE (PEXCEPTION_POINTERS, 8)
    TEST_TARGET_ALIGN(PEXCEPTION_POINTERS, 4)
}

static void test_pack_PEXCEPTION_RECORD(void)
{
    /* PEXCEPTION_RECORD */
    TEST_TYPE_SIZE   (PEXCEPTION_RECORD, 4)
    TEST_TYPE_ALIGN  (PEXCEPTION_RECORD, 4)
    TEST_TARGET_SIZE (PEXCEPTION_RECORD, 80)
    TEST_TARGET_ALIGN(PEXCEPTION_RECORD, 4)
}

static void test_pack_PFLOATING_SAVE_AREA(void)
{
    /* PFLOATING_SAVE_AREA */
    TEST_TYPE_SIZE   (PFLOATING_SAVE_AREA, 4)
    TEST_TYPE_ALIGN  (PFLOATING_SAVE_AREA, 4)
    TEST_TARGET_SIZE (PFLOATING_SAVE_AREA, 112)
    TEST_TARGET_ALIGN(PFLOATING_SAVE_AREA, 4)
}

static void test_pack_PFPO_DATA(void)
{
    /* PFPO_DATA */
    TEST_TYPE_SIZE   (PFPO_DATA, 4)
    TEST_TYPE_ALIGN  (PFPO_DATA, 4)
    TEST_TARGET_SIZE (PFPO_DATA, 16)
    TEST_TARGET_ALIGN(PFPO_DATA, 4)
}

static void test_pack_PGENERIC_MAPPING(void)
{
    /* PGENERIC_MAPPING */
    TEST_TYPE_SIZE   (PGENERIC_MAPPING, 4)
    TEST_TYPE_ALIGN  (PGENERIC_MAPPING, 4)
    TEST_TARGET_SIZE (PGENERIC_MAPPING, 16)
    TEST_TARGET_ALIGN(PGENERIC_MAPPING, 4)
}

static void test_pack_PHANDLE(void)
{
    /* PHANDLE */
    TEST_TYPE_SIZE   (PHANDLE, 4)
    TEST_TYPE_ALIGN  (PHANDLE, 4)
    TEST_TARGET_SIZE (PHANDLE, 4)
    TEST_TARGET_ALIGN(PHANDLE, 4)
}

static void test_pack_PIMAGE_ARCHIVE_MEMBER_HEADER(void)
{
    /* PIMAGE_ARCHIVE_MEMBER_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_ARCHIVE_MEMBER_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_ARCHIVE_MEMBER_HEADER, 4)
    TEST_TARGET_SIZE (PIMAGE_ARCHIVE_MEMBER_HEADER, 60)
    TEST_TARGET_ALIGN(PIMAGE_ARCHIVE_MEMBER_HEADER, 1)
}

static void test_pack_PIMAGE_AUX_SYMBOL(void)
{
    /* PIMAGE_AUX_SYMBOL */
    TEST_TYPE_SIZE   (PIMAGE_AUX_SYMBOL, 4)
    TEST_TYPE_ALIGN  (PIMAGE_AUX_SYMBOL, 4)
}

static void test_pack_PIMAGE_BASE_RELOCATION(void)
{
    /* PIMAGE_BASE_RELOCATION */
    TEST_TYPE_SIZE   (PIMAGE_BASE_RELOCATION, 4)
    TEST_TYPE_ALIGN  (PIMAGE_BASE_RELOCATION, 4)
    TEST_TARGET_SIZE (PIMAGE_BASE_RELOCATION, 8)
    TEST_TARGET_ALIGN(PIMAGE_BASE_RELOCATION, 4)
}

static void test_pack_PIMAGE_BOUND_FORWARDER_REF(void)
{
    /* PIMAGE_BOUND_FORWARDER_REF */
    TEST_TYPE_SIZE   (PIMAGE_BOUND_FORWARDER_REF, 4)
    TEST_TYPE_ALIGN  (PIMAGE_BOUND_FORWARDER_REF, 4)
    TEST_TARGET_SIZE (PIMAGE_BOUND_FORWARDER_REF, 8)
    TEST_TARGET_ALIGN(PIMAGE_BOUND_FORWARDER_REF, 4)
}

static void test_pack_PIMAGE_BOUND_IMPORT_DESCRIPTOR(void)
{
    /* PIMAGE_BOUND_IMPORT_DESCRIPTOR */
    TEST_TYPE_SIZE   (PIMAGE_BOUND_IMPORT_DESCRIPTOR, 4)
    TEST_TYPE_ALIGN  (PIMAGE_BOUND_IMPORT_DESCRIPTOR, 4)
    TEST_TARGET_SIZE (PIMAGE_BOUND_IMPORT_DESCRIPTOR, 8)
    TEST_TARGET_ALIGN(PIMAGE_BOUND_IMPORT_DESCRIPTOR, 4)
}

static void test_pack_PIMAGE_COFF_SYMBOLS_HEADER(void)
{
    /* PIMAGE_COFF_SYMBOLS_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_COFF_SYMBOLS_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_COFF_SYMBOLS_HEADER, 4)
    TEST_TARGET_SIZE (PIMAGE_COFF_SYMBOLS_HEADER, 32)
    TEST_TARGET_ALIGN(PIMAGE_COFF_SYMBOLS_HEADER, 4)
}

static void test_pack_PIMAGE_DATA_DIRECTORY(void)
{
    /* PIMAGE_DATA_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_DATA_DIRECTORY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_DATA_DIRECTORY, 4)
    TEST_TARGET_SIZE (PIMAGE_DATA_DIRECTORY, 8)
    TEST_TARGET_ALIGN(PIMAGE_DATA_DIRECTORY, 4)
}

static void test_pack_PIMAGE_DEBUG_DIRECTORY(void)
{
    /* PIMAGE_DEBUG_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_DEBUG_DIRECTORY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_DEBUG_DIRECTORY, 4)
    TEST_TARGET_SIZE (PIMAGE_DEBUG_DIRECTORY, 28)
    TEST_TARGET_ALIGN(PIMAGE_DEBUG_DIRECTORY, 4)
}

static void test_pack_PIMAGE_DEBUG_MISC(void)
{
    /* PIMAGE_DEBUG_MISC */
    TEST_TYPE_SIZE   (PIMAGE_DEBUG_MISC, 4)
    TEST_TYPE_ALIGN  (PIMAGE_DEBUG_MISC, 4)
    TEST_TARGET_SIZE (PIMAGE_DEBUG_MISC, 16)
    TEST_TARGET_ALIGN(PIMAGE_DEBUG_MISC, 4)
}

static void test_pack_PIMAGE_DOS_HEADER(void)
{
    /* PIMAGE_DOS_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_DOS_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_DOS_HEADER, 4)
    TEST_TARGET_SIZE (PIMAGE_DOS_HEADER, 64)
    TEST_TARGET_ALIGN(PIMAGE_DOS_HEADER, 2)
}

static void test_pack_PIMAGE_EXPORT_DIRECTORY(void)
{
    /* PIMAGE_EXPORT_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_EXPORT_DIRECTORY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_EXPORT_DIRECTORY, 4)
    TEST_TARGET_SIZE (PIMAGE_EXPORT_DIRECTORY, 40)
    TEST_TARGET_ALIGN(PIMAGE_EXPORT_DIRECTORY, 4)
}

static void test_pack_PIMAGE_FILE_HEADER(void)
{
    /* PIMAGE_FILE_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_FILE_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_FILE_HEADER, 4)
    TEST_TARGET_SIZE (PIMAGE_FILE_HEADER, 20)
    TEST_TARGET_ALIGN(PIMAGE_FILE_HEADER, 4)
}

static void test_pack_PIMAGE_FUNCTION_ENTRY(void)
{
    /* PIMAGE_FUNCTION_ENTRY */
    TEST_TYPE_SIZE   (PIMAGE_FUNCTION_ENTRY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_FUNCTION_ENTRY, 4)
    TEST_TARGET_SIZE (PIMAGE_FUNCTION_ENTRY, 12)
    TEST_TARGET_ALIGN(PIMAGE_FUNCTION_ENTRY, 4)
}

static void test_pack_PIMAGE_IMPORT_BY_NAME(void)
{
    /* PIMAGE_IMPORT_BY_NAME */
    TEST_TYPE_SIZE   (PIMAGE_IMPORT_BY_NAME, 4)
    TEST_TYPE_ALIGN  (PIMAGE_IMPORT_BY_NAME, 4)
    TEST_TARGET_SIZE (PIMAGE_IMPORT_BY_NAME, 4)
    TEST_TARGET_ALIGN(PIMAGE_IMPORT_BY_NAME, 2)
}

static void test_pack_PIMAGE_IMPORT_DESCRIPTOR(void)
{
    /* PIMAGE_IMPORT_DESCRIPTOR */
    TEST_TYPE_SIZE   (PIMAGE_IMPORT_DESCRIPTOR, 4)
    TEST_TYPE_ALIGN  (PIMAGE_IMPORT_DESCRIPTOR, 4)
}

static void test_pack_PIMAGE_LINENUMBER(void)
{
    /* PIMAGE_LINENUMBER */
    TEST_TYPE_SIZE   (PIMAGE_LINENUMBER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_LINENUMBER, 4)
}

static void test_pack_PIMAGE_LOAD_CONFIG_DIRECTORY(void)
{
    /* PIMAGE_LOAD_CONFIG_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_LOAD_CONFIG_DIRECTORY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_LOAD_CONFIG_DIRECTORY, 4)
    TEST_TARGET_SIZE (PIMAGE_LOAD_CONFIG_DIRECTORY, 72)
    TEST_TARGET_ALIGN(PIMAGE_LOAD_CONFIG_DIRECTORY, 4)
}

static void test_pack_PIMAGE_NT_HEADERS(void)
{
    /* PIMAGE_NT_HEADERS */
    TEST_TYPE_SIZE   (PIMAGE_NT_HEADERS, 4)
    TEST_TYPE_ALIGN  (PIMAGE_NT_HEADERS, 4)
}

static void test_pack_PIMAGE_OPTIONAL_HEADER(void)
{
    /* PIMAGE_OPTIONAL_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_OPTIONAL_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_OPTIONAL_HEADER, 4)
}

static void test_pack_PIMAGE_OS2_HEADER(void)
{
    /* PIMAGE_OS2_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_OS2_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_OS2_HEADER, 4)
    TEST_TARGET_SIZE (PIMAGE_OS2_HEADER, 64)
    TEST_TARGET_ALIGN(PIMAGE_OS2_HEADER, 2)
}

static void test_pack_PIMAGE_RELOCATION(void)
{
    /* PIMAGE_RELOCATION */
    TEST_TYPE_SIZE   (PIMAGE_RELOCATION, 4)
    TEST_TYPE_ALIGN  (PIMAGE_RELOCATION, 4)
}

static void test_pack_PIMAGE_RESOURCE_DATA_ENTRY(void)
{
    /* PIMAGE_RESOURCE_DATA_ENTRY */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DATA_ENTRY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DATA_ENTRY, 4)
    TEST_TARGET_SIZE (PIMAGE_RESOURCE_DATA_ENTRY, 16)
    TEST_TARGET_ALIGN(PIMAGE_RESOURCE_DATA_ENTRY, 4)
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DIRECTORY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DIRECTORY, 4)
    TEST_TARGET_SIZE (PIMAGE_RESOURCE_DIRECTORY, 16)
    TEST_TARGET_ALIGN(PIMAGE_RESOURCE_DIRECTORY, 4)
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY_ENTRY(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY_ENTRY */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DIRECTORY_ENTRY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DIRECTORY_ENTRY, 4)
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY_STRING(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY_STRING */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DIRECTORY_STRING, 4)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DIRECTORY_STRING, 4)
    TEST_TARGET_SIZE (PIMAGE_RESOURCE_DIRECTORY_STRING, 4)
    TEST_TARGET_ALIGN(PIMAGE_RESOURCE_DIRECTORY_STRING, 2)
}

static void test_pack_PIMAGE_RESOURCE_DIR_STRING_U(void)
{
    /* PIMAGE_RESOURCE_DIR_STRING_U */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DIR_STRING_U, 4)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DIR_STRING_U, 4)
    TEST_TARGET_SIZE (PIMAGE_RESOURCE_DIR_STRING_U, 4)
    TEST_TARGET_ALIGN(PIMAGE_RESOURCE_DIR_STRING_U, 2)
}

static void test_pack_PIMAGE_SECTION_HEADER(void)
{
    /* PIMAGE_SECTION_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_SECTION_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_SECTION_HEADER, 4)
}

static void test_pack_PIMAGE_SEPARATE_DEBUG_HEADER(void)
{
    /* PIMAGE_SEPARATE_DEBUG_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_SEPARATE_DEBUG_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_SEPARATE_DEBUG_HEADER, 4)
    TEST_TARGET_SIZE (PIMAGE_SEPARATE_DEBUG_HEADER, 48)
    TEST_TARGET_ALIGN(PIMAGE_SEPARATE_DEBUG_HEADER, 4)
}

static void test_pack_PIMAGE_SYMBOL(void)
{
    /* PIMAGE_SYMBOL */
    TEST_TYPE_SIZE   (PIMAGE_SYMBOL, 4)
    TEST_TYPE_ALIGN  (PIMAGE_SYMBOL, 4)
}

static void test_pack_PIMAGE_THUNK_DATA(void)
{
    /* PIMAGE_THUNK_DATA */
    TEST_TYPE_SIZE   (PIMAGE_THUNK_DATA, 4)
    TEST_TYPE_ALIGN  (PIMAGE_THUNK_DATA, 4)
}

static void test_pack_PIMAGE_TLS_CALLBACK(void)
{
    /* PIMAGE_TLS_CALLBACK */
    TEST_TYPE_SIZE   (PIMAGE_TLS_CALLBACK, 4)
    TEST_TYPE_ALIGN  (PIMAGE_TLS_CALLBACK, 4)
}

static void test_pack_PIMAGE_TLS_DIRECTORY(void)
{
    /* PIMAGE_TLS_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_TLS_DIRECTORY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_TLS_DIRECTORY, 4)
}

static void test_pack_PIMAGE_VXD_HEADER(void)
{
    /* PIMAGE_VXD_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_VXD_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_VXD_HEADER, 4)
    TEST_TARGET_SIZE (PIMAGE_VXD_HEADER, 196)
    TEST_TARGET_ALIGN(PIMAGE_VXD_HEADER, 2)
}

static void test_pack_PIO_COUNTERS(void)
{
    /* PIO_COUNTERS */
    TEST_TYPE_SIZE   (PIO_COUNTERS, 4)
    TEST_TYPE_ALIGN  (PIO_COUNTERS, 4)
    TEST_TARGET_SIZE (PIO_COUNTERS, 48)
    TEST_TARGET_ALIGN(PIO_COUNTERS, 8)
}

static void test_pack_PISECURITY_DESCRIPTOR(void)
{
    /* PISECURITY_DESCRIPTOR */
    TEST_TYPE_SIZE   (PISECURITY_DESCRIPTOR, 4)
    TEST_TYPE_ALIGN  (PISECURITY_DESCRIPTOR, 4)
    TEST_TARGET_SIZE (PISECURITY_DESCRIPTOR, 20)
    TEST_TARGET_ALIGN(PISECURITY_DESCRIPTOR, 4)
}

static void test_pack_PISECURITY_DESCRIPTOR_RELATIVE(void)
{
    /* PISECURITY_DESCRIPTOR_RELATIVE */
    TEST_TYPE_SIZE   (PISECURITY_DESCRIPTOR_RELATIVE, 4)
    TEST_TYPE_ALIGN  (PISECURITY_DESCRIPTOR_RELATIVE, 4)
    TEST_TARGET_SIZE (PISECURITY_DESCRIPTOR_RELATIVE, 20)
    TEST_TARGET_ALIGN(PISECURITY_DESCRIPTOR_RELATIVE, 4)
}

static void test_pack_PISID(void)
{
    /* PISID */
    TEST_TYPE_SIZE   (PISID, 4)
    TEST_TYPE_ALIGN  (PISID, 4)
    TEST_TARGET_SIZE (PISID, 12)
    TEST_TARGET_ALIGN(PISID, 4)
}

static void test_pack_PLARGE_INTEGER(void)
{
    /* PLARGE_INTEGER */
    TEST_TYPE_SIZE   (PLARGE_INTEGER, 4)
    TEST_TYPE_ALIGN  (PLARGE_INTEGER, 4)
}

static void test_pack_PLIST_ENTRY(void)
{
    /* PLIST_ENTRY */
    TEST_TYPE_SIZE   (PLIST_ENTRY, 4)
    TEST_TYPE_ALIGN  (PLIST_ENTRY, 4)
    TEST_TARGET_SIZE (PLIST_ENTRY, 8)
    TEST_TARGET_ALIGN(PLIST_ENTRY, 4)
}

static void test_pack_PLUID(void)
{
    /* PLUID */
    TEST_TYPE_SIZE   (PLUID, 4)
    TEST_TYPE_ALIGN  (PLUID, 4)
    TEST_TARGET_SIZE (PLUID, 8)
    TEST_TARGET_ALIGN(PLUID, 4)
}

static void test_pack_PLUID_AND_ATTRIBUTES(void)
{
    /* PLUID_AND_ATTRIBUTES */
    TEST_TYPE_SIZE   (PLUID_AND_ATTRIBUTES, 4)
    TEST_TYPE_ALIGN  (PLUID_AND_ATTRIBUTES, 4)
    TEST_TARGET_SIZE (PLUID_AND_ATTRIBUTES, 12)
    TEST_TARGET_ALIGN(PLUID_AND_ATTRIBUTES, 4)
}

static void test_pack_PMEMORY_BASIC_INFORMATION(void)
{
    /* PMEMORY_BASIC_INFORMATION */
    TEST_TYPE_SIZE   (PMEMORY_BASIC_INFORMATION, 4)
    TEST_TYPE_ALIGN  (PMEMORY_BASIC_INFORMATION, 4)
    TEST_TARGET_SIZE (PMEMORY_BASIC_INFORMATION, 28)
    TEST_TARGET_ALIGN(PMEMORY_BASIC_INFORMATION, 4)
}

static void test_pack_PMESSAGE_RESOURCE_BLOCK(void)
{
    /* PMESSAGE_RESOURCE_BLOCK */
    TEST_TYPE_SIZE   (PMESSAGE_RESOURCE_BLOCK, 4)
    TEST_TYPE_ALIGN  (PMESSAGE_RESOURCE_BLOCK, 4)
    TEST_TARGET_SIZE (PMESSAGE_RESOURCE_BLOCK, 12)
    TEST_TARGET_ALIGN(PMESSAGE_RESOURCE_BLOCK, 4)
}

static void test_pack_PMESSAGE_RESOURCE_DATA(void)
{
    /* PMESSAGE_RESOURCE_DATA */
    TEST_TYPE_SIZE   (PMESSAGE_RESOURCE_DATA, 4)
    TEST_TYPE_ALIGN  (PMESSAGE_RESOURCE_DATA, 4)
    TEST_TARGET_SIZE (PMESSAGE_RESOURCE_DATA, 16)
    TEST_TARGET_ALIGN(PMESSAGE_RESOURCE_DATA, 4)
}

static void test_pack_PMESSAGE_RESOURCE_ENTRY(void)
{
    /* PMESSAGE_RESOURCE_ENTRY */
    TEST_TYPE_SIZE   (PMESSAGE_RESOURCE_ENTRY, 4)
    TEST_TYPE_ALIGN  (PMESSAGE_RESOURCE_ENTRY, 4)
    TEST_TARGET_SIZE (PMESSAGE_RESOURCE_ENTRY, 6)
    TEST_TARGET_ALIGN(PMESSAGE_RESOURCE_ENTRY, 2)
}

static void test_pack_PNT_TIB(void)
{
    /* PNT_TIB */
    TEST_TYPE_SIZE   (PNT_TIB, 4)
    TEST_TYPE_ALIGN  (PNT_TIB, 4)
}

static void test_pack_POBJECT_TYPE_LIST(void)
{
    /* POBJECT_TYPE_LIST */
    TEST_TYPE_SIZE   (POBJECT_TYPE_LIST, 4)
    TEST_TYPE_ALIGN  (POBJECT_TYPE_LIST, 4)
    TEST_TARGET_SIZE (POBJECT_TYPE_LIST, 8)
    TEST_TARGET_ALIGN(POBJECT_TYPE_LIST, 4)
}

static void test_pack_PPRIVILEGE_SET(void)
{
    /* PPRIVILEGE_SET */
    TEST_TYPE_SIZE   (PPRIVILEGE_SET, 4)
    TEST_TYPE_ALIGN  (PPRIVILEGE_SET, 4)
    TEST_TARGET_SIZE (PPRIVILEGE_SET, 20)
    TEST_TARGET_ALIGN(PPRIVILEGE_SET, 4)
}

static void test_pack_PRIVILEGE_SET(void)
{
    /* PRIVILEGE_SET (pack 4) */
    TEST_TYPE_SIZE   (PRIVILEGE_SET, 20)
    TEST_TYPE_ALIGN  (PRIVILEGE_SET, 4)
    TEST_FIELD_SIZE  (PRIVILEGE_SET, PrivilegeCount, 4)
    TEST_FIELD_ALIGN (PRIVILEGE_SET, PrivilegeCount, 4)
    TEST_FIELD_OFFSET(PRIVILEGE_SET, PrivilegeCount, 0)
    TEST_FIELD_SIZE  (PRIVILEGE_SET, Control, 4)
    TEST_FIELD_ALIGN (PRIVILEGE_SET, Control, 4)
    TEST_FIELD_OFFSET(PRIVILEGE_SET, Control, 4)
    TEST_FIELD_SIZE  (PRIVILEGE_SET, Privilege, 12)
    TEST_FIELD_ALIGN (PRIVILEGE_SET, Privilege, 4)
    TEST_FIELD_OFFSET(PRIVILEGE_SET, Privilege, 8)
}

static void test_pack_PRLIST_ENTRY(void)
{
    /* PRLIST_ENTRY */
    TEST_TYPE_SIZE   (PRLIST_ENTRY, 4)
    TEST_TYPE_ALIGN  (PRLIST_ENTRY, 4)
    TEST_TARGET_SIZE (PRLIST_ENTRY, 8)
    TEST_TARGET_ALIGN(PRLIST_ENTRY, 4)
}

static void test_pack_PRTL_CRITICAL_SECTION(void)
{
    /* PRTL_CRITICAL_SECTION */
    TEST_TYPE_SIZE   (PRTL_CRITICAL_SECTION, 4)
    TEST_TYPE_ALIGN  (PRTL_CRITICAL_SECTION, 4)
    TEST_TARGET_SIZE (PRTL_CRITICAL_SECTION, 24)
    TEST_TARGET_ALIGN(PRTL_CRITICAL_SECTION, 4)
}

static void test_pack_PRTL_CRITICAL_SECTION_DEBUG(void)
{
    /* PRTL_CRITICAL_SECTION_DEBUG */
    TEST_TYPE_SIZE   (PRTL_CRITICAL_SECTION_DEBUG, 4)
    TEST_TYPE_ALIGN  (PRTL_CRITICAL_SECTION_DEBUG, 4)
}

static void test_pack_PRTL_OSVERSIONINFOEXW(void)
{
    /* PRTL_OSVERSIONINFOEXW */
    TEST_TYPE_SIZE   (PRTL_OSVERSIONINFOEXW, 4)
    TEST_TYPE_ALIGN  (PRTL_OSVERSIONINFOEXW, 4)
    TEST_TARGET_SIZE (PRTL_OSVERSIONINFOEXW, 284)
    TEST_TARGET_ALIGN(PRTL_OSVERSIONINFOEXW, 4)
}

static void test_pack_PRTL_OSVERSIONINFOW(void)
{
    /* PRTL_OSVERSIONINFOW */
    TEST_TYPE_SIZE   (PRTL_OSVERSIONINFOW, 4)
    TEST_TYPE_ALIGN  (PRTL_OSVERSIONINFOW, 4)
    TEST_TARGET_SIZE (PRTL_OSVERSIONINFOW, 276)
    TEST_TARGET_ALIGN(PRTL_OSVERSIONINFOW, 4)
}

static void test_pack_PRTL_RESOURCE_DEBUG(void)
{
    /* PRTL_RESOURCE_DEBUG */
    TEST_TYPE_SIZE   (PRTL_RESOURCE_DEBUG, 4)
    TEST_TYPE_ALIGN  (PRTL_RESOURCE_DEBUG, 4)
}

static void test_pack_PSECURITY_DESCRIPTOR(void)
{
    /* PSECURITY_DESCRIPTOR */
    TEST_TYPE_SIZE   (PSECURITY_DESCRIPTOR, 4)
    TEST_TYPE_ALIGN  (PSECURITY_DESCRIPTOR, 4)
}

static void test_pack_PSECURITY_QUALITY_OF_SERVICE(void)
{
    /* PSECURITY_QUALITY_OF_SERVICE */
    TEST_TYPE_SIZE   (PSECURITY_QUALITY_OF_SERVICE, 4)
    TEST_TYPE_ALIGN  (PSECURITY_QUALITY_OF_SERVICE, 4)
}

static void test_pack_PSID(void)
{
    /* PSID */
    TEST_TYPE_SIZE   (PSID, 4)
    TEST_TYPE_ALIGN  (PSID, 4)
}

static void test_pack_PSID_IDENTIFIER_AUTHORITY(void)
{
    /* PSID_IDENTIFIER_AUTHORITY */
    TEST_TYPE_SIZE   (PSID_IDENTIFIER_AUTHORITY, 4)
    TEST_TYPE_ALIGN  (PSID_IDENTIFIER_AUTHORITY, 4)
    TEST_TARGET_SIZE (PSID_IDENTIFIER_AUTHORITY, 6)
    TEST_TARGET_ALIGN(PSID_IDENTIFIER_AUTHORITY, 1)
}

static void test_pack_PSINGLE_LIST_ENTRY(void)
{
    /* PSINGLE_LIST_ENTRY */
    TEST_TYPE_SIZE   (PSINGLE_LIST_ENTRY, 4)
    TEST_TYPE_ALIGN  (PSINGLE_LIST_ENTRY, 4)
    TEST_TARGET_SIZE (PSINGLE_LIST_ENTRY, 4)
    TEST_TARGET_ALIGN(PSINGLE_LIST_ENTRY, 4)
}

static void test_pack_PSTR(void)
{
    /* PSTR */
    TEST_TYPE_SIZE   (PSTR, 4)
    TEST_TYPE_ALIGN  (PSTR, 4)
    TEST_TARGET_SIZE (PSTR, 1)
    TEST_TARGET_ALIGN(PSTR, 1)
}

static void test_pack_PSYSTEM_ALARM_ACE(void)
{
    /* PSYSTEM_ALARM_ACE */
    TEST_TYPE_SIZE   (PSYSTEM_ALARM_ACE, 4)
    TEST_TYPE_ALIGN  (PSYSTEM_ALARM_ACE, 4)
    TEST_TARGET_SIZE (PSYSTEM_ALARM_ACE, 12)
    TEST_TARGET_ALIGN(PSYSTEM_ALARM_ACE, 4)
}

static void test_pack_PSYSTEM_AUDIT_ACE(void)
{
    /* PSYSTEM_AUDIT_ACE */
    TEST_TYPE_SIZE   (PSYSTEM_AUDIT_ACE, 4)
    TEST_TYPE_ALIGN  (PSYSTEM_AUDIT_ACE, 4)
    TEST_TARGET_SIZE (PSYSTEM_AUDIT_ACE, 12)
    TEST_TARGET_ALIGN(PSYSTEM_AUDIT_ACE, 4)
}

static void test_pack_PTOKEN_GROUPS(void)
{
    /* PTOKEN_GROUPS */
    TEST_TYPE_SIZE   (PTOKEN_GROUPS, 4)
    TEST_TYPE_ALIGN  (PTOKEN_GROUPS, 4)
    TEST_TARGET_SIZE (PTOKEN_GROUPS, 12)
    TEST_TARGET_ALIGN(PTOKEN_GROUPS, 4)
}

static void test_pack_PTOKEN_PRIVILEGES(void)
{
    /* PTOKEN_PRIVILEGES */
    TEST_TYPE_SIZE   (PTOKEN_PRIVILEGES, 4)
    TEST_TYPE_ALIGN  (PTOKEN_PRIVILEGES, 4)
    TEST_TARGET_SIZE (PTOKEN_PRIVILEGES, 16)
    TEST_TARGET_ALIGN(PTOKEN_PRIVILEGES, 4)
}

static void test_pack_PTOKEN_USER(void)
{
    /* PTOKEN_USER */
    TEST_TYPE_SIZE   (PTOKEN_USER, 4)
    TEST_TYPE_ALIGN  (PTOKEN_USER, 4)
    TEST_TARGET_SIZE (PTOKEN_USER, 8)
    TEST_TARGET_ALIGN(PTOKEN_USER, 4)
}

static void test_pack_PTSTR(void)
{
    /* PTSTR */
    TEST_TYPE_SIZE   (PTSTR, 4)
    TEST_TYPE_ALIGN  (PTSTR, 4)
}

static void test_pack_PULARGE_INTEGER(void)
{
    /* PULARGE_INTEGER */
    TEST_TYPE_SIZE   (PULARGE_INTEGER, 4)
    TEST_TYPE_ALIGN  (PULARGE_INTEGER, 4)
}

static void test_pack_PVECTORED_EXCEPTION_HANDLER(void)
{
    /* PVECTORED_EXCEPTION_HANDLER */
    TEST_TYPE_SIZE   (PVECTORED_EXCEPTION_HANDLER, 4)
    TEST_TYPE_ALIGN  (PVECTORED_EXCEPTION_HANDLER, 4)
}

static void test_pack_PVOID(void)
{
    /* PVOID */
    TEST_TYPE_SIZE   (PVOID, 4)
    TEST_TYPE_ALIGN  (PVOID, 4)
}

static void test_pack_PWCH(void)
{
    /* PWCH */
    TEST_TYPE_SIZE   (PWCH, 4)
    TEST_TYPE_ALIGN  (PWCH, 4)
    TEST_TARGET_SIZE (PWCH, 2)
    TEST_TARGET_ALIGN(PWCH, 2)
}

static void test_pack_PWSTR(void)
{
    /* PWSTR */
    TEST_TYPE_SIZE   (PWSTR, 4)
    TEST_TYPE_ALIGN  (PWSTR, 4)
    TEST_TARGET_SIZE (PWSTR, 2)
    TEST_TARGET_ALIGN(PWSTR, 2)
}

static void test_pack_RTL_CRITICAL_SECTION(void)
{
    /* RTL_CRITICAL_SECTION (pack 4) */
    TEST_TYPE_SIZE   (RTL_CRITICAL_SECTION, 24)
    TEST_TYPE_ALIGN  (RTL_CRITICAL_SECTION, 4)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, DebugInfo, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, DebugInfo, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, DebugInfo, 0)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, LockCount, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, LockCount, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, LockCount, 4)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, RecursionCount, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, RecursionCount, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, RecursionCount, 8)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, OwningThread, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, OwningThread, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, OwningThread, 12)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, LockSemaphore, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, LockSemaphore, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, LockSemaphore, 16)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, SpinCount, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, SpinCount, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, SpinCount, 20)
}

static void test_pack_RTL_CRITICAL_SECTION_DEBUG(void)
{
    /* RTL_CRITICAL_SECTION_DEBUG (pack 4) */
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, Type, 2)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, Type, 2)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, Type, 0)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, CriticalSection, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, CriticalSection, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, CriticalSection, 4)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, ProcessLocksList, 8)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, ProcessLocksList, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, ProcessLocksList, 8)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, EntryCount, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, EntryCount, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, EntryCount, 16)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, ContentionCount, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, ContentionCount, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, ContentionCount, 20)
}

static void test_pack_RTL_OSVERSIONINFOEXW(void)
{
    /* RTL_OSVERSIONINFOEXW (pack 4) */
    TEST_TYPE_SIZE   (RTL_OSVERSIONINFOEXW, 284)
    TEST_TYPE_ALIGN  (RTL_OSVERSIONINFOEXW, 4)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwOSVersionInfoSize, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwOSVersionInfoSize, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwOSVersionInfoSize, 0)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwMajorVersion, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwMajorVersion, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwMajorVersion, 4)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwMinorVersion, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwMinorVersion, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwMinorVersion, 8)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwBuildNumber, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwBuildNumber, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwBuildNumber, 12)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwPlatformId, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwPlatformId, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwPlatformId, 16)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, szCSDVersion, 256)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, szCSDVersion, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, szCSDVersion, 20)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wServicePackMajor, 2)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wServicePackMajor, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wServicePackMajor, 276)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wServicePackMinor, 2)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wServicePackMinor, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wServicePackMinor, 278)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wSuiteMask, 2)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wSuiteMask, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wSuiteMask, 280)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wProductType, 1)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wProductType, 1)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wProductType, 282)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wReserved, 1)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wReserved, 1)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wReserved, 283)
}

static void test_pack_RTL_OSVERSIONINFOW(void)
{
    /* RTL_OSVERSIONINFOW (pack 4) */
    TEST_TYPE_SIZE   (RTL_OSVERSIONINFOW, 276)
    TEST_TYPE_ALIGN  (RTL_OSVERSIONINFOW, 4)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwOSVersionInfoSize, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwOSVersionInfoSize, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwOSVersionInfoSize, 0)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwMajorVersion, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwMajorVersion, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwMajorVersion, 4)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwMinorVersion, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwMinorVersion, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwMinorVersion, 8)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwBuildNumber, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwBuildNumber, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwBuildNumber, 12)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwPlatformId, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwPlatformId, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwPlatformId, 16)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, szCSDVersion, 256)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, szCSDVersion, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, szCSDVersion, 20)
}

static void test_pack_RTL_RESOURCE_DEBUG(void)
{
    /* RTL_RESOURCE_DEBUG (pack 4) */
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, Type, 2)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, Type, 2)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, Type, 0)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, CriticalSection, 4)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, CriticalSection, 4)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, CriticalSection, 4)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, ProcessLocksList, 8)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, ProcessLocksList, 4)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, ProcessLocksList, 8)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, EntryCount, 4)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, EntryCount, 4)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, EntryCount, 16)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, ContentionCount, 4)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, ContentionCount, 4)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, ContentionCount, 20)
}

static void test_pack_SECURITY_CONTEXT_TRACKING_MODE(void)
{
    /* SECURITY_CONTEXT_TRACKING_MODE */
    TEST_TYPE_SIZE   (SECURITY_CONTEXT_TRACKING_MODE, 1)
    TEST_TYPE_ALIGN  (SECURITY_CONTEXT_TRACKING_MODE, 1)
}

static void test_pack_SECURITY_DESCRIPTOR(void)
{
    /* SECURITY_DESCRIPTOR (pack 4) */
    TEST_TYPE_SIZE   (SECURITY_DESCRIPTOR, 20)
    TEST_TYPE_ALIGN  (SECURITY_DESCRIPTOR, 4)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Revision, 1)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Revision, 1)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Revision, 0)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Sbz1, 1)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Sbz1, 1)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Sbz1, 1)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Control, 2)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Control, 2)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Control, 2)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Owner, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Owner, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Owner, 4)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Group, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Group, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Group, 8)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Sacl, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Sacl, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Sacl, 12)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Dacl, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Dacl, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Dacl, 16)
}

static void test_pack_SECURITY_DESCRIPTOR_CONTROL(void)
{
    /* SECURITY_DESCRIPTOR_CONTROL */
    TEST_TYPE_SIZE   (SECURITY_DESCRIPTOR_CONTROL, 2)
    TEST_TYPE_ALIGN  (SECURITY_DESCRIPTOR_CONTROL, 2)
    TEST_TYPE_UNSIGNED(SECURITY_DESCRIPTOR_CONTROL)
}

static void test_pack_SECURITY_DESCRIPTOR_RELATIVE(void)
{
    /* SECURITY_DESCRIPTOR_RELATIVE (pack 4) */
    TEST_TYPE_SIZE   (SECURITY_DESCRIPTOR_RELATIVE, 20)
    TEST_TYPE_ALIGN  (SECURITY_DESCRIPTOR_RELATIVE, 4)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Revision, 1)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Revision, 1)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Revision, 0)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Sbz1, 1)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Sbz1, 1)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Sbz1, 1)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Control, 2)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Control, 2)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Control, 2)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Owner, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Owner, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Owner, 4)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Group, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Group, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Group, 8)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Sacl, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Sacl, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Sacl, 12)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Dacl, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Dacl, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Dacl, 16)
}

static void test_pack_SECURITY_INFORMATION(void)
{
    /* SECURITY_INFORMATION */
    TEST_TYPE_SIZE   (SECURITY_INFORMATION, 4)
    TEST_TYPE_ALIGN  (SECURITY_INFORMATION, 4)
    TEST_TYPE_UNSIGNED(SECURITY_INFORMATION)
}

static void test_pack_SECURITY_QUALITY_OF_SERVICE(void)
{
    /* SECURITY_QUALITY_OF_SERVICE (pack 4) */
    TEST_FIELD_SIZE  (SECURITY_QUALITY_OF_SERVICE, Length, 4)
    TEST_FIELD_ALIGN (SECURITY_QUALITY_OF_SERVICE, Length, 4)
    TEST_FIELD_OFFSET(SECURITY_QUALITY_OF_SERVICE, Length, 0)
}

static void test_pack_SHORT(void)
{
    /* SHORT */
    TEST_TYPE_SIZE   (SHORT, 2)
    TEST_TYPE_ALIGN  (SHORT, 2)
    TEST_TYPE_SIGNED(SHORT)
}

static void test_pack_SID(void)
{
    /* SID (pack 4) */
    TEST_TYPE_SIZE   (SID, 12)
    TEST_TYPE_ALIGN  (SID, 4)
    TEST_FIELD_SIZE  (SID, Revision, 1)
    TEST_FIELD_ALIGN (SID, Revision, 1)
    TEST_FIELD_OFFSET(SID, Revision, 0)
    TEST_FIELD_SIZE  (SID, SubAuthorityCount, 1)
    TEST_FIELD_ALIGN (SID, SubAuthorityCount, 1)
    TEST_FIELD_OFFSET(SID, SubAuthorityCount, 1)
    TEST_FIELD_SIZE  (SID, IdentifierAuthority, 6)
    TEST_FIELD_ALIGN (SID, IdentifierAuthority, 1)
    TEST_FIELD_OFFSET(SID, IdentifierAuthority, 2)
    TEST_FIELD_SIZE  (SID, SubAuthority, 4)
    TEST_FIELD_ALIGN (SID, SubAuthority, 4)
    TEST_FIELD_OFFSET(SID, SubAuthority, 8)
}

static void test_pack_SID_AND_ATTRIBUTES(void)
{
    /* SID_AND_ATTRIBUTES (pack 4) */
    TEST_TYPE_SIZE   (SID_AND_ATTRIBUTES, 8)
    TEST_TYPE_ALIGN  (SID_AND_ATTRIBUTES, 4)
    TEST_FIELD_SIZE  (SID_AND_ATTRIBUTES, Sid, 4)
    TEST_FIELD_ALIGN (SID_AND_ATTRIBUTES, Sid, 4)
    TEST_FIELD_OFFSET(SID_AND_ATTRIBUTES, Sid, 0)
    TEST_FIELD_SIZE  (SID_AND_ATTRIBUTES, Attributes, 4)
    TEST_FIELD_ALIGN (SID_AND_ATTRIBUTES, Attributes, 4)
    TEST_FIELD_OFFSET(SID_AND_ATTRIBUTES, Attributes, 4)
}

static void test_pack_SID_IDENTIFIER_AUTHORITY(void)
{
    /* SID_IDENTIFIER_AUTHORITY (pack 4) */
    TEST_TYPE_SIZE   (SID_IDENTIFIER_AUTHORITY, 6)
    TEST_TYPE_ALIGN  (SID_IDENTIFIER_AUTHORITY, 1)
    TEST_FIELD_SIZE  (SID_IDENTIFIER_AUTHORITY, Value, 6)
    TEST_FIELD_ALIGN (SID_IDENTIFIER_AUTHORITY, Value, 1)
    TEST_FIELD_OFFSET(SID_IDENTIFIER_AUTHORITY, Value, 0)
}

static void test_pack_SINGLE_LIST_ENTRY(void)
{
    /* SINGLE_LIST_ENTRY (pack 4) */
    TEST_TYPE_SIZE   (SINGLE_LIST_ENTRY, 4)
    TEST_TYPE_ALIGN  (SINGLE_LIST_ENTRY, 4)
    TEST_FIELD_SIZE  (SINGLE_LIST_ENTRY, Next, 4)
    TEST_FIELD_ALIGN (SINGLE_LIST_ENTRY, Next, 4)
    TEST_FIELD_OFFSET(SINGLE_LIST_ENTRY, Next, 0)
}

static void test_pack_SYSTEM_ALARM_ACE(void)
{
    /* SYSTEM_ALARM_ACE (pack 4) */
    TEST_TYPE_SIZE   (SYSTEM_ALARM_ACE, 12)
    TEST_TYPE_ALIGN  (SYSTEM_ALARM_ACE, 4)
    TEST_FIELD_SIZE  (SYSTEM_ALARM_ACE, Header, 4)
    TEST_FIELD_ALIGN (SYSTEM_ALARM_ACE, Header, 2)
    TEST_FIELD_OFFSET(SYSTEM_ALARM_ACE, Header, 0)
    TEST_FIELD_SIZE  (SYSTEM_ALARM_ACE, Mask, 4)
    TEST_FIELD_ALIGN (SYSTEM_ALARM_ACE, Mask, 4)
    TEST_FIELD_OFFSET(SYSTEM_ALARM_ACE, Mask, 4)
    TEST_FIELD_SIZE  (SYSTEM_ALARM_ACE, SidStart, 4)
    TEST_FIELD_ALIGN (SYSTEM_ALARM_ACE, SidStart, 4)
    TEST_FIELD_OFFSET(SYSTEM_ALARM_ACE, SidStart, 8)
}

static void test_pack_SYSTEM_AUDIT_ACE(void)
{
    /* SYSTEM_AUDIT_ACE (pack 4) */
    TEST_TYPE_SIZE   (SYSTEM_AUDIT_ACE, 12)
    TEST_TYPE_ALIGN  (SYSTEM_AUDIT_ACE, 4)
    TEST_FIELD_SIZE  (SYSTEM_AUDIT_ACE, Header, 4)
    TEST_FIELD_ALIGN (SYSTEM_AUDIT_ACE, Header, 2)
    TEST_FIELD_OFFSET(SYSTEM_AUDIT_ACE, Header, 0)
    TEST_FIELD_SIZE  (SYSTEM_AUDIT_ACE, Mask, 4)
    TEST_FIELD_ALIGN (SYSTEM_AUDIT_ACE, Mask, 4)
    TEST_FIELD_OFFSET(SYSTEM_AUDIT_ACE, Mask, 4)
    TEST_FIELD_SIZE  (SYSTEM_AUDIT_ACE, SidStart, 4)
    TEST_FIELD_ALIGN (SYSTEM_AUDIT_ACE, SidStart, 4)
    TEST_FIELD_OFFSET(SYSTEM_AUDIT_ACE, SidStart, 8)
}

static void test_pack_TCHAR(void)
{
    /* TCHAR */
    TEST_TYPE_SIZE   (TCHAR, 1)
    TEST_TYPE_ALIGN  (TCHAR, 1)
}

static void test_pack_TOKEN_DEFAULT_DACL(void)
{
    /* TOKEN_DEFAULT_DACL (pack 4) */
    TEST_TYPE_SIZE   (TOKEN_DEFAULT_DACL, 4)
    TEST_TYPE_ALIGN  (TOKEN_DEFAULT_DACL, 4)
    TEST_FIELD_SIZE  (TOKEN_DEFAULT_DACL, DefaultDacl, 4)
    TEST_FIELD_ALIGN (TOKEN_DEFAULT_DACL, DefaultDacl, 4)
    TEST_FIELD_OFFSET(TOKEN_DEFAULT_DACL, DefaultDacl, 0)
}

static void test_pack_TOKEN_GROUPS(void)
{
    /* TOKEN_GROUPS (pack 4) */
    TEST_TYPE_SIZE   (TOKEN_GROUPS, 12)
    TEST_TYPE_ALIGN  (TOKEN_GROUPS, 4)
    TEST_FIELD_SIZE  (TOKEN_GROUPS, GroupCount, 4)
    TEST_FIELD_ALIGN (TOKEN_GROUPS, GroupCount, 4)
    TEST_FIELD_OFFSET(TOKEN_GROUPS, GroupCount, 0)
    TEST_FIELD_SIZE  (TOKEN_GROUPS, Groups, 8)
    TEST_FIELD_ALIGN (TOKEN_GROUPS, Groups, 4)
    TEST_FIELD_OFFSET(TOKEN_GROUPS, Groups, 4)
}

static void test_pack_TOKEN_OWNER(void)
{
    /* TOKEN_OWNER (pack 4) */
    TEST_TYPE_SIZE   (TOKEN_OWNER, 4)
    TEST_TYPE_ALIGN  (TOKEN_OWNER, 4)
    TEST_FIELD_SIZE  (TOKEN_OWNER, Owner, 4)
    TEST_FIELD_ALIGN (TOKEN_OWNER, Owner, 4)
    TEST_FIELD_OFFSET(TOKEN_OWNER, Owner, 0)
}

static void test_pack_TOKEN_PRIMARY_GROUP(void)
{
    /* TOKEN_PRIMARY_GROUP (pack 4) */
    TEST_TYPE_SIZE   (TOKEN_PRIMARY_GROUP, 4)
    TEST_TYPE_ALIGN  (TOKEN_PRIMARY_GROUP, 4)
    TEST_FIELD_SIZE  (TOKEN_PRIMARY_GROUP, PrimaryGroup, 4)
    TEST_FIELD_ALIGN (TOKEN_PRIMARY_GROUP, PrimaryGroup, 4)
    TEST_FIELD_OFFSET(TOKEN_PRIMARY_GROUP, PrimaryGroup, 0)
}

static void test_pack_TOKEN_PRIVILEGES(void)
{
    /* TOKEN_PRIVILEGES (pack 4) */
    TEST_TYPE_SIZE   (TOKEN_PRIVILEGES, 16)
    TEST_TYPE_ALIGN  (TOKEN_PRIVILEGES, 4)
    TEST_FIELD_SIZE  (TOKEN_PRIVILEGES, PrivilegeCount, 4)
    TEST_FIELD_ALIGN (TOKEN_PRIVILEGES, PrivilegeCount, 4)
    TEST_FIELD_OFFSET(TOKEN_PRIVILEGES, PrivilegeCount, 0)
    TEST_FIELD_SIZE  (TOKEN_PRIVILEGES, Privileges, 12)
    TEST_FIELD_ALIGN (TOKEN_PRIVILEGES, Privileges, 4)
    TEST_FIELD_OFFSET(TOKEN_PRIVILEGES, Privileges, 4)
}

static void test_pack_TOKEN_SOURCE(void)
{
    /* TOKEN_SOURCE (pack 4) */
    TEST_TYPE_SIZE   (TOKEN_SOURCE, 16)
    TEST_TYPE_ALIGN  (TOKEN_SOURCE, 4)
    TEST_FIELD_SIZE  (TOKEN_SOURCE, SourceName, 8)
    TEST_FIELD_ALIGN (TOKEN_SOURCE, SourceName, 1)
    TEST_FIELD_OFFSET(TOKEN_SOURCE, SourceName, 0)
    TEST_FIELD_SIZE  (TOKEN_SOURCE, SourceIdentifier, 8)
    TEST_FIELD_ALIGN (TOKEN_SOURCE, SourceIdentifier, 4)
    TEST_FIELD_OFFSET(TOKEN_SOURCE, SourceIdentifier, 8)
}

static void test_pack_TOKEN_STATISTICS(void)
{
    /* TOKEN_STATISTICS (pack 4) */
    TEST_FIELD_SIZE  (TOKEN_STATISTICS, TokenId, 8)
    TEST_FIELD_ALIGN (TOKEN_STATISTICS, TokenId, 4)
    TEST_FIELD_OFFSET(TOKEN_STATISTICS, TokenId, 0)
    TEST_FIELD_SIZE  (TOKEN_STATISTICS, AuthenticationId, 8)
    TEST_FIELD_ALIGN (TOKEN_STATISTICS, AuthenticationId, 4)
    TEST_FIELD_OFFSET(TOKEN_STATISTICS, AuthenticationId, 8)
    TEST_FIELD_SIZE  (TOKEN_STATISTICS, ExpirationTime, 8)
    TEST_FIELD_ALIGN (TOKEN_STATISTICS, ExpirationTime, 4)
    TEST_FIELD_OFFSET(TOKEN_STATISTICS, ExpirationTime, 16)
}

static void test_pack_TOKEN_USER(void)
{
    /* TOKEN_USER (pack 4) */
    TEST_TYPE_SIZE   (TOKEN_USER, 8)
    TEST_TYPE_ALIGN  (TOKEN_USER, 4)
    TEST_FIELD_SIZE  (TOKEN_USER, User, 8)
    TEST_FIELD_ALIGN (TOKEN_USER, User, 4)
    TEST_FIELD_OFFSET(TOKEN_USER, User, 0)
}

static void test_pack_ULARGE_INTEGER(void)
{
    /* ULARGE_INTEGER (pack 4) */
}

static void test_pack_ULONGLONG(void)
{
    /* ULONGLONG */
    TEST_TYPE_SIZE   (ULONGLONG, 8)
    TEST_TYPE_ALIGN  (ULONGLONG, 8)
    TEST_TYPE_UNSIGNED(ULONGLONG)
}

static void test_pack_WAITORTIMERCALLBACKFUNC(void)
{
    /* WAITORTIMERCALLBACKFUNC */
    TEST_TYPE_SIZE   (WAITORTIMERCALLBACKFUNC, 4)
    TEST_TYPE_ALIGN  (WAITORTIMERCALLBACKFUNC, 4)
}

static void test_pack_WCHAR(void)
{
    /* WCHAR */
    TEST_TYPE_SIZE   (WCHAR, 2)
    TEST_TYPE_ALIGN  (WCHAR, 2)
    TEST_TYPE_UNSIGNED(WCHAR)
}

static void test_pack_ATOM(void)
{
    /* ATOM */
    TEST_TYPE_SIZE   (ATOM, 2)
    TEST_TYPE_ALIGN  (ATOM, 2)
    TEST_TYPE_UNSIGNED(ATOM)
}

static void test_pack_BOOL(void)
{
    /* BOOL */
    TEST_TYPE_SIZE   (BOOL, 4)
    TEST_TYPE_ALIGN  (BOOL, 4)
    TEST_TYPE_SIGNED(BOOL)
}

static void test_pack_BYTE(void)
{
    /* BYTE */
    TEST_TYPE_SIZE   (BYTE, 1)
    TEST_TYPE_ALIGN  (BYTE, 1)
    TEST_TYPE_UNSIGNED(BYTE)
}

static void test_pack_COLORREF(void)
{
    /* COLORREF */
    TEST_TYPE_SIZE   (COLORREF, 4)
    TEST_TYPE_ALIGN  (COLORREF, 4)
    TEST_TYPE_UNSIGNED(COLORREF)
}

static void test_pack_DWORD(void)
{
    /* DWORD */
    TEST_TYPE_SIZE   (DWORD, 4)
    TEST_TYPE_ALIGN  (DWORD, 4)
    TEST_TYPE_UNSIGNED(DWORD)
}

static void test_pack_FARPROC(void)
{
    /* FARPROC */
    TEST_TYPE_SIZE   (FARPROC, 4)
    TEST_TYPE_ALIGN  (FARPROC, 4)
}

static void test_pack_FLOAT(void)
{
    /* FLOAT */
    TEST_TYPE_SIZE   (FLOAT, 4)
    TEST_TYPE_ALIGN  (FLOAT, 4)
}

static void test_pack_GLOBALHANDLE(void)
{
    /* GLOBALHANDLE */
    TEST_TYPE_SIZE   (GLOBALHANDLE, 4)
    TEST_TYPE_ALIGN  (GLOBALHANDLE, 4)
}

static void test_pack_HCURSOR(void)
{
    /* HCURSOR */
    TEST_TYPE_SIZE   (HCURSOR, 4)
    TEST_TYPE_ALIGN  (HCURSOR, 4)
}

static void test_pack_HFILE(void)
{
    /* HFILE */
    TEST_TYPE_SIZE   (HFILE, 4)
    TEST_TYPE_ALIGN  (HFILE, 4)
    TEST_TYPE_SIGNED(HFILE)
}

static void test_pack_HGDIOBJ(void)
{
    /* HGDIOBJ */
    TEST_TYPE_SIZE   (HGDIOBJ, 4)
    TEST_TYPE_ALIGN  (HGDIOBJ, 4)
}

static void test_pack_HGLOBAL(void)
{
    /* HGLOBAL */
    TEST_TYPE_SIZE   (HGLOBAL, 4)
    TEST_TYPE_ALIGN  (HGLOBAL, 4)
}

static void test_pack_HLOCAL(void)
{
    /* HLOCAL */
    TEST_TYPE_SIZE   (HLOCAL, 4)
    TEST_TYPE_ALIGN  (HLOCAL, 4)
}

static void test_pack_HMODULE(void)
{
    /* HMODULE */
    TEST_TYPE_SIZE   (HMODULE, 4)
    TEST_TYPE_ALIGN  (HMODULE, 4)
}

static void test_pack_INT(void)
{
    /* INT */
    TEST_TYPE_SIZE   (INT, 4)
    TEST_TYPE_ALIGN  (INT, 4)
    TEST_TYPE_SIGNED(INT)
}

static void test_pack_LOCALHANDLE(void)
{
    /* LOCALHANDLE */
    TEST_TYPE_SIZE   (LOCALHANDLE, 4)
    TEST_TYPE_ALIGN  (LOCALHANDLE, 4)
}

static void test_pack_LPARAM(void)
{
    /* LPARAM */
    TEST_TYPE_SIZE   (LPARAM, 4)
    TEST_TYPE_ALIGN  (LPARAM, 4)
}

static void test_pack_LPCRECT(void)
{
    /* LPCRECT */
    TEST_TYPE_SIZE   (LPCRECT, 4)
    TEST_TYPE_ALIGN  (LPCRECT, 4)
    TEST_TARGET_SIZE (LPCRECT, 16)
    TEST_TARGET_ALIGN(LPCRECT, 4)
}

static void test_pack_LPCRECTL(void)
{
    /* LPCRECTL */
    TEST_TYPE_SIZE   (LPCRECTL, 4)
    TEST_TYPE_ALIGN  (LPCRECTL, 4)
    TEST_TARGET_SIZE (LPCRECTL, 16)
    TEST_TARGET_ALIGN(LPCRECTL, 4)
}

static void test_pack_LPCVOID(void)
{
    /* LPCVOID */
    TEST_TYPE_SIZE   (LPCVOID, 4)
    TEST_TYPE_ALIGN  (LPCVOID, 4)
}

static void test_pack_LPPOINT(void)
{
    /* LPPOINT */
    TEST_TYPE_SIZE   (LPPOINT, 4)
    TEST_TYPE_ALIGN  (LPPOINT, 4)
    TEST_TARGET_SIZE (LPPOINT, 8)
    TEST_TARGET_ALIGN(LPPOINT, 4)
}

static void test_pack_LPRECT(void)
{
    /* LPRECT */
    TEST_TYPE_SIZE   (LPRECT, 4)
    TEST_TYPE_ALIGN  (LPRECT, 4)
    TEST_TARGET_SIZE (LPRECT, 16)
    TEST_TARGET_ALIGN(LPRECT, 4)
}

static void test_pack_LPRECTL(void)
{
    /* LPRECTL */
    TEST_TYPE_SIZE   (LPRECTL, 4)
    TEST_TYPE_ALIGN  (LPRECTL, 4)
    TEST_TARGET_SIZE (LPRECTL, 16)
    TEST_TARGET_ALIGN(LPRECTL, 4)
}

static void test_pack_LPSIZE(void)
{
    /* LPSIZE */
    TEST_TYPE_SIZE   (LPSIZE, 4)
    TEST_TYPE_ALIGN  (LPSIZE, 4)
    TEST_TARGET_SIZE (LPSIZE, 8)
    TEST_TARGET_ALIGN(LPSIZE, 4)
}

static void test_pack_LRESULT(void)
{
    /* LRESULT */
    TEST_TYPE_SIZE   (LRESULT, 4)
    TEST_TYPE_ALIGN  (LRESULT, 4)
}

static void test_pack_POINT(void)
{
    /* POINT (pack 4) */
    TEST_TYPE_SIZE   (POINT, 8)
    TEST_TYPE_ALIGN  (POINT, 4)
    TEST_FIELD_SIZE  (POINT, x, 4)
    TEST_FIELD_ALIGN (POINT, x, 4)
    TEST_FIELD_OFFSET(POINT, x, 0)
    TEST_FIELD_SIZE  (POINT, y, 4)
    TEST_FIELD_ALIGN (POINT, y, 4)
    TEST_FIELD_OFFSET(POINT, y, 4)
}

static void test_pack_POINTL(void)
{
    /* POINTL (pack 4) */
    TEST_TYPE_SIZE   (POINTL, 8)
    TEST_TYPE_ALIGN  (POINTL, 4)
    TEST_FIELD_SIZE  (POINTL, x, 4)
    TEST_FIELD_ALIGN (POINTL, x, 4)
    TEST_FIELD_OFFSET(POINTL, x, 0)
    TEST_FIELD_SIZE  (POINTL, y, 4)
    TEST_FIELD_ALIGN (POINTL, y, 4)
    TEST_FIELD_OFFSET(POINTL, y, 4)
}

static void test_pack_PPOINT(void)
{
    /* PPOINT */
    TEST_TYPE_SIZE   (PPOINT, 4)
    TEST_TYPE_ALIGN  (PPOINT, 4)
    TEST_TARGET_SIZE (PPOINT, 8)
    TEST_TARGET_ALIGN(PPOINT, 4)
}

static void test_pack_PPOINTL(void)
{
    /* PPOINTL */
    TEST_TYPE_SIZE   (PPOINTL, 4)
    TEST_TYPE_ALIGN  (PPOINTL, 4)
    TEST_TARGET_SIZE (PPOINTL, 8)
    TEST_TARGET_ALIGN(PPOINTL, 4)
}

static void test_pack_PRECT(void)
{
    /* PRECT */
    TEST_TYPE_SIZE   (PRECT, 4)
    TEST_TYPE_ALIGN  (PRECT, 4)
    TEST_TARGET_SIZE (PRECT, 16)
    TEST_TARGET_ALIGN(PRECT, 4)
}

static void test_pack_PRECTL(void)
{
    /* PRECTL */
    TEST_TYPE_SIZE   (PRECTL, 4)
    TEST_TYPE_ALIGN  (PRECTL, 4)
    TEST_TARGET_SIZE (PRECTL, 16)
    TEST_TARGET_ALIGN(PRECTL, 4)
}

static void test_pack_PROC(void)
{
    /* PROC */
    TEST_TYPE_SIZE   (PROC, 4)
    TEST_TYPE_ALIGN  (PROC, 4)
}

static void test_pack_PSIZE(void)
{
    /* PSIZE */
    TEST_TYPE_SIZE   (PSIZE, 4)
    TEST_TYPE_ALIGN  (PSIZE, 4)
    TEST_TARGET_SIZE (PSIZE, 8)
    TEST_TARGET_ALIGN(PSIZE, 4)
}

static void test_pack_PSZ(void)
{
    /* PSZ */
    TEST_TYPE_SIZE   (PSZ, 4)
    TEST_TYPE_ALIGN  (PSZ, 4)
}

static void test_pack_RECT(void)
{
    /* RECT (pack 4) */
    TEST_TYPE_SIZE   (RECT, 16)
    TEST_TYPE_ALIGN  (RECT, 4)
    TEST_FIELD_SIZE  (RECT, left, 4)
    TEST_FIELD_ALIGN (RECT, left, 4)
    TEST_FIELD_OFFSET(RECT, left, 0)
    TEST_FIELD_SIZE  (RECT, top, 4)
    TEST_FIELD_ALIGN (RECT, top, 4)
    TEST_FIELD_OFFSET(RECT, top, 4)
    TEST_FIELD_SIZE  (RECT, right, 4)
    TEST_FIELD_ALIGN (RECT, right, 4)
    TEST_FIELD_OFFSET(RECT, right, 8)
    TEST_FIELD_SIZE  (RECT, bottom, 4)
    TEST_FIELD_ALIGN (RECT, bottom, 4)
    TEST_FIELD_OFFSET(RECT, bottom, 12)
}

static void test_pack_RECTL(void)
{
    /* RECTL (pack 4) */
    TEST_TYPE_SIZE   (RECTL, 16)
    TEST_TYPE_ALIGN  (RECTL, 4)
    TEST_FIELD_SIZE  (RECTL, left, 4)
    TEST_FIELD_ALIGN (RECTL, left, 4)
    TEST_FIELD_OFFSET(RECTL, left, 0)
    TEST_FIELD_SIZE  (RECTL, top, 4)
    TEST_FIELD_ALIGN (RECTL, top, 4)
    TEST_FIELD_OFFSET(RECTL, top, 4)
    TEST_FIELD_SIZE  (RECTL, right, 4)
    TEST_FIELD_ALIGN (RECTL, right, 4)
    TEST_FIELD_OFFSET(RECTL, right, 8)
    TEST_FIELD_SIZE  (RECTL, bottom, 4)
    TEST_FIELD_ALIGN (RECTL, bottom, 4)
    TEST_FIELD_OFFSET(RECTL, bottom, 12)
}

static void test_pack_SIZE(void)
{
    /* SIZE (pack 4) */
    TEST_TYPE_SIZE   (SIZE, 8)
    TEST_TYPE_ALIGN  (SIZE, 4)
    TEST_FIELD_SIZE  (SIZE, cx, 4)
    TEST_FIELD_ALIGN (SIZE, cx, 4)
    TEST_FIELD_OFFSET(SIZE, cx, 0)
    TEST_FIELD_SIZE  (SIZE, cy, 4)
    TEST_FIELD_ALIGN (SIZE, cy, 4)
    TEST_FIELD_OFFSET(SIZE, cy, 4)
}

static void test_pack_SIZEL(void)
{
    /* SIZEL */
    TEST_TYPE_SIZE   (SIZEL, 8)
    TEST_TYPE_ALIGN  (SIZEL, 4)
}

static void test_pack_UCHAR(void)
{
    /* UCHAR */
    TEST_TYPE_SIZE   (UCHAR, 1)
    TEST_TYPE_ALIGN  (UCHAR, 1)
    TEST_TYPE_UNSIGNED(UCHAR)
}

static void test_pack_UINT(void)
{
    /* UINT */
    TEST_TYPE_SIZE   (UINT, 4)
    TEST_TYPE_ALIGN  (UINT, 4)
    TEST_TYPE_UNSIGNED(UINT)
}

static void test_pack_ULONG(void)
{
    /* ULONG */
    TEST_TYPE_SIZE   (ULONG, 4)
    TEST_TYPE_ALIGN  (ULONG, 4)
    TEST_TYPE_UNSIGNED(ULONG)
}

static void test_pack_USHORT(void)
{
    /* USHORT */
    TEST_TYPE_SIZE   (USHORT, 2)
    TEST_TYPE_ALIGN  (USHORT, 2)
    TEST_TYPE_UNSIGNED(USHORT)
}

static void test_pack_WORD(void)
{
    /* WORD */
    TEST_TYPE_SIZE   (WORD, 2)
    TEST_TYPE_ALIGN  (WORD, 2)
    TEST_TYPE_UNSIGNED(WORD)
}

static void test_pack_WPARAM(void)
{
    /* WPARAM */
    TEST_TYPE_SIZE   (WPARAM, 4)
    TEST_TYPE_ALIGN  (WPARAM, 4)
}

static void test_pack(void)
{
    test_pack_ACCESS_ALLOWED_ACE();
    test_pack_ACCESS_DENIED_ACE();
    test_pack_ACCESS_MASK();
    test_pack_ACE_HEADER();
    test_pack_ACL();
    test_pack_ACL_REVISION_INFORMATION();
    test_pack_ACL_SIZE_INFORMATION();
    test_pack_ATOM();
    test_pack_BOOL();
    test_pack_BOOLEAN();
    test_pack_BYTE();
    test_pack_CCHAR();
    test_pack_CHAR();
    test_pack_COLORREF();
    test_pack_DWORD();
    test_pack_DWORD32();
    test_pack_DWORD64();
    test_pack_DWORDLONG();
    test_pack_DWORD_PTR();
    test_pack_EXCEPTION_POINTERS();
    test_pack_EXCEPTION_RECORD();
    test_pack_EXECUTION_STATE();
    test_pack_FARPROC();
    test_pack_FLOAT();
    test_pack_FLOATING_SAVE_AREA();
    test_pack_FPO_DATA();
    test_pack_GENERIC_MAPPING();
    test_pack_GLOBALHANDLE();
    test_pack_HALF_PTR();
    test_pack_HANDLE();
    test_pack_HCURSOR();
    test_pack_HFILE();
    test_pack_HGDIOBJ();
    test_pack_HGLOBAL();
    test_pack_HLOCAL();
    test_pack_HMODULE();
    test_pack_HRESULT();
    test_pack_IMAGE_ARCHIVE_MEMBER_HEADER();
    test_pack_IMAGE_AUX_SYMBOL();
    test_pack_IMAGE_BASE_RELOCATION();
    test_pack_IMAGE_BOUND_FORWARDER_REF();
    test_pack_IMAGE_BOUND_IMPORT_DESCRIPTOR();
    test_pack_IMAGE_COFF_SYMBOLS_HEADER();
    test_pack_IMAGE_DATA_DIRECTORY();
    test_pack_IMAGE_DEBUG_DIRECTORY();
    test_pack_IMAGE_DEBUG_MISC();
    test_pack_IMAGE_DOS_HEADER();
    test_pack_IMAGE_EXPORT_DIRECTORY();
    test_pack_IMAGE_FILE_HEADER();
    test_pack_IMAGE_FUNCTION_ENTRY();
    test_pack_IMAGE_IMPORT_BY_NAME();
    test_pack_IMAGE_IMPORT_DESCRIPTOR();
    test_pack_IMAGE_LINENUMBER();
    test_pack_IMAGE_LOAD_CONFIG_DIRECTORY();
    test_pack_IMAGE_NT_HEADERS();
    test_pack_IMAGE_OS2_HEADER();
    test_pack_IMAGE_RELOCATION();
    test_pack_IMAGE_RESOURCE_DATA_ENTRY();
    test_pack_IMAGE_RESOURCE_DIRECTORY();
    test_pack_IMAGE_RESOURCE_DIRECTORY_ENTRY();
    test_pack_IMAGE_RESOURCE_DIRECTORY_STRING();
    test_pack_IMAGE_RESOURCE_DIR_STRING_U();
    test_pack_IMAGE_SECTION_HEADER();
    test_pack_IMAGE_SEPARATE_DEBUG_HEADER();
    test_pack_IMAGE_SYMBOL();
    test_pack_IMAGE_THUNK_DATA();
    test_pack_IMAGE_TLS_DIRECTORY();
    test_pack_IMAGE_VXD_HEADER();
    test_pack_INT();
    test_pack_INT16();
    test_pack_INT32();
    test_pack_INT64();
    test_pack_INT8();
    test_pack_INT_PTR();
    test_pack_IO_COUNTERS();
    test_pack_LANGID();
    test_pack_LARGE_INTEGER();
    test_pack_LCID();
    test_pack_LIST_ENTRY();
    test_pack_LOCALHANDLE();
    test_pack_LONG();
    test_pack_LONG32();
    test_pack_LONG64();
    test_pack_LONGLONG();
    test_pack_LONG_PTR();
    test_pack_LPARAM();
    test_pack_LPCRECT();
    test_pack_LPCRECTL();
    test_pack_LPCVOID();
    test_pack_LPPOINT();
    test_pack_LPRECT();
    test_pack_LPRECTL();
    test_pack_LPSIZE();
    test_pack_LRESULT();
    test_pack_LUID();
    test_pack_LUID_AND_ATTRIBUTES();
    test_pack_MEMORY_BASIC_INFORMATION();
    test_pack_MESSAGE_RESOURCE_BLOCK();
    test_pack_MESSAGE_RESOURCE_DATA();
    test_pack_MESSAGE_RESOURCE_ENTRY();
    test_pack_NT_TIB();
    test_pack_OBJECT_TYPE_LIST();
    test_pack_PACCESS_ALLOWED_ACE();
    test_pack_PACCESS_DENIED_ACE();
    test_pack_PACCESS_TOKEN();
    test_pack_PACE_HEADER();
    test_pack_PACL();
    test_pack_PACL_REVISION_INFORMATION();
    test_pack_PACL_SIZE_INFORMATION();
    test_pack_PCCH();
    test_pack_PCH();
    test_pack_PCSTR();
    test_pack_PCTSTR();
    test_pack_PCWCH();
    test_pack_PCWSTR();
    test_pack_PEXCEPTION_POINTERS();
    test_pack_PEXCEPTION_RECORD();
    test_pack_PFLOATING_SAVE_AREA();
    test_pack_PFPO_DATA();
    test_pack_PGENERIC_MAPPING();
    test_pack_PHANDLE();
    test_pack_PIMAGE_ARCHIVE_MEMBER_HEADER();
    test_pack_PIMAGE_AUX_SYMBOL();
    test_pack_PIMAGE_BASE_RELOCATION();
    test_pack_PIMAGE_BOUND_FORWARDER_REF();
    test_pack_PIMAGE_BOUND_IMPORT_DESCRIPTOR();
    test_pack_PIMAGE_COFF_SYMBOLS_HEADER();
    test_pack_PIMAGE_DATA_DIRECTORY();
    test_pack_PIMAGE_DEBUG_DIRECTORY();
    test_pack_PIMAGE_DEBUG_MISC();
    test_pack_PIMAGE_DOS_HEADER();
    test_pack_PIMAGE_EXPORT_DIRECTORY();
    test_pack_PIMAGE_FILE_HEADER();
    test_pack_PIMAGE_FUNCTION_ENTRY();
    test_pack_PIMAGE_IMPORT_BY_NAME();
    test_pack_PIMAGE_IMPORT_DESCRIPTOR();
    test_pack_PIMAGE_LINENUMBER();
    test_pack_PIMAGE_LOAD_CONFIG_DIRECTORY();
    test_pack_PIMAGE_NT_HEADERS();
    test_pack_PIMAGE_OPTIONAL_HEADER();
    test_pack_PIMAGE_OS2_HEADER();
    test_pack_PIMAGE_RELOCATION();
    test_pack_PIMAGE_RESOURCE_DATA_ENTRY();
    test_pack_PIMAGE_RESOURCE_DIRECTORY();
    test_pack_PIMAGE_RESOURCE_DIRECTORY_ENTRY();
    test_pack_PIMAGE_RESOURCE_DIRECTORY_STRING();
    test_pack_PIMAGE_RESOURCE_DIR_STRING_U();
    test_pack_PIMAGE_SECTION_HEADER();
    test_pack_PIMAGE_SEPARATE_DEBUG_HEADER();
    test_pack_PIMAGE_SYMBOL();
    test_pack_PIMAGE_THUNK_DATA();
    test_pack_PIMAGE_TLS_CALLBACK();
    test_pack_PIMAGE_TLS_DIRECTORY();
    test_pack_PIMAGE_VXD_HEADER();
    test_pack_PIO_COUNTERS();
    test_pack_PISECURITY_DESCRIPTOR();
    test_pack_PISECURITY_DESCRIPTOR_RELATIVE();
    test_pack_PISID();
    test_pack_PLARGE_INTEGER();
    test_pack_PLIST_ENTRY();
    test_pack_PLUID();
    test_pack_PLUID_AND_ATTRIBUTES();
    test_pack_PMEMORY_BASIC_INFORMATION();
    test_pack_PMESSAGE_RESOURCE_BLOCK();
    test_pack_PMESSAGE_RESOURCE_DATA();
    test_pack_PMESSAGE_RESOURCE_ENTRY();
    test_pack_PNT_TIB();
    test_pack_POBJECT_TYPE_LIST();
    test_pack_POINT();
    test_pack_POINTL();
    test_pack_PPOINT();
    test_pack_PPOINTL();
    test_pack_PPRIVILEGE_SET();
    test_pack_PRECT();
    test_pack_PRECTL();
    test_pack_PRIVILEGE_SET();
    test_pack_PRLIST_ENTRY();
    test_pack_PROC();
    test_pack_PRTL_CRITICAL_SECTION();
    test_pack_PRTL_CRITICAL_SECTION_DEBUG();
    test_pack_PRTL_OSVERSIONINFOEXW();
    test_pack_PRTL_OSVERSIONINFOW();
    test_pack_PRTL_RESOURCE_DEBUG();
    test_pack_PSECURITY_DESCRIPTOR();
    test_pack_PSECURITY_QUALITY_OF_SERVICE();
    test_pack_PSID();
    test_pack_PSID_IDENTIFIER_AUTHORITY();
    test_pack_PSINGLE_LIST_ENTRY();
    test_pack_PSIZE();
    test_pack_PSTR();
    test_pack_PSYSTEM_ALARM_ACE();
    test_pack_PSYSTEM_AUDIT_ACE();
    test_pack_PSZ();
    test_pack_PTOKEN_GROUPS();
    test_pack_PTOKEN_PRIVILEGES();
    test_pack_PTOKEN_USER();
    test_pack_PTSTR();
    test_pack_PULARGE_INTEGER();
    test_pack_PVECTORED_EXCEPTION_HANDLER();
    test_pack_PVOID();
    test_pack_PWCH();
    test_pack_PWSTR();
    test_pack_RECT();
    test_pack_RECTL();
    test_pack_RTL_CRITICAL_SECTION();
    test_pack_RTL_CRITICAL_SECTION_DEBUG();
    test_pack_RTL_OSVERSIONINFOEXW();
    test_pack_RTL_OSVERSIONINFOW();
    test_pack_RTL_RESOURCE_DEBUG();
    test_pack_SECURITY_CONTEXT_TRACKING_MODE();
    test_pack_SECURITY_DESCRIPTOR();
    test_pack_SECURITY_DESCRIPTOR_CONTROL();
    test_pack_SECURITY_DESCRIPTOR_RELATIVE();
    test_pack_SECURITY_INFORMATION();
    test_pack_SECURITY_QUALITY_OF_SERVICE();
    test_pack_SHORT();
    test_pack_SID();
    test_pack_SID_AND_ATTRIBUTES();
    test_pack_SID_IDENTIFIER_AUTHORITY();
    test_pack_SINGLE_LIST_ENTRY();
    test_pack_SIZE();
    test_pack_SIZEL();
    test_pack_SIZE_T();
    test_pack_SSIZE_T();
    test_pack_SYSTEM_ALARM_ACE();
    test_pack_SYSTEM_AUDIT_ACE();
    test_pack_TCHAR();
    test_pack_TOKEN_DEFAULT_DACL();
    test_pack_TOKEN_GROUPS();
    test_pack_TOKEN_OWNER();
    test_pack_TOKEN_PRIMARY_GROUP();
    test_pack_TOKEN_PRIVILEGES();
    test_pack_TOKEN_SOURCE();
    test_pack_TOKEN_STATISTICS();
    test_pack_TOKEN_USER();
    test_pack_UCHAR();
    test_pack_UHALF_PTR();
    test_pack_UINT();
    test_pack_UINT16();
    test_pack_UINT32();
    test_pack_UINT64();
    test_pack_UINT8();
    test_pack_UINT_PTR();
    test_pack_ULARGE_INTEGER();
    test_pack_ULONG();
    test_pack_ULONG32();
    test_pack_ULONG64();
    test_pack_ULONGLONG();
    test_pack_ULONG_PTR();
    test_pack_USHORT();
    test_pack_WAITORTIMERCALLBACKFUNC();
    test_pack_WCHAR();
    test_pack_WORD();
    test_pack_WPARAM();
}

START_TEST(generated)
{
#ifdef _WIN64
    ok(0, "The type size / alignment tests don't support Win64 yet\n");
#else
    test_pack();
#endif
}
