/* File generated automatically from tools/winapi/test.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"

/***********************************************************************
 * Compability 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 FIELD_ALIGNMENT(type, field) __alignof(((type*)0)->field)
#elif defined(__GNUC__)
# define FIELD_ALIGNMENT(type, field) __alignof__(((type*)0)->field)
#else
/* FIXME: Not sure if is possible to do without compiler extension */
#endif

#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: Not sure if is possible to do without compiler extension
 *        (if type is not just a name that is, if so 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 FIELD_ALIGNMENT
# define TEST_FIELD_ALIGNMENT(type, field, align) \
   ok(FIELD_ALIGNMENT(type, field) == align, \
       "FIELD_ALIGNMENT(" #type ", " #field ") == %d (expected " #align ")\n", \
           (int)FIELD_ALIGNMENT(type, field))
#else
# define TEST_FIELD_ALIGNMENT(type, field, align) do { } while (0)
#endif

#define TEST_FIELD_OFFSET(type, field, offset) \
    ok(FIELD_OFFSET(type, field) == offset, \
        "FIELD_OFFSET(" #type ", " #field ") == %ld (expected " #offset ")\n", \
             (long int)FIELD_OFFSET(type, field))

#ifdef _TYPE_ALIGNMENT
#define TEST__TYPE_ALIGNMENT(type, align) \
    ok(_TYPE_ALIGNMENT(type) == align, "TYPE_ALIGNMENT(" #type ") == %d (expected " #align ")\n", (int)_TYPE_ALIGNMENT(type))
#else
# define TEST__TYPE_ALIGNMENT(type, align) do { } while (0)
#endif

#ifdef TYPE_ALIGNMENT
#define TEST_TYPE_ALIGNMENT(type, align) \
    ok(TYPE_ALIGNMENT(type) == align, "TYPE_ALIGNMENT(" #type ") == %d (expected " #align ")\n", (int)TYPE_ALIGNMENT(type))
#else
# define TEST_TYPE_ALIGNMENT(type, align) do { } while (0)
#endif

#define TEST_TYPE_SIZE(type, size) \
    ok(sizeof(type) == size, "sizeof(" #type ") == %d (expected " #size ")\n", ((int) sizeof(type)))

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

#define TEST_FIELD(type, field_type, field_name, field_offset, field_size, field_align) \
  TEST_TYPE_SIZE(field_type, field_size); \
  TEST_FIELD_ALIGNMENT(type, field_name, field_align); \
  TEST_FIELD_OFFSET(type, field_name, field_offset); \

#define TEST_TYPE(type, size, align) \
  TEST_TYPE_ALIGNMENT(type, align); \
  TEST_TYPE_SIZE(type, size)

#define TEST_TYPE_POINTER(type, size, align) \
    TEST__TYPE_ALIGNMENT(*(type)0, align); \
    TEST_TYPE_SIZE(*(type)0, size)

#define TEST_TYPE_SIGNED(type) \
    ok((type) -1 < 0, "(" #type ") -1 < 0\n");

#define TEST_TYPE_UNSIGNED(type) \
     ok((type) -1 > 0, "(" #type ") -1 > 0\n");

static void test_pack_DWORD32(void)
{
    /* DWORD32 */
    TEST_TYPE(DWORD32, 4, 4);
    TEST_TYPE_UNSIGNED(DWORD32);
}

static void test_pack_DWORD64(void)
{
    /* DWORD64 */
    TEST_TYPE(DWORD64, 8, 8);
    TEST_TYPE_UNSIGNED(DWORD64);
}

static void test_pack_DWORD_PTR(void)
{
    /* DWORD_PTR */
    TEST_TYPE(DWORD_PTR, 4, 4);
}

static void test_pack_HALF_PTR(void)
{
    /* HALF_PTR */
    TEST_TYPE(HALF_PTR, 2, 2);
    TEST_TYPE_SIGNED(HALF_PTR);
}

static void test_pack_INT16(void)
{
    /* INT16 */
    TEST_TYPE(INT16, 2, 2);
    TEST_TYPE_SIGNED(INT16);
}

static void test_pack_INT32(void)
{
    /* INT32 */
    TEST_TYPE(INT32, 4, 4);
    TEST_TYPE_SIGNED(INT32);
}

static void test_pack_INT64(void)
{
    /* INT64 */
    TEST_TYPE(INT64, 8, 8);
    TEST_TYPE_SIGNED(INT64);
}

static void test_pack_INT8(void)
{
    /* INT8 */
    TEST_TYPE(INT8, 1, 1);
    TEST_TYPE_SIGNED(INT8);
}

static void test_pack_INT_PTR(void)
{
    /* INT_PTR */
    TEST_TYPE(INT_PTR, 4, 4);
    TEST_TYPE_SIGNED(INT_PTR);
}

static void test_pack_LONG32(void)
{
    /* LONG32 */
    TEST_TYPE(LONG32, 4, 4);
    TEST_TYPE_SIGNED(LONG32);
}

static void test_pack_LONG64(void)
{
    /* LONG64 */
    TEST_TYPE(LONG64, 8, 8);
    TEST_TYPE_SIGNED(LONG64);
}

static void test_pack_LONG_PTR(void)
{
    /* LONG_PTR */
    TEST_TYPE(LONG_PTR, 4, 4);
    TEST_TYPE_SIGNED(LONG_PTR);
}

static void test_pack_SIZE_T(void)
{
    /* SIZE_T */
    TEST_TYPE(SIZE_T, 4, 4);
}

static void test_pack_SSIZE_T(void)
{
    /* SSIZE_T */
    TEST_TYPE(SSIZE_T, 4, 4);
}

static void test_pack_UHALF_PTR(void)
{
    /* UHALF_PTR */
    TEST_TYPE(UHALF_PTR, 2, 2);
    TEST_TYPE_UNSIGNED(UHALF_PTR);
}

static void test_pack_UINT16(void)
{
    /* UINT16 */
    TEST_TYPE(UINT16, 2, 2);
    TEST_TYPE_UNSIGNED(UINT16);
}

static void test_pack_UINT32(void)
{
    /* UINT32 */
    TEST_TYPE(UINT32, 4, 4);
    TEST_TYPE_UNSIGNED(UINT32);
}

static void test_pack_UINT64(void)
{
    /* UINT64 */
    TEST_TYPE(UINT64, 8, 8);
    TEST_TYPE_UNSIGNED(UINT64);
}

static void test_pack_UINT8(void)
{
    /* UINT8 */
    TEST_TYPE(UINT8, 1, 1);
    TEST_TYPE_UNSIGNED(UINT8);
}

static void test_pack_UINT_PTR(void)
{
    /* UINT_PTR */
    TEST_TYPE(UINT_PTR, 4, 4);
    TEST_TYPE_UNSIGNED(UINT_PTR);
}

static void test_pack_ULONG32(void)
{
    /* ULONG32 */
    TEST_TYPE(ULONG32, 4, 4);
    TEST_TYPE_UNSIGNED(ULONG32);
}

static void test_pack_ULONG64(void)
{
    /* ULONG64 */
    TEST_TYPE(ULONG64, 8, 8);
    TEST_TYPE_UNSIGNED(ULONG64);
}

static void test_pack_ULONG_PTR(void)
{
    /* ULONG_PTR */
    TEST_TYPE(ULONG_PTR, 4, 4);
    TEST_TYPE_UNSIGNED(ULONG_PTR);
}

static void test_pack_ACCESS_ALLOWED_ACE(void)
{
    /* ACCESS_ALLOWED_ACE (pack 4) */
    TEST_TYPE(ACCESS_ALLOWED_ACE, 12, 4);
    TEST_FIELD(ACCESS_ALLOWED_ACE, ACE_HEADER, Header, 0, 4, 2);
    TEST_FIELD(ACCESS_ALLOWED_ACE, DWORD, Mask, 4, 4, 4);
    TEST_FIELD(ACCESS_ALLOWED_ACE, DWORD, SidStart, 8, 4, 4);
}

static void test_pack_ACCESS_DENIED_ACE(void)
{
    /* ACCESS_DENIED_ACE (pack 4) */
    TEST_TYPE(ACCESS_DENIED_ACE, 12, 4);
    TEST_FIELD(ACCESS_DENIED_ACE, ACE_HEADER, Header, 0, 4, 2);
    TEST_FIELD(ACCESS_DENIED_ACE, DWORD, Mask, 4, 4, 4);
    TEST_FIELD(ACCESS_DENIED_ACE, DWORD, SidStart, 8, 4, 4);
}

static void test_pack_ACCESS_MASK(void)
{
    /* ACCESS_MASK */
    TEST_TYPE(ACCESS_MASK, 4, 4);
    TEST_TYPE_UNSIGNED(ACCESS_MASK);
}

static void test_pack_ACE_HEADER(void)
{
    /* ACE_HEADER (pack 4) */
    TEST_TYPE(ACE_HEADER, 4, 2);
    TEST_FIELD(ACE_HEADER, BYTE, AceType, 0, 1, 1);
    TEST_FIELD(ACE_HEADER, BYTE, AceFlags, 1, 1, 1);
    TEST_FIELD(ACE_HEADER, WORD, AceSize, 2, 2, 2);
}

static void test_pack_ACL(void)
{
    /* ACL (pack 4) */
    TEST_TYPE(ACL, 8, 2);
    TEST_FIELD(ACL, BYTE, AclRevision, 0, 1, 1);
    TEST_FIELD(ACL, BYTE, Sbz1, 1, 1, 1);
    TEST_FIELD(ACL, WORD, AclSize, 2, 2, 2);
    TEST_FIELD(ACL, WORD, AceCount, 4, 2, 2);
    TEST_FIELD(ACL, WORD, Sbz2, 6, 2, 2);
}

static void test_pack_ACL_REVISION_INFORMATION(void)
{
    /* ACL_REVISION_INFORMATION (pack 4) */
    TEST_TYPE(ACL_REVISION_INFORMATION, 4, 4);
    TEST_FIELD(ACL_REVISION_INFORMATION, DWORD, AclRevision, 0, 4, 4);
}

static void test_pack_ACL_SIZE_INFORMATION(void)
{
    /* ACL_SIZE_INFORMATION (pack 4) */
    TEST_TYPE(ACL_SIZE_INFORMATION, 12, 4);
    TEST_FIELD(ACL_SIZE_INFORMATION, DWORD, AceCount, 0, 4, 4);
    TEST_FIELD(ACL_SIZE_INFORMATION, DWORD, AclBytesInUse, 4, 4, 4);
    TEST_FIELD(ACL_SIZE_INFORMATION, DWORD, AclBytesFree, 8, 4, 4);
}

static void test_pack_BOOLEAN(void)
{
    /* BOOLEAN */
    TEST_TYPE(BOOLEAN, 1, 1);
    TEST_TYPE_UNSIGNED(BOOLEAN);
}

static void test_pack_CCHAR(void)
{
    /* CCHAR */
    TEST_TYPE(CCHAR, 1, 1);
    TEST_TYPE_SIGNED(CCHAR);
}

static void test_pack_CHAR(void)
{
    /* CHAR */
    TEST_TYPE(CHAR, 1, 1);
    TEST_TYPE_SIGNED(CHAR);
}

static void test_pack_DWORDLONG(void)
{
    /* DWORDLONG */
    TEST_TYPE(DWORDLONG, 8, 8);
    TEST_TYPE_UNSIGNED(DWORDLONG);
}

static void test_pack_EXCEPTION_POINTERS(void)
{
    /* EXCEPTION_POINTERS (pack 4) */
    TEST_TYPE(EXCEPTION_POINTERS, 8, 4);
    TEST_FIELD(EXCEPTION_POINTERS, PEXCEPTION_RECORD, ExceptionRecord, 0, 4, 4);
    TEST_FIELD(EXCEPTION_POINTERS, PCONTEXT, ContextRecord, 4, 4, 4);
}

static void test_pack_EXCEPTION_RECORD(void)
{
    /* EXCEPTION_RECORD (pack 4) */
    TEST_TYPE(EXCEPTION_RECORD, 80, 4);
    TEST_FIELD(EXCEPTION_RECORD, DWORD, ExceptionCode, 0, 4, 4);
    TEST_FIELD(EXCEPTION_RECORD, DWORD, ExceptionFlags, 4, 4, 4);
    TEST_FIELD(EXCEPTION_RECORD, struct _EXCEPTION_RECORD *, ExceptionRecord, 8, 4, 4);
    TEST_FIELD(EXCEPTION_RECORD, PVOID, ExceptionAddress, 12, 4, 4);
    TEST_FIELD(EXCEPTION_RECORD, DWORD, NumberParameters, 16, 4, 4);
    TEST_FIELD(EXCEPTION_RECORD, ULONG_PTR[EXCEPTION_MAXIMUM_PARAMETERS], ExceptionInformation, 20, 60, 4);
}

static void test_pack_EXECUTION_STATE(void)
{
    /* EXECUTION_STATE */
    TEST_TYPE(EXECUTION_STATE, 4, 4);
    TEST_TYPE_UNSIGNED(EXECUTION_STATE);
}

static void test_pack_FLOATING_SAVE_AREA(void)
{
    /* FLOATING_SAVE_AREA (pack 4) */
    TEST_TYPE(FLOATING_SAVE_AREA, 112, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, ControlWord, 0, 4, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, StatusWord, 4, 4, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, TagWord, 8, 4, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, ErrorOffset, 12, 4, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, ErrorSelector, 16, 4, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, DataOffset, 20, 4, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, DataSelector, 24, 4, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, BYTE[SIZE_OF_80387_REGISTERS], RegisterArea, 28, 80, 1);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, Cr0NpxState, 108, 4, 4);
}

static void test_pack_FPO_DATA(void)
{
    /* FPO_DATA (pack 4) */
    TEST_TYPE(FPO_DATA, 16, 4);
    TEST_FIELD(FPO_DATA, DWORD, ulOffStart, 0, 4, 4);
    TEST_FIELD(FPO_DATA, DWORD, cbProcSize, 4, 4, 4);
    TEST_FIELD(FPO_DATA, DWORD, cdwLocals, 8, 4, 4);
    TEST_FIELD(FPO_DATA, WORD, cdwParams, 12, 2, 2);
}

static void test_pack_GENERIC_MAPPING(void)
{
    /* GENERIC_MAPPING (pack 4) */
    TEST_TYPE(GENERIC_MAPPING, 16, 4);
    TEST_FIELD(GENERIC_MAPPING, ACCESS_MASK, GenericRead, 0, 4, 4);
    TEST_FIELD(GENERIC_MAPPING, ACCESS_MASK, GenericWrite, 4, 4, 4);
    TEST_FIELD(GENERIC_MAPPING, ACCESS_MASK, GenericExecute, 8, 4, 4);
    TEST_FIELD(GENERIC_MAPPING, ACCESS_MASK, GenericAll, 12, 4, 4);
}

static void test_pack_HANDLE(void)
{
    /* HANDLE */
    TEST_TYPE(HANDLE, 4, 4);
}

static void test_pack_HRESULT(void)
{
    /* HRESULT */
    TEST_TYPE(HRESULT, 4, 4);
}

static void test_pack_IMAGE_ARCHIVE_MEMBER_HEADER(void)
{
    /* IMAGE_ARCHIVE_MEMBER_HEADER (pack 4) */
    TEST_TYPE(IMAGE_ARCHIVE_MEMBER_HEADER, 60, 1);
    TEST_FIELD(IMAGE_ARCHIVE_MEMBER_HEADER, BYTE[16], Name, 0, 16, 1);
    TEST_FIELD(IMAGE_ARCHIVE_MEMBER_HEADER, BYTE[12], Date, 16, 12, 1);
    TEST_FIELD(IMAGE_ARCHIVE_MEMBER_HEADER, BYTE[6], UserID, 28, 6, 1);
    TEST_FIELD(IMAGE_ARCHIVE_MEMBER_HEADER, BYTE[6], GroupID, 34, 6, 1);
    TEST_FIELD(IMAGE_ARCHIVE_MEMBER_HEADER, BYTE[8], Mode, 40, 8, 1);
    TEST_FIELD(IMAGE_ARCHIVE_MEMBER_HEADER, BYTE[10], Size, 48, 10, 1);
    TEST_FIELD(IMAGE_ARCHIVE_MEMBER_HEADER, BYTE[2], EndHeader, 58, 2, 1);
}

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(IMAGE_BASE_RELOCATION, 8, 4);
    TEST_FIELD(IMAGE_BASE_RELOCATION, DWORD, VirtualAddress, 0, 4, 4);
    TEST_FIELD(IMAGE_BASE_RELOCATION, DWORD, SizeOfBlock, 4, 4, 4);
}

static void test_pack_IMAGE_BOUND_FORWARDER_REF(void)
{
    /* IMAGE_BOUND_FORWARDER_REF (pack 4) */
    TEST_TYPE(IMAGE_BOUND_FORWARDER_REF, 8, 4);
    TEST_FIELD(IMAGE_BOUND_FORWARDER_REF, DWORD, TimeDateStamp, 0, 4, 4);
    TEST_FIELD(IMAGE_BOUND_FORWARDER_REF, WORD, OffsetModuleName, 4, 2, 2);
    TEST_FIELD(IMAGE_BOUND_FORWARDER_REF, WORD, Reserved, 6, 2, 2);
}

static void test_pack_IMAGE_BOUND_IMPORT_DESCRIPTOR(void)
{
    /* IMAGE_BOUND_IMPORT_DESCRIPTOR (pack 4) */
    TEST_TYPE(IMAGE_BOUND_IMPORT_DESCRIPTOR, 8, 4);
    TEST_FIELD(IMAGE_BOUND_IMPORT_DESCRIPTOR, DWORD, TimeDateStamp, 0, 4, 4);
    TEST_FIELD(IMAGE_BOUND_IMPORT_DESCRIPTOR, WORD, OffsetModuleName, 4, 2, 2);
    TEST_FIELD(IMAGE_BOUND_IMPORT_DESCRIPTOR, WORD, NumberOfModuleForwarderRefs, 6, 2, 2);
}

static void test_pack_IMAGE_COFF_SYMBOLS_HEADER(void)
{
    /* IMAGE_COFF_SYMBOLS_HEADER (pack 4) */
    TEST_TYPE(IMAGE_COFF_SYMBOLS_HEADER, 32, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, NumberOfSymbols, 0, 4, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, LvaToFirstSymbol, 4, 4, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, NumberOfLinenumbers, 8, 4, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, LvaToFirstLinenumber, 12, 4, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, RvaToFirstByteOfCode, 16, 4, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, RvaToLastByteOfCode, 20, 4, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, RvaToFirstByteOfData, 24, 4, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, RvaToLastByteOfData, 28, 4, 4);
}

static void test_pack_IMAGE_DATA_DIRECTORY(void)
{
    /* IMAGE_DATA_DIRECTORY (pack 4) */
    TEST_TYPE(IMAGE_DATA_DIRECTORY, 8, 4);
    TEST_FIELD(IMAGE_DATA_DIRECTORY, DWORD, VirtualAddress, 0, 4, 4);
    TEST_FIELD(IMAGE_DATA_DIRECTORY, DWORD, Size, 4, 4, 4);
}

static void test_pack_IMAGE_DEBUG_DIRECTORY(void)
{
    /* IMAGE_DEBUG_DIRECTORY (pack 4) */
    TEST_TYPE(IMAGE_DEBUG_DIRECTORY, 28, 4);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, DWORD, Characteristics, 0, 4, 4);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, DWORD, TimeDateStamp, 4, 4, 4);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, WORD, MajorVersion, 8, 2, 2);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, WORD, MinorVersion, 10, 2, 2);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, DWORD, Type, 12, 4, 4);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, DWORD, SizeOfData, 16, 4, 4);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, DWORD, AddressOfRawData, 20, 4, 4);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, DWORD, PointerToRawData, 24, 4, 4);
}

static void test_pack_IMAGE_DEBUG_MISC(void)
{
    /* IMAGE_DEBUG_MISC (pack 4) */
    TEST_TYPE(IMAGE_DEBUG_MISC, 16, 4);
    TEST_FIELD(IMAGE_DEBUG_MISC, DWORD, DataType, 0, 4, 4);
    TEST_FIELD(IMAGE_DEBUG_MISC, DWORD, Length, 4, 4, 4);
    TEST_FIELD(IMAGE_DEBUG_MISC, BYTE, Unicode, 8, 1, 1);
    TEST_FIELD(IMAGE_DEBUG_MISC, BYTE[ 3 ], Reserved, 9, 3, 1);
    TEST_FIELD(IMAGE_DEBUG_MISC, BYTE[ 1 ], Data, 12, 1, 1);
}

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

static void test_pack_IMAGE_EXPORT_DIRECTORY(void)
{
    /* IMAGE_EXPORT_DIRECTORY (pack 4) */
    TEST_TYPE(IMAGE_EXPORT_DIRECTORY, 40, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, Characteristics, 0, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, TimeDateStamp, 4, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, WORD, MajorVersion, 8, 2, 2);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, WORD, MinorVersion, 10, 2, 2);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, Name, 12, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, Base, 16, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, NumberOfFunctions, 20, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, NumberOfNames, 24, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, AddressOfFunctions, 28, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, AddressOfNames, 32, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, AddressOfNameOrdinals, 36, 4, 4);
}

static void test_pack_IMAGE_FILE_HEADER(void)
{
    /* IMAGE_FILE_HEADER (pack 4) */
    TEST_TYPE(IMAGE_FILE_HEADER, 20, 4);
    TEST_FIELD(IMAGE_FILE_HEADER, WORD, Machine, 0, 2, 2);
    TEST_FIELD(IMAGE_FILE_HEADER, WORD, NumberOfSections, 2, 2, 2);
    TEST_FIELD(IMAGE_FILE_HEADER, DWORD, TimeDateStamp, 4, 4, 4);
    TEST_FIELD(IMAGE_FILE_HEADER, DWORD, PointerToSymbolTable, 8, 4, 4);
    TEST_FIELD(IMAGE_FILE_HEADER, DWORD, NumberOfSymbols, 12, 4, 4);
    TEST_FIELD(IMAGE_FILE_HEADER, WORD, SizeOfOptionalHeader, 16, 2, 2);
    TEST_FIELD(IMAGE_FILE_HEADER, WORD, Characteristics, 18, 2, 2);
}

static void test_pack_IMAGE_FUNCTION_ENTRY(void)
{
    /* IMAGE_FUNCTION_ENTRY (pack 4) */
    TEST_TYPE(IMAGE_FUNCTION_ENTRY, 12, 4);
    TEST_FIELD(IMAGE_FUNCTION_ENTRY, DWORD, StartingAddress, 0, 4, 4);
    TEST_FIELD(IMAGE_FUNCTION_ENTRY, DWORD, EndingAddress, 4, 4, 4);
    TEST_FIELD(IMAGE_FUNCTION_ENTRY, DWORD, EndOfPrologue, 8, 4, 4);
}

static void test_pack_IMAGE_IMPORT_BY_NAME(void)
{
    /* IMAGE_IMPORT_BY_NAME (pack 4) */
    TEST_TYPE(IMAGE_IMPORT_BY_NAME, 4, 2);
    TEST_FIELD(IMAGE_IMPORT_BY_NAME, WORD, Hint, 0, 2, 2);
    TEST_FIELD(IMAGE_IMPORT_BY_NAME, BYTE[1], Name, 2, 1, 1);
}

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(IMAGE_LOAD_CONFIG_DIRECTORY, 72, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, DWORD, Size, 0, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, DWORD, TimeDateStamp, 4, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, WORD, MajorVersion, 8, 2, 2);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, WORD, MinorVersion, 10, 2, 2);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, DWORD, GlobalFlagsClear, 12, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, DWORD, GlobalFlagsSet, 16, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, DWORD, CriticalSectionDefaultTimeout, 20, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, DWORD, DeCommitFreeBlockThreshold, 24, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, DWORD, DeCommitTotalFreeThreshold, 28, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, PVOID, LockPrefixTable, 32, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, DWORD, MaximumAllocationSize, 36, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, DWORD, VirtualMemoryThreshold, 40, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, DWORD, ProcessHeapFlags, 44, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, DWORD, ProcessAffinityMask, 48, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, WORD, CSDVersion, 52, 2, 2);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, WORD, Reserved1, 54, 2, 2);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, PVOID, EditList, 56, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, DWORD, SecurityCookie, 60, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, DWORD, SEHandlerTable, 64, 4, 4);
    TEST_FIELD(IMAGE_LOAD_CONFIG_DIRECTORY, DWORD, SEHandlerCount, 68, 4, 4);
}

static void test_pack_IMAGE_NT_HEADERS(void)
{
    /* IMAGE_NT_HEADERS */
    TEST_TYPE(IMAGE_NT_HEADERS, 248, 4);
}

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

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(IMAGE_RESOURCE_DATA_ENTRY, 16, 4);
    TEST_FIELD(IMAGE_RESOURCE_DATA_ENTRY, DWORD, OffsetToData, 0, 4, 4);
    TEST_FIELD(IMAGE_RESOURCE_DATA_ENTRY, DWORD, Size, 4, 4, 4);
    TEST_FIELD(IMAGE_RESOURCE_DATA_ENTRY, DWORD, CodePage, 8, 4, 4);
    TEST_FIELD(IMAGE_RESOURCE_DATA_ENTRY, DWORD, Reserved, 12, 4, 4);
}

static void test_pack_IMAGE_RESOURCE_DIRECTORY(void)
{
    /* IMAGE_RESOURCE_DIRECTORY (pack 4) */
    TEST_TYPE(IMAGE_RESOURCE_DIRECTORY, 16, 4);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY, DWORD, Characteristics, 0, 4, 4);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY, DWORD, TimeDateStamp, 4, 4, 4);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY, WORD, MajorVersion, 8, 2, 2);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY, WORD, MinorVersion, 10, 2, 2);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY, WORD, NumberOfNamedEntries, 12, 2, 2);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY, WORD, NumberOfIdEntries, 14, 2, 2);
}

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(IMAGE_RESOURCE_DIRECTORY_STRING, 4, 2);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY_STRING, WORD, Length, 0, 2, 2);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY_STRING, CHAR[ 1 ], NameString, 2, 1, 1);
}

static void test_pack_IMAGE_RESOURCE_DIR_STRING_U(void)
{
    /* IMAGE_RESOURCE_DIR_STRING_U (pack 4) */
    TEST_TYPE(IMAGE_RESOURCE_DIR_STRING_U, 4, 2);
    TEST_FIELD(IMAGE_RESOURCE_DIR_STRING_U, WORD, Length, 0, 2, 2);
    TEST_FIELD(IMAGE_RESOURCE_DIR_STRING_U, WCHAR[ 1 ], NameString, 2, 2, 2);
}

static void test_pack_IMAGE_SECTION_HEADER(void)
{
    /* IMAGE_SECTION_HEADER (pack 4) */
    TEST_FIELD(IMAGE_SECTION_HEADER, BYTE[IMAGE_SIZEOF_SHORT_NAME], Name, 0, 8, 1);
}

static void test_pack_IMAGE_SEPARATE_DEBUG_HEADER(void)
{
    /* IMAGE_SEPARATE_DEBUG_HEADER (pack 4) */
    TEST_TYPE(IMAGE_SEPARATE_DEBUG_HEADER, 48, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, WORD, Signature, 0, 2, 2);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, WORD, Flags, 2, 2, 2);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, WORD, Machine, 4, 2, 2);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, WORD, Characteristics, 6, 2, 2);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, TimeDateStamp, 8, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, CheckSum, 12, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, ImageBase, 16, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, SizeOfImage, 20, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, NumberOfSections, 24, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, ExportedNamesSize, 28, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, DebugDirectorySize, 32, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, SectionAlignment, 36, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD[ 2 ], Reserved, 40, 8, 4);
}

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(IMAGE_TLS_DIRECTORY, 24, 4);
}

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

static void test_pack_IO_COUNTERS(void)
{
    /* IO_COUNTERS (pack 8) */
    TEST_TYPE(IO_COUNTERS, 48, 8);
    TEST_FIELD(IO_COUNTERS, ULONGLONG, ReadOperationCount, 0, 8, 8);
    TEST_FIELD(IO_COUNTERS, ULONGLONG, WriteOperationCount, 8, 8, 8);
    TEST_FIELD(IO_COUNTERS, ULONGLONG, OtherOperationCount, 16, 8, 8);
    TEST_FIELD(IO_COUNTERS, ULONGLONG, ReadTransferCount, 24, 8, 8);
    TEST_FIELD(IO_COUNTERS, ULONGLONG, WriteTransferCount, 32, 8, 8);
    TEST_FIELD(IO_COUNTERS, ULONGLONG, OtherTransferCount, 40, 8, 8);
}

static void test_pack_LANGID(void)
{
    /* LANGID */
    TEST_TYPE(LANGID, 2, 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(LCID, 4, 4);
    TEST_TYPE_UNSIGNED(LCID);
}

static void test_pack_LIST_ENTRY(void)
{
    /* LIST_ENTRY (pack 4) */
    TEST_TYPE(LIST_ENTRY, 8, 4);
    TEST_FIELD(LIST_ENTRY, struct _LIST_ENTRY *, Flink, 0, 4, 4);
    TEST_FIELD(LIST_ENTRY, struct _LIST_ENTRY *, Blink, 4, 4, 4);
}

static void test_pack_LONG(void)
{
    /* LONG */
    TEST_TYPE(LONG, 4, 4);
    TEST_TYPE_SIGNED(LONG);
}

static void test_pack_LONGLONG(void)
{
    /* LONGLONG */
    TEST_TYPE(LONGLONG, 8, 8);
    TEST_TYPE_SIGNED(LONGLONG);
}

static void test_pack_LUID(void)
{
    /* LUID (pack 4) */
    TEST_TYPE(LUID, 8, 4);
    TEST_FIELD(LUID, DWORD, LowPart, 0, 4, 4);
    TEST_FIELD(LUID, LONG, HighPart, 4, 4, 4);
}

static void test_pack_LUID_AND_ATTRIBUTES(void)
{
    /* LUID_AND_ATTRIBUTES (pack 4) */
    TEST_TYPE(LUID_AND_ATTRIBUTES, 12, 4);
    TEST_FIELD(LUID_AND_ATTRIBUTES, LUID, Luid, 0, 8, 4);
    TEST_FIELD(LUID_AND_ATTRIBUTES, DWORD, Attributes, 8, 4, 4);
}

static void test_pack_MEMORY_BASIC_INFORMATION(void)
{
    /* MEMORY_BASIC_INFORMATION (pack 4) */
    TEST_TYPE(MEMORY_BASIC_INFORMATION, 28, 4);
    TEST_FIELD(MEMORY_BASIC_INFORMATION, LPVOID, BaseAddress, 0, 4, 4);
    TEST_FIELD(MEMORY_BASIC_INFORMATION, LPVOID, AllocationBase, 4, 4, 4);
    TEST_FIELD(MEMORY_BASIC_INFORMATION, DWORD, AllocationProtect, 8, 4, 4);
    TEST_FIELD(MEMORY_BASIC_INFORMATION, SIZE_T, RegionSize, 12, 4, 4);
    TEST_FIELD(MEMORY_BASIC_INFORMATION, DWORD, State, 16, 4, 4);
    TEST_FIELD(MEMORY_BASIC_INFORMATION, DWORD, Protect, 20, 4, 4);
    TEST_FIELD(MEMORY_BASIC_INFORMATION, DWORD, Type, 24, 4, 4);
}

static void test_pack_MESSAGE_RESOURCE_BLOCK(void)
{
    /* MESSAGE_RESOURCE_BLOCK (pack 4) */
    TEST_TYPE(MESSAGE_RESOURCE_BLOCK, 12, 4);
    TEST_FIELD(MESSAGE_RESOURCE_BLOCK, DWORD, LowId, 0, 4, 4);
    TEST_FIELD(MESSAGE_RESOURCE_BLOCK, DWORD, HighId, 4, 4, 4);
    TEST_FIELD(MESSAGE_RESOURCE_BLOCK, DWORD, OffsetToEntries, 8, 4, 4);
}

static void test_pack_MESSAGE_RESOURCE_DATA(void)
{
    /* MESSAGE_RESOURCE_DATA (pack 4) */
    TEST_TYPE(MESSAGE_RESOURCE_DATA, 16, 4);
    TEST_FIELD(MESSAGE_RESOURCE_DATA, DWORD, NumberOfBlocks, 0, 4, 4);
    TEST_FIELD(MESSAGE_RESOURCE_DATA, MESSAGE_RESOURCE_BLOCK[ 1 ], Blocks, 4, 12, 4);
}

static void test_pack_MESSAGE_RESOURCE_ENTRY(void)
{
    /* MESSAGE_RESOURCE_ENTRY (pack 4) */
    TEST_TYPE(MESSAGE_RESOURCE_ENTRY, 6, 2);
    TEST_FIELD(MESSAGE_RESOURCE_ENTRY, WORD, Length, 0, 2, 2);
    TEST_FIELD(MESSAGE_RESOURCE_ENTRY, WORD, Flags, 2, 2, 2);
    TEST_FIELD(MESSAGE_RESOURCE_ENTRY, BYTE[1], Text, 4, 1, 1);
}

static void test_pack_NT_TIB(void)
{
    /* NT_TIB (pack 4) */
    TEST_FIELD(NT_TIB, struct _EXCEPTION_REGISTRATION_RECORD *, ExceptionList, 0, 4, 4);
    TEST_FIELD(NT_TIB, PVOID, StackBase, 4, 4, 4);
    TEST_FIELD(NT_TIB, PVOID, StackLimit, 8, 4, 4);
    TEST_FIELD(NT_TIB, PVOID, SubSystemTib, 12, 4, 4);
}

static void test_pack_OBJECT_TYPE_LIST(void)
{
    /* OBJECT_TYPE_LIST (pack 4) */
    TEST_TYPE(OBJECT_TYPE_LIST, 8, 4);
    TEST_FIELD(OBJECT_TYPE_LIST, WORD, Level, 0, 2, 2);
    TEST_FIELD(OBJECT_TYPE_LIST, WORD, Sbz, 2, 2, 2);
    TEST_FIELD(OBJECT_TYPE_LIST, GUID *, ObjectType, 4, 4, 4);
}

static void test_pack_PACCESS_ALLOWED_ACE(void)
{
    /* PACCESS_ALLOWED_ACE */
    TEST_TYPE(PACCESS_ALLOWED_ACE, 4, 4);
    TEST_TYPE_POINTER(PACCESS_ALLOWED_ACE, 12, 4);
}

static void test_pack_PACCESS_DENIED_ACE(void)
{
    /* PACCESS_DENIED_ACE */
    TEST_TYPE(PACCESS_DENIED_ACE, 4, 4);
    TEST_TYPE_POINTER(PACCESS_DENIED_ACE, 12, 4);
}

static void test_pack_PACCESS_TOKEN(void)
{
    /* PACCESS_TOKEN */
    TEST_TYPE(PACCESS_TOKEN, 4, 4);
}

static void test_pack_PACE_HEADER(void)
{
    /* PACE_HEADER */
    TEST_TYPE(PACE_HEADER, 4, 4);
    TEST_TYPE_POINTER(PACE_HEADER, 4, 2);
}

static void test_pack_PACL(void)
{
    /* PACL */
    TEST_TYPE(PACL, 4, 4);
    TEST_TYPE_POINTER(PACL, 8, 2);
}

static void test_pack_PACL_REVISION_INFORMATION(void)
{
    /* PACL_REVISION_INFORMATION */
    TEST_TYPE(PACL_REVISION_INFORMATION, 4, 4);
    TEST_TYPE_POINTER(PACL_REVISION_INFORMATION, 4, 4);
}

static void test_pack_PACL_SIZE_INFORMATION(void)
{
    /* PACL_SIZE_INFORMATION */
    TEST_TYPE(PACL_SIZE_INFORMATION, 4, 4);
    TEST_TYPE_POINTER(PACL_SIZE_INFORMATION, 12, 4);
}

static void test_pack_PCCH(void)
{
    /* PCCH */
    TEST_TYPE(PCCH, 4, 4);
    TEST_TYPE_POINTER(PCCH, 1, 1);
}

static void test_pack_PCH(void)
{
    /* PCH */
    TEST_TYPE(PCH, 4, 4);
    TEST_TYPE_POINTER(PCH, 1, 1);
}

static void test_pack_PCSTR(void)
{
    /* PCSTR */
    TEST_TYPE(PCSTR, 4, 4);
    TEST_TYPE_POINTER(PCSTR, 1, 1);
}

static void test_pack_PCTSTR(void)
{
    /* PCTSTR */
    TEST_TYPE(PCTSTR, 4, 4);
}

static void test_pack_PCWCH(void)
{
    /* PCWCH */
    TEST_TYPE(PCWCH, 4, 4);
    TEST_TYPE_POINTER(PCWCH, 2, 2);
}

static void test_pack_PCWSTR(void)
{
    /* PCWSTR */
    TEST_TYPE(PCWSTR, 4, 4);
    TEST_TYPE_POINTER(PCWSTR, 2, 2);
}

static void test_pack_PEXCEPTION_POINTERS(void)
{
    /* PEXCEPTION_POINTERS */
    TEST_TYPE(PEXCEPTION_POINTERS, 4, 4);
    TEST_TYPE_POINTER(PEXCEPTION_POINTERS, 8, 4);
}

static void test_pack_PEXCEPTION_RECORD(void)
{
    /* PEXCEPTION_RECORD */
    TEST_TYPE(PEXCEPTION_RECORD, 4, 4);
    TEST_TYPE_POINTER(PEXCEPTION_RECORD, 80, 4);
}

static void test_pack_PFLOATING_SAVE_AREA(void)
{
    /* PFLOATING_SAVE_AREA */
    TEST_TYPE(PFLOATING_SAVE_AREA, 4, 4);
    TEST_TYPE_POINTER(PFLOATING_SAVE_AREA, 112, 4);
}

static void test_pack_PFPO_DATA(void)
{
    /* PFPO_DATA */
    TEST_TYPE(PFPO_DATA, 4, 4);
    TEST_TYPE_POINTER(PFPO_DATA, 16, 4);
}

static void test_pack_PGENERIC_MAPPING(void)
{
    /* PGENERIC_MAPPING */
    TEST_TYPE(PGENERIC_MAPPING, 4, 4);
    TEST_TYPE_POINTER(PGENERIC_MAPPING, 16, 4);
}

static void test_pack_PHANDLE(void)
{
    /* PHANDLE */
    TEST_TYPE(PHANDLE, 4, 4);
    TEST_TYPE_POINTER(PHANDLE, 4, 4);
}

static void test_pack_PIMAGE_ARCHIVE_MEMBER_HEADER(void)
{
    /* PIMAGE_ARCHIVE_MEMBER_HEADER */
    TEST_TYPE(PIMAGE_ARCHIVE_MEMBER_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_ARCHIVE_MEMBER_HEADER, 60, 1);
}

static void test_pack_PIMAGE_AUX_SYMBOL(void)
{
    /* PIMAGE_AUX_SYMBOL */
    TEST_TYPE(PIMAGE_AUX_SYMBOL, 4, 4);
}

static void test_pack_PIMAGE_BASE_RELOCATION(void)
{
    /* PIMAGE_BASE_RELOCATION */
    TEST_TYPE(PIMAGE_BASE_RELOCATION, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_BASE_RELOCATION, 8, 4);
}

static void test_pack_PIMAGE_BOUND_FORWARDER_REF(void)
{
    /* PIMAGE_BOUND_FORWARDER_REF */
    TEST_TYPE(PIMAGE_BOUND_FORWARDER_REF, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_BOUND_FORWARDER_REF, 8, 4);
}

static void test_pack_PIMAGE_BOUND_IMPORT_DESCRIPTOR(void)
{
    /* PIMAGE_BOUND_IMPORT_DESCRIPTOR */
    TEST_TYPE(PIMAGE_BOUND_IMPORT_DESCRIPTOR, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_BOUND_IMPORT_DESCRIPTOR, 8, 4);
}

static void test_pack_PIMAGE_COFF_SYMBOLS_HEADER(void)
{
    /* PIMAGE_COFF_SYMBOLS_HEADER */
    TEST_TYPE(PIMAGE_COFF_SYMBOLS_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_COFF_SYMBOLS_HEADER, 32, 4);
}

static void test_pack_PIMAGE_DATA_DIRECTORY(void)
{
    /* PIMAGE_DATA_DIRECTORY */
    TEST_TYPE(PIMAGE_DATA_DIRECTORY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_DATA_DIRECTORY, 8, 4);
}

static void test_pack_PIMAGE_DEBUG_DIRECTORY(void)
{
    /* PIMAGE_DEBUG_DIRECTORY */
    TEST_TYPE(PIMAGE_DEBUG_DIRECTORY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_DEBUG_DIRECTORY, 28, 4);
}

static void test_pack_PIMAGE_DEBUG_MISC(void)
{
    /* PIMAGE_DEBUG_MISC */
    TEST_TYPE(PIMAGE_DEBUG_MISC, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_DEBUG_MISC, 16, 4);
}

static void test_pack_PIMAGE_DOS_HEADER(void)
{
    /* PIMAGE_DOS_HEADER */
    TEST_TYPE(PIMAGE_DOS_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_DOS_HEADER, 64, 2);
}

static void test_pack_PIMAGE_EXPORT_DIRECTORY(void)
{
    /* PIMAGE_EXPORT_DIRECTORY */
    TEST_TYPE(PIMAGE_EXPORT_DIRECTORY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_EXPORT_DIRECTORY, 40, 4);
}

static void test_pack_PIMAGE_FILE_HEADER(void)
{
    /* PIMAGE_FILE_HEADER */
    TEST_TYPE(PIMAGE_FILE_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_FILE_HEADER, 20, 4);
}

static void test_pack_PIMAGE_FUNCTION_ENTRY(void)
{
    /* PIMAGE_FUNCTION_ENTRY */
    TEST_TYPE(PIMAGE_FUNCTION_ENTRY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_FUNCTION_ENTRY, 12, 4);
}

static void test_pack_PIMAGE_IMPORT_BY_NAME(void)
{
    /* PIMAGE_IMPORT_BY_NAME */
    TEST_TYPE(PIMAGE_IMPORT_BY_NAME, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_IMPORT_BY_NAME, 4, 2);
}

static void test_pack_PIMAGE_IMPORT_DESCRIPTOR(void)
{
    /* PIMAGE_IMPORT_DESCRIPTOR */
    TEST_TYPE(PIMAGE_IMPORT_DESCRIPTOR, 4, 4);
}

static void test_pack_PIMAGE_LINENUMBER(void)
{
    /* PIMAGE_LINENUMBER */
    TEST_TYPE(PIMAGE_LINENUMBER, 4, 4);
}

static void test_pack_PIMAGE_LOAD_CONFIG_DIRECTORY(void)
{
    /* PIMAGE_LOAD_CONFIG_DIRECTORY */
    TEST_TYPE(PIMAGE_LOAD_CONFIG_DIRECTORY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_LOAD_CONFIG_DIRECTORY, 72, 4);
}

static void test_pack_PIMAGE_NT_HEADERS(void)
{
    /* PIMAGE_NT_HEADERS */
    TEST_TYPE(PIMAGE_NT_HEADERS, 4, 4);
}

static void test_pack_PIMAGE_OPTIONAL_HEADER(void)
{
    /* PIMAGE_OPTIONAL_HEADER */
    TEST_TYPE(PIMAGE_OPTIONAL_HEADER, 4, 4);
}

static void test_pack_PIMAGE_OS2_HEADER(void)
{
    /* PIMAGE_OS2_HEADER */
    TEST_TYPE(PIMAGE_OS2_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_OS2_HEADER, 64, 2);
}

static void test_pack_PIMAGE_RELOCATION(void)
{
    /* PIMAGE_RELOCATION */
    TEST_TYPE(PIMAGE_RELOCATION, 4, 4);
}

static void test_pack_PIMAGE_RESOURCE_DATA_ENTRY(void)
{
    /* PIMAGE_RESOURCE_DATA_ENTRY */
    TEST_TYPE(PIMAGE_RESOURCE_DATA_ENTRY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_RESOURCE_DATA_ENTRY, 16, 4);
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY */
    TEST_TYPE(PIMAGE_RESOURCE_DIRECTORY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_RESOURCE_DIRECTORY, 16, 4);
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY_ENTRY(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY_ENTRY */
    TEST_TYPE(PIMAGE_RESOURCE_DIRECTORY_ENTRY, 4, 4);
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY_STRING(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY_STRING */
    TEST_TYPE(PIMAGE_RESOURCE_DIRECTORY_STRING, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_RESOURCE_DIRECTORY_STRING, 4, 2);
}

static void test_pack_PIMAGE_RESOURCE_DIR_STRING_U(void)
{
    /* PIMAGE_RESOURCE_DIR_STRING_U */
    TEST_TYPE(PIMAGE_RESOURCE_DIR_STRING_U, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_RESOURCE_DIR_STRING_U, 4, 2);
}

static void test_pack_PIMAGE_SECTION_HEADER(void)
{
    /* PIMAGE_SECTION_HEADER */
    TEST_TYPE(PIMAGE_SECTION_HEADER, 4, 4);
}

static void test_pack_PIMAGE_SEPARATE_DEBUG_HEADER(void)
{
    /* PIMAGE_SEPARATE_DEBUG_HEADER */
    TEST_TYPE(PIMAGE_SEPARATE_DEBUG_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_SEPARATE_DEBUG_HEADER, 48, 4);
}

static void test_pack_PIMAGE_SYMBOL(void)
{
    /* PIMAGE_SYMBOL */
    TEST_TYPE(PIMAGE_SYMBOL, 4, 4);
}

static void test_pack_PIMAGE_THUNK_DATA(void)
{
    /* PIMAGE_THUNK_DATA */
    TEST_TYPE(PIMAGE_THUNK_DATA, 4, 4);
}

static void test_pack_PIMAGE_TLS_CALLBACK(void)
{
    /* PIMAGE_TLS_CALLBACK */
    TEST_TYPE(PIMAGE_TLS_CALLBACK, 4, 4);
}

static void test_pack_PIMAGE_TLS_DIRECTORY(void)
{
    /* PIMAGE_TLS_DIRECTORY */
    TEST_TYPE(PIMAGE_TLS_DIRECTORY, 4, 4);
}

static void test_pack_PIMAGE_VXD_HEADER(void)
{
    /* PIMAGE_VXD_HEADER */
    TEST_TYPE(PIMAGE_VXD_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_VXD_HEADER, 196, 2);
}

static void test_pack_PIO_COUNTERS(void)
{
    /* PIO_COUNTERS */
    TEST_TYPE(PIO_COUNTERS, 4, 4);
    TEST_TYPE_POINTER(PIO_COUNTERS, 48, 8);
}

static void test_pack_PISECURITY_DESCRIPTOR(void)
{
    /* PISECURITY_DESCRIPTOR */
    TEST_TYPE(PISECURITY_DESCRIPTOR, 4, 4);
    TEST_TYPE_POINTER(PISECURITY_DESCRIPTOR, 20, 4);
}

static void test_pack_PISECURITY_DESCRIPTOR_RELATIVE(void)
{
    /* PISECURITY_DESCRIPTOR_RELATIVE */
    TEST_TYPE(PISECURITY_DESCRIPTOR_RELATIVE, 4, 4);
    TEST_TYPE_POINTER(PISECURITY_DESCRIPTOR_RELATIVE, 20, 4);
}

static void test_pack_PISID(void)
{
    /* PISID */
    TEST_TYPE(PISID, 4, 4);
    TEST_TYPE_POINTER(PISID, 12, 4);
}

static void test_pack_PLARGE_INTEGER(void)
{
    /* PLARGE_INTEGER */
    TEST_TYPE(PLARGE_INTEGER, 4, 4);
}

static void test_pack_PLIST_ENTRY(void)
{
    /* PLIST_ENTRY */
    TEST_TYPE(PLIST_ENTRY, 4, 4);
    TEST_TYPE_POINTER(PLIST_ENTRY, 8, 4);
}

static void test_pack_PLUID(void)
{
    /* PLUID */
    TEST_TYPE(PLUID, 4, 4);
    TEST_TYPE_POINTER(PLUID, 8, 4);
}

static void test_pack_PLUID_AND_ATTRIBUTES(void)
{
    /* PLUID_AND_ATTRIBUTES */
    TEST_TYPE(PLUID_AND_ATTRIBUTES, 4, 4);
    TEST_TYPE_POINTER(PLUID_AND_ATTRIBUTES, 12, 4);
}

static void test_pack_PMEMORY_BASIC_INFORMATION(void)
{
    /* PMEMORY_BASIC_INFORMATION */
    TEST_TYPE(PMEMORY_BASIC_INFORMATION, 4, 4);
    TEST_TYPE_POINTER(PMEMORY_BASIC_INFORMATION, 28, 4);
}

static void test_pack_PMESSAGE_RESOURCE_BLOCK(void)
{
    /* PMESSAGE_RESOURCE_BLOCK */
    TEST_TYPE(PMESSAGE_RESOURCE_BLOCK, 4, 4);
    TEST_TYPE_POINTER(PMESSAGE_RESOURCE_BLOCK, 12, 4);
}

static void test_pack_PMESSAGE_RESOURCE_DATA(void)
{
    /* PMESSAGE_RESOURCE_DATA */
    TEST_TYPE(PMESSAGE_RESOURCE_DATA, 4, 4);
    TEST_TYPE_POINTER(PMESSAGE_RESOURCE_DATA, 16, 4);
}

static void test_pack_PMESSAGE_RESOURCE_ENTRY(void)
{
    /* PMESSAGE_RESOURCE_ENTRY */
    TEST_TYPE(PMESSAGE_RESOURCE_ENTRY, 4, 4);
    TEST_TYPE_POINTER(PMESSAGE_RESOURCE_ENTRY, 6, 2);
}

static void test_pack_PNT_TIB(void)
{
    /* PNT_TIB */
    TEST_TYPE(PNT_TIB, 4, 4);
}

static void test_pack_POBJECT_TYPE_LIST(void)
{
    /* POBJECT_TYPE_LIST */
    TEST_TYPE(POBJECT_TYPE_LIST, 4, 4);
    TEST_TYPE_POINTER(POBJECT_TYPE_LIST, 8, 4);
}

static void test_pack_PPRIVILEGE_SET(void)
{
    /* PPRIVILEGE_SET */
    TEST_TYPE(PPRIVILEGE_SET, 4, 4);
    TEST_TYPE_POINTER(PPRIVILEGE_SET, 20, 4);
}

static void test_pack_PRIVILEGE_SET(void)
{
    /* PRIVILEGE_SET (pack 4) */
    TEST_TYPE(PRIVILEGE_SET, 20, 4);
    TEST_FIELD(PRIVILEGE_SET, DWORD, PrivilegeCount, 0, 4, 4);
    TEST_FIELD(PRIVILEGE_SET, DWORD, Control, 4, 4, 4);
    TEST_FIELD(PRIVILEGE_SET, LUID_AND_ATTRIBUTES[ANYSIZE_ARRAY], Privilege, 8, 12, 4);
}

static void test_pack_PRLIST_ENTRY(void)
{
    /* PRLIST_ENTRY */
    TEST_TYPE(PRLIST_ENTRY, 4, 4);
    TEST_TYPE_POINTER(PRLIST_ENTRY, 8, 4);
}

static void test_pack_PRTL_CRITICAL_SECTION(void)
{
    /* PRTL_CRITICAL_SECTION */
    TEST_TYPE(PRTL_CRITICAL_SECTION, 4, 4);
    TEST_TYPE_POINTER(PRTL_CRITICAL_SECTION, 24, 4);
}

static void test_pack_PRTL_CRITICAL_SECTION_DEBUG(void)
{
    /* PRTL_CRITICAL_SECTION_DEBUG */
    TEST_TYPE(PRTL_CRITICAL_SECTION_DEBUG, 4, 4);
}

static void test_pack_PRTL_OSVERSIONINFOEXW(void)
{
    /* PRTL_OSVERSIONINFOEXW */
    TEST_TYPE(PRTL_OSVERSIONINFOEXW, 4, 4);
    TEST_TYPE_POINTER(PRTL_OSVERSIONINFOEXW, 284, 4);
}

static void test_pack_PRTL_OSVERSIONINFOW(void)
{
    /* PRTL_OSVERSIONINFOW */
    TEST_TYPE(PRTL_OSVERSIONINFOW, 4, 4);
    TEST_TYPE_POINTER(PRTL_OSVERSIONINFOW, 276, 4);
}

static void test_pack_PRTL_RESOURCE_DEBUG(void)
{
    /* PRTL_RESOURCE_DEBUG */
    TEST_TYPE(PRTL_RESOURCE_DEBUG, 4, 4);
}

static void test_pack_PSECURITY_DESCRIPTOR(void)
{
    /* PSECURITY_DESCRIPTOR */
    TEST_TYPE(PSECURITY_DESCRIPTOR, 4, 4);
}

static void test_pack_PSECURITY_QUALITY_OF_SERVICE(void)
{
    /* PSECURITY_QUALITY_OF_SERVICE */
    TEST_TYPE(PSECURITY_QUALITY_OF_SERVICE, 4, 4);
}

static void test_pack_PSID(void)
{
    /* PSID */
    TEST_TYPE(PSID, 4, 4);
}

static void test_pack_PSID_IDENTIFIER_AUTHORITY(void)
{
    /* PSID_IDENTIFIER_AUTHORITY */
    TEST_TYPE(PSID_IDENTIFIER_AUTHORITY, 4, 4);
    TEST_TYPE_POINTER(PSID_IDENTIFIER_AUTHORITY, 6, 1);
}

static void test_pack_PSINGLE_LIST_ENTRY(void)
{
    /* PSINGLE_LIST_ENTRY */
    TEST_TYPE(PSINGLE_LIST_ENTRY, 4, 4);
    TEST_TYPE_POINTER(PSINGLE_LIST_ENTRY, 4, 4);
}

static void test_pack_PSTR(void)
{
    /* PSTR */
    TEST_TYPE(PSTR, 4, 4);
    TEST_TYPE_POINTER(PSTR, 1, 1);
}

static void test_pack_PSYSTEM_ALARM_ACE(void)
{
    /* PSYSTEM_ALARM_ACE */
    TEST_TYPE(PSYSTEM_ALARM_ACE, 4, 4);
    TEST_TYPE_POINTER(PSYSTEM_ALARM_ACE, 12, 4);
}

static void test_pack_PSYSTEM_AUDIT_ACE(void)
{
    /* PSYSTEM_AUDIT_ACE */
    TEST_TYPE(PSYSTEM_AUDIT_ACE, 4, 4);
    TEST_TYPE_POINTER(PSYSTEM_AUDIT_ACE, 12, 4);
}

static void test_pack_PTOKEN_GROUPS(void)
{
    /* PTOKEN_GROUPS */
    TEST_TYPE(PTOKEN_GROUPS, 4, 4);
    TEST_TYPE_POINTER(PTOKEN_GROUPS, 12, 4);
}

static void test_pack_PTOKEN_PRIVILEGES(void)
{
    /* PTOKEN_PRIVILEGES */
    TEST_TYPE(PTOKEN_PRIVILEGES, 4, 4);
    TEST_TYPE_POINTER(PTOKEN_PRIVILEGES, 16, 4);
}

static void test_pack_PTOKEN_USER(void)
{
    /* PTOKEN_USER */
    TEST_TYPE(PTOKEN_USER, 4, 4);
    TEST_TYPE_POINTER(PTOKEN_USER, 8, 4);
}

static void test_pack_PTSTR(void)
{
    /* PTSTR */
    TEST_TYPE(PTSTR, 4, 4);
}

static void test_pack_PULARGE_INTEGER(void)
{
    /* PULARGE_INTEGER */
    TEST_TYPE(PULARGE_INTEGER, 4, 4);
}

static void test_pack_PVECTORED_EXCEPTION_HANDLER(void)
{
    /* PVECTORED_EXCEPTION_HANDLER */
    TEST_TYPE(PVECTORED_EXCEPTION_HANDLER, 4, 4);
}

static void test_pack_PVOID(void)
{
    /* PVOID */
    TEST_TYPE(PVOID, 4, 4);
}

static void test_pack_PWCH(void)
{
    /* PWCH */
    TEST_TYPE(PWCH, 4, 4);
    TEST_TYPE_POINTER(PWCH, 2, 2);
}

static void test_pack_PWSTR(void)
{
    /* PWSTR */
    TEST_TYPE(PWSTR, 4, 4);
    TEST_TYPE_POINTER(PWSTR, 2, 2);
}

static void test_pack_RTL_CRITICAL_SECTION(void)
{
    /* RTL_CRITICAL_SECTION (pack 4) */
    TEST_TYPE(RTL_CRITICAL_SECTION, 24, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION, PRTL_CRITICAL_SECTION_DEBUG, DebugInfo, 0, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION, LONG, LockCount, 4, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION, LONG, RecursionCount, 8, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION, HANDLE, OwningThread, 12, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION, HANDLE, LockSemaphore, 16, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION, ULONG_PTR, SpinCount, 20, 4, 4);
}

static void test_pack_RTL_CRITICAL_SECTION_DEBUG(void)
{
    /* RTL_CRITICAL_SECTION_DEBUG (pack 4) */
    TEST_FIELD(RTL_CRITICAL_SECTION_DEBUG, WORD, Type, 0, 2, 2);
    TEST_FIELD(RTL_CRITICAL_SECTION_DEBUG, WORD, CreatorBackTraceIndex, 2, 2, 2);
    TEST_FIELD(RTL_CRITICAL_SECTION_DEBUG, struct _RTL_CRITICAL_SECTION *, CriticalSection, 4, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION_DEBUG, LIST_ENTRY, ProcessLocksList, 8, 8, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION_DEBUG, DWORD, EntryCount, 16, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION_DEBUG, DWORD, ContentionCount, 20, 4, 4);
}

static void test_pack_RTL_OSVERSIONINFOEXW(void)
{
    /* RTL_OSVERSIONINFOEXW (pack 4) */
    TEST_TYPE(RTL_OSVERSIONINFOEXW, 284, 4);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, DWORD, dwOSVersionInfoSize, 0, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, DWORD, dwMajorVersion, 4, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, DWORD, dwMinorVersion, 8, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, DWORD, dwBuildNumber, 12, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, DWORD, dwPlatformId, 16, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, WCHAR[128], szCSDVersion, 20, 256, 2);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, WORD, wServicePackMajor, 276, 2, 2);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, WORD, wServicePackMinor, 278, 2, 2);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, WORD, wSuiteMask, 280, 2, 2);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, BYTE, wProductType, 282, 1, 1);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, BYTE, wReserved, 283, 1, 1);
}

static void test_pack_RTL_OSVERSIONINFOW(void)
{
    /* RTL_OSVERSIONINFOW (pack 4) */
    TEST_TYPE(RTL_OSVERSIONINFOW, 276, 4);
    TEST_FIELD(RTL_OSVERSIONINFOW, DWORD, dwOSVersionInfoSize, 0, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOW, DWORD, dwMajorVersion, 4, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOW, DWORD, dwMinorVersion, 8, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOW, DWORD, dwBuildNumber, 12, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOW, DWORD, dwPlatformId, 16, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOW, WCHAR[128], szCSDVersion, 20, 256, 2);
}

static void test_pack_RTL_RESOURCE_DEBUG(void)
{
    /* RTL_RESOURCE_DEBUG (pack 4) */
    TEST_FIELD(RTL_RESOURCE_DEBUG, WORD, Type, 0, 2, 2);
    TEST_FIELD(RTL_RESOURCE_DEBUG, WORD, CreatorBackTraceIndex, 2, 2, 2);
    TEST_FIELD(RTL_RESOURCE_DEBUG, struct _RTL_CRITICAL_SECTION *, CriticalSection, 4, 4, 4);
    TEST_FIELD(RTL_RESOURCE_DEBUG, LIST_ENTRY, ProcessLocksList, 8, 8, 4);
    TEST_FIELD(RTL_RESOURCE_DEBUG, DWORD, EntryCount, 16, 4, 4);
    TEST_FIELD(RTL_RESOURCE_DEBUG, DWORD, ContentionCount, 20, 4, 4);
}

static void test_pack_SECURITY_CONTEXT_TRACKING_MODE(void)
{
    /* SECURITY_CONTEXT_TRACKING_MODE */
    TEST_TYPE(SECURITY_CONTEXT_TRACKING_MODE, 1, 1);
}

static void test_pack_SECURITY_DESCRIPTOR(void)
{
    /* SECURITY_DESCRIPTOR (pack 4) */
    TEST_TYPE(SECURITY_DESCRIPTOR, 20, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR, BYTE, Revision, 0, 1, 1);
    TEST_FIELD(SECURITY_DESCRIPTOR, BYTE, Sbz1, 1, 1, 1);
    TEST_FIELD(SECURITY_DESCRIPTOR, SECURITY_DESCRIPTOR_CONTROL, Control, 2, 2, 2);
    TEST_FIELD(SECURITY_DESCRIPTOR, PSID, Owner, 4, 4, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR, PSID, Group, 8, 4, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR, PACL, Sacl, 12, 4, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR, PACL, Dacl, 16, 4, 4);
}

static void test_pack_SECURITY_DESCRIPTOR_CONTROL(void)
{
    /* SECURITY_DESCRIPTOR_CONTROL */
    TEST_TYPE(SECURITY_DESCRIPTOR_CONTROL, 2, 2);
    TEST_TYPE_UNSIGNED(SECURITY_DESCRIPTOR_CONTROL);
}

static void test_pack_SECURITY_DESCRIPTOR_RELATIVE(void)
{
    /* SECURITY_DESCRIPTOR_RELATIVE (pack 4) */
    TEST_TYPE(SECURITY_DESCRIPTOR_RELATIVE, 20, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR_RELATIVE, BYTE, Revision, 0, 1, 1);
    TEST_FIELD(SECURITY_DESCRIPTOR_RELATIVE, BYTE, Sbz1, 1, 1, 1);
    TEST_FIELD(SECURITY_DESCRIPTOR_RELATIVE, SECURITY_DESCRIPTOR_CONTROL, Control, 2, 2, 2);
    TEST_FIELD(SECURITY_DESCRIPTOR_RELATIVE, DWORD, Owner, 4, 4, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR_RELATIVE, DWORD, Group, 8, 4, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR_RELATIVE, DWORD, Sacl, 12, 4, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR_RELATIVE, DWORD, Dacl, 16, 4, 4);
}

static void test_pack_SECURITY_INFORMATION(void)
{
    /* SECURITY_INFORMATION */
    TEST_TYPE(SECURITY_INFORMATION, 4, 4);
    TEST_TYPE_UNSIGNED(SECURITY_INFORMATION);
}

static void test_pack_SECURITY_QUALITY_OF_SERVICE(void)
{
    /* SECURITY_QUALITY_OF_SERVICE (pack 4) */
    TEST_FIELD(SECURITY_QUALITY_OF_SERVICE, DWORD, Length, 0, 4, 4);
}

static void test_pack_SHORT(void)
{
    /* SHORT */
    TEST_TYPE(SHORT, 2, 2);
    TEST_TYPE_SIGNED(SHORT);
}

static void test_pack_SID(void)
{
    /* SID (pack 4) */
    TEST_TYPE(SID, 12, 4);
    TEST_FIELD(SID, BYTE, Revision, 0, 1, 1);
    TEST_FIELD(SID, BYTE, SubAuthorityCount, 1, 1, 1);
    TEST_FIELD(SID, SID_IDENTIFIER_AUTHORITY, IdentifierAuthority, 2, 6, 1);
    TEST_FIELD(SID, DWORD[1], SubAuthority, 8, 4, 4);
}

static void test_pack_SID_AND_ATTRIBUTES(void)
{
    /* SID_AND_ATTRIBUTES (pack 4) */
    TEST_TYPE(SID_AND_ATTRIBUTES, 8, 4);
    TEST_FIELD(SID_AND_ATTRIBUTES, PSID, Sid, 0, 4, 4);
    TEST_FIELD(SID_AND_ATTRIBUTES, DWORD, Attributes, 4, 4, 4);
}

static void test_pack_SID_IDENTIFIER_AUTHORITY(void)
{
    /* SID_IDENTIFIER_AUTHORITY (pack 4) */
    TEST_TYPE(SID_IDENTIFIER_AUTHORITY, 6, 1);
    TEST_FIELD(SID_IDENTIFIER_AUTHORITY, BYTE[6], Value, 0, 6, 1);
}

static void test_pack_SINGLE_LIST_ENTRY(void)
{
    /* SINGLE_LIST_ENTRY (pack 4) */
    TEST_TYPE(SINGLE_LIST_ENTRY, 4, 4);
    TEST_FIELD(SINGLE_LIST_ENTRY, struct _SINGLE_LIST_ENTRY *, Next, 0, 4, 4);
}

static void test_pack_SYSTEM_ALARM_ACE(void)
{
    /* SYSTEM_ALARM_ACE (pack 4) */
    TEST_TYPE(SYSTEM_ALARM_ACE, 12, 4);
    TEST_FIELD(SYSTEM_ALARM_ACE, ACE_HEADER, Header, 0, 4, 2);
    TEST_FIELD(SYSTEM_ALARM_ACE, DWORD, Mask, 4, 4, 4);
    TEST_FIELD(SYSTEM_ALARM_ACE, DWORD, SidStart, 8, 4, 4);
}

static void test_pack_SYSTEM_AUDIT_ACE(void)
{
    /* SYSTEM_AUDIT_ACE (pack 4) */
    TEST_TYPE(SYSTEM_AUDIT_ACE, 12, 4);
    TEST_FIELD(SYSTEM_AUDIT_ACE, ACE_HEADER, Header, 0, 4, 2);
    TEST_FIELD(SYSTEM_AUDIT_ACE, DWORD, Mask, 4, 4, 4);
    TEST_FIELD(SYSTEM_AUDIT_ACE, DWORD, SidStart, 8, 4, 4);
}

static void test_pack_TCHAR(void)
{
    /* TCHAR */
    TEST_TYPE(TCHAR, 1, 1);
}

static void test_pack_TOKEN_DEFAULT_DACL(void)
{
    /* TOKEN_DEFAULT_DACL (pack 4) */
    TEST_TYPE(TOKEN_DEFAULT_DACL, 4, 4);
    TEST_FIELD(TOKEN_DEFAULT_DACL, PACL, DefaultDacl, 0, 4, 4);
}

static void test_pack_TOKEN_GROUPS(void)
{
    /* TOKEN_GROUPS (pack 4) */
    TEST_TYPE(TOKEN_GROUPS, 12, 4);
    TEST_FIELD(TOKEN_GROUPS, DWORD, GroupCount, 0, 4, 4);
    TEST_FIELD(TOKEN_GROUPS, SID_AND_ATTRIBUTES[ANYSIZE_ARRAY], Groups, 4, 8, 4);
}

static void test_pack_TOKEN_OWNER(void)
{
    /* TOKEN_OWNER (pack 4) */
    TEST_TYPE(TOKEN_OWNER, 4, 4);
    TEST_FIELD(TOKEN_OWNER, PSID, Owner, 0, 4, 4);
}

static void test_pack_TOKEN_PRIMARY_GROUP(void)
{
    /* TOKEN_PRIMARY_GROUP (pack 4) */
    TEST_TYPE(TOKEN_PRIMARY_GROUP, 4, 4);
    TEST_FIELD(TOKEN_PRIMARY_GROUP, PSID, PrimaryGroup, 0, 4, 4);
}

static void test_pack_TOKEN_PRIVILEGES(void)
{
    /* TOKEN_PRIVILEGES (pack 4) */
    TEST_TYPE(TOKEN_PRIVILEGES, 16, 4);
    TEST_FIELD(TOKEN_PRIVILEGES, DWORD, PrivilegeCount, 0, 4, 4);
    TEST_FIELD(TOKEN_PRIVILEGES, LUID_AND_ATTRIBUTES[ANYSIZE_ARRAY], Privileges, 4, 12, 4);
}

static void test_pack_TOKEN_SOURCE(void)
{
    /* TOKEN_SOURCE (pack 4) */
    TEST_TYPE(TOKEN_SOURCE, 16, 4);
    TEST_FIELD(TOKEN_SOURCE, char[TOKEN_SOURCE_LENGTH], SourceName, 0, 8, 1);
    TEST_FIELD(TOKEN_SOURCE, LUID, SourceIdentifier, 8, 8, 4);
}

static void test_pack_TOKEN_STATISTICS(void)
{
    /* TOKEN_STATISTICS (pack 4) */
    TEST_FIELD(TOKEN_STATISTICS, LUID, TokenId, 0, 8, 4);
    TEST_FIELD(TOKEN_STATISTICS, LUID, AuthenticationId, 8, 8, 4);
    TEST_FIELD(TOKEN_STATISTICS, LARGE_INTEGER, ExpirationTime, 16, 8, 4);
}

static void test_pack_TOKEN_USER(void)
{
    /* TOKEN_USER (pack 4) */
    TEST_TYPE(TOKEN_USER, 8, 4);
    TEST_FIELD(TOKEN_USER, SID_AND_ATTRIBUTES, User, 0, 8, 4);
}

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

static void test_pack_ULONGLONG(void)
{
    /* ULONGLONG */
    TEST_TYPE(ULONGLONG, 8, 8);
    TEST_TYPE_UNSIGNED(ULONGLONG);
}

static void test_pack_WAITORTIMERCALLBACKFUNC(void)
{
    /* WAITORTIMERCALLBACKFUNC */
    TEST_TYPE(WAITORTIMERCALLBACKFUNC, 4, 4);
}

static void test_pack_WCHAR(void)
{
    /* WCHAR */
    TEST_TYPE(WCHAR, 2, 2);
    TEST_TYPE_UNSIGNED(WCHAR);
}

static void test_pack_ATOM(void)
{
    /* ATOM */
    TEST_TYPE(ATOM, 2, 2);
    TEST_TYPE_UNSIGNED(ATOM);
}

static void test_pack_BOOL(void)
{
    /* BOOL */
    TEST_TYPE(BOOL, 4, 4);
    TEST_TYPE_SIGNED(BOOL);
}

static void test_pack_BYTE(void)
{
    /* BYTE */
    TEST_TYPE(BYTE, 1, 1);
    TEST_TYPE_UNSIGNED(BYTE);
}

static void test_pack_COLORREF(void)
{
    /* COLORREF */
    TEST_TYPE(COLORREF, 4, 4);
    TEST_TYPE_UNSIGNED(COLORREF);
}

static void test_pack_DWORD(void)
{
    /* DWORD */
    TEST_TYPE(DWORD, 4, 4);
    TEST_TYPE_UNSIGNED(DWORD);
}

static void test_pack_FARPROC(void)
{
    /* FARPROC */
    TEST_TYPE(FARPROC, 4, 4);
}

static void test_pack_FLOAT(void)
{
    /* FLOAT */
    TEST_TYPE(FLOAT, 4, 4);
}

static void test_pack_GLOBALHANDLE(void)
{
    /* GLOBALHANDLE */
    TEST_TYPE(GLOBALHANDLE, 4, 4);
}

static void test_pack_HCURSOR(void)
{
    /* HCURSOR */
    TEST_TYPE(HCURSOR, 4, 4);
    TEST_TYPE_UNSIGNED(HCURSOR);
}

static void test_pack_HFILE(void)
{
    /* HFILE */
    TEST_TYPE(HFILE, 4, 4);
    TEST_TYPE_SIGNED(HFILE);
}

static void test_pack_HGDIOBJ(void)
{
    /* HGDIOBJ */
    TEST_TYPE(HGDIOBJ, 4, 4);
}

static void test_pack_HGLOBAL(void)
{
    /* HGLOBAL */
    TEST_TYPE(HGLOBAL, 4, 4);
}

static void test_pack_HLOCAL(void)
{
    /* HLOCAL */
    TEST_TYPE(HLOCAL, 4, 4);
}

static void test_pack_HMODULE(void)
{
    /* HMODULE */
    TEST_TYPE(HMODULE, 4, 4);
    TEST_TYPE_UNSIGNED(HMODULE);
}

static void test_pack_INT(void)
{
    /* INT */
    TEST_TYPE(INT, 4, 4);
    TEST_TYPE_SIGNED(INT);
}

static void test_pack_LOCALHANDLE(void)
{
    /* LOCALHANDLE */
    TEST_TYPE(LOCALHANDLE, 4, 4);
}

static void test_pack_LPARAM(void)
{
    /* LPARAM */
    TEST_TYPE(LPARAM, 4, 4);
}

static void test_pack_LPCRECT(void)
{
    /* LPCRECT */
    TEST_TYPE(LPCRECT, 4, 4);
    TEST_TYPE_POINTER(LPCRECT, 16, 4);
}

static void test_pack_LPCRECTL(void)
{
    /* LPCRECTL */
    TEST_TYPE(LPCRECTL, 4, 4);
    TEST_TYPE_POINTER(LPCRECTL, 16, 4);
}

static void test_pack_LPCVOID(void)
{
    /* LPCVOID */
    TEST_TYPE(LPCVOID, 4, 4);
}

static void test_pack_LPPOINT(void)
{
    /* LPPOINT */
    TEST_TYPE(LPPOINT, 4, 4);
    TEST_TYPE_POINTER(LPPOINT, 8, 4);
}

static void test_pack_LPRECT(void)
{
    /* LPRECT */
    TEST_TYPE(LPRECT, 4, 4);
    TEST_TYPE_POINTER(LPRECT, 16, 4);
}

static void test_pack_LPRECTL(void)
{
    /* LPRECTL */
    TEST_TYPE(LPRECTL, 4, 4);
    TEST_TYPE_POINTER(LPRECTL, 16, 4);
}

static void test_pack_LPSIZE(void)
{
    /* LPSIZE */
    TEST_TYPE(LPSIZE, 4, 4);
    TEST_TYPE_POINTER(LPSIZE, 8, 4);
}

static void test_pack_LRESULT(void)
{
    /* LRESULT */
    TEST_TYPE(LRESULT, 4, 4);
}

static void test_pack_POINT(void)
{
    /* POINT (pack 4) */
    TEST_TYPE(POINT, 8, 4);
    TEST_FIELD(POINT, LONG, x, 0, 4, 4);
    TEST_FIELD(POINT, LONG, y, 4, 4, 4);
}

static void test_pack_POINTL(void)
{
    /* POINTL (pack 4) */
    TEST_TYPE(POINTL, 8, 4);
    TEST_FIELD(POINTL, LONG, x, 0, 4, 4);
    TEST_FIELD(POINTL, LONG, y, 4, 4, 4);
}

static void test_pack_PPOINT(void)
{
    /* PPOINT */
    TEST_TYPE(PPOINT, 4, 4);
    TEST_TYPE_POINTER(PPOINT, 8, 4);
}

static void test_pack_PPOINTL(void)
{
    /* PPOINTL */
    TEST_TYPE(PPOINTL, 4, 4);
    TEST_TYPE_POINTER(PPOINTL, 8, 4);
}

static void test_pack_PRECT(void)
{
    /* PRECT */
    TEST_TYPE(PRECT, 4, 4);
    TEST_TYPE_POINTER(PRECT, 16, 4);
}

static void test_pack_PRECTL(void)
{
    /* PRECTL */
    TEST_TYPE(PRECTL, 4, 4);
    TEST_TYPE_POINTER(PRECTL, 16, 4);
}

static void test_pack_PROC(void)
{
    /* PROC */
    TEST_TYPE(PROC, 4, 4);
}

static void test_pack_PSIZE(void)
{
    /* PSIZE */
    TEST_TYPE(PSIZE, 4, 4);
    TEST_TYPE_POINTER(PSIZE, 8, 4);
}

static void test_pack_PSZ(void)
{
    /* PSZ */
    TEST_TYPE(PSZ, 4, 4);
}

static void test_pack_RECT(void)
{
    /* RECT (pack 4) */
    TEST_TYPE(RECT, 16, 4);
    TEST_FIELD(RECT, LONG, left, 0, 4, 4);
    TEST_FIELD(RECT, LONG, top, 4, 4, 4);
    TEST_FIELD(RECT, LONG, right, 8, 4, 4);
    TEST_FIELD(RECT, LONG, bottom, 12, 4, 4);
}

static void test_pack_RECTL(void)
{
    /* RECTL (pack 4) */
    TEST_TYPE(RECTL, 16, 4);
    TEST_FIELD(RECTL, LONG, left, 0, 4, 4);
    TEST_FIELD(RECTL, LONG, top, 4, 4, 4);
    TEST_FIELD(RECTL, LONG, right, 8, 4, 4);
    TEST_FIELD(RECTL, LONG, bottom, 12, 4, 4);
}

static void test_pack_SIZE(void)
{
    /* SIZE (pack 4) */
    TEST_TYPE(SIZE, 8, 4);
    TEST_FIELD(SIZE, LONG, cx, 0, 4, 4);
    TEST_FIELD(SIZE, LONG, cy, 4, 4, 4);
}

static void test_pack_SIZEL(void)
{
    /* SIZEL */
    TEST_TYPE(SIZEL, 8, 4);
}

static void test_pack_UCHAR(void)
{
    /* UCHAR */
    TEST_TYPE(UCHAR, 1, 1);
    TEST_TYPE_UNSIGNED(UCHAR);
}

static void test_pack_UINT(void)
{
    /* UINT */
    TEST_TYPE(UINT, 4, 4);
    TEST_TYPE_UNSIGNED(UINT);
}

static void test_pack_ULONG(void)
{
    /* ULONG */
    TEST_TYPE(ULONG, 4, 4);
    TEST_TYPE_UNSIGNED(ULONG);
}

static void test_pack_USHORT(void)
{
    /* USHORT */
    TEST_TYPE(USHORT, 2, 2);
    TEST_TYPE_UNSIGNED(USHORT);
}

static void test_pack_WORD(void)
{
    /* WORD */
    TEST_TYPE(WORD, 2, 2);
    TEST_TYPE_UNSIGNED(WORD);
}

static void test_pack_WPARAM(void)
{
    /* WPARAM */
    TEST_TYPE(WPARAM, 4, 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)
{
    test_pack();
}
