/* 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 <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "wininet.h"
#include "wininet_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
 */

#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);

#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);


#ifdef _WIN64

static void test_pack_GOPHER_ABSTRACT_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ABSTRACT_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 16)
    TEST_TYPE_ALIGN  (GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 8)
    TEST_FIELD_SIZE  (GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, ShortAbstract, 8)
    TEST_FIELD_ALIGN (GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, ShortAbstract, 8)
    TEST_FIELD_OFFSET(GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, ShortAbstract, 0)
    TEST_FIELD_SIZE  (GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, AbstractFile, 8)
    TEST_FIELD_ALIGN (GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, AbstractFile, 8)
    TEST_FIELD_OFFSET(GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, AbstractFile, 8)
}

static void test_pack_GOPHER_ABSTRACT_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ABSTRACT_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 16)
    TEST_TYPE_ALIGN  (GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 8)
    TEST_FIELD_SIZE  (GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, ShortAbstract, 8)
    TEST_FIELD_ALIGN (GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, ShortAbstract, 8)
    TEST_FIELD_OFFSET(GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, ShortAbstract, 0)
    TEST_FIELD_SIZE  (GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, AbstractFile, 8)
    TEST_FIELD_ALIGN (GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, AbstractFile, 8)
    TEST_FIELD_OFFSET(GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, AbstractFile, 8)
}

static void test_pack_GOPHER_ADMIN_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ADMIN_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_ADMIN_ATTRIBUTE_TYPEA, 16)
    TEST_TYPE_ALIGN  (GOPHER_ADMIN_ATTRIBUTE_TYPEA, 8)
    TEST_FIELD_SIZE  (GOPHER_ADMIN_ATTRIBUTE_TYPEA, Comment, 8)
    TEST_FIELD_ALIGN (GOPHER_ADMIN_ATTRIBUTE_TYPEA, Comment, 8)
    TEST_FIELD_OFFSET(GOPHER_ADMIN_ATTRIBUTE_TYPEA, Comment, 0)
    TEST_FIELD_SIZE  (GOPHER_ADMIN_ATTRIBUTE_TYPEA, EmailAddress, 8)
    TEST_FIELD_ALIGN (GOPHER_ADMIN_ATTRIBUTE_TYPEA, EmailAddress, 8)
    TEST_FIELD_OFFSET(GOPHER_ADMIN_ATTRIBUTE_TYPEA, EmailAddress, 8)
}

static void test_pack_GOPHER_ADMIN_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ADMIN_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_ADMIN_ATTRIBUTE_TYPEW, 16)
    TEST_TYPE_ALIGN  (GOPHER_ADMIN_ATTRIBUTE_TYPEW, 8)
    TEST_FIELD_SIZE  (GOPHER_ADMIN_ATTRIBUTE_TYPEW, Comment, 8)
    TEST_FIELD_ALIGN (GOPHER_ADMIN_ATTRIBUTE_TYPEW, Comment, 8)
    TEST_FIELD_OFFSET(GOPHER_ADMIN_ATTRIBUTE_TYPEW, Comment, 0)
    TEST_FIELD_SIZE  (GOPHER_ADMIN_ATTRIBUTE_TYPEW, EmailAddress, 8)
    TEST_FIELD_ALIGN (GOPHER_ADMIN_ATTRIBUTE_TYPEW, EmailAddress, 8)
    TEST_FIELD_OFFSET(GOPHER_ADMIN_ATTRIBUTE_TYPEW, EmailAddress, 8)
}

static void test_pack_GOPHER_ASK_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ASK_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_ASK_ATTRIBUTE_TYPEA, 16)
    TEST_TYPE_ALIGN  (GOPHER_ASK_ATTRIBUTE_TYPEA, 8)
    TEST_FIELD_SIZE  (GOPHER_ASK_ATTRIBUTE_TYPEA, QuestionType, 8)
    TEST_FIELD_ALIGN (GOPHER_ASK_ATTRIBUTE_TYPEA, QuestionType, 8)
    TEST_FIELD_OFFSET(GOPHER_ASK_ATTRIBUTE_TYPEA, QuestionType, 0)
    TEST_FIELD_SIZE  (GOPHER_ASK_ATTRIBUTE_TYPEA, QuestionText, 8)
    TEST_FIELD_ALIGN (GOPHER_ASK_ATTRIBUTE_TYPEA, QuestionText, 8)
    TEST_FIELD_OFFSET(GOPHER_ASK_ATTRIBUTE_TYPEA, QuestionText, 8)
}

static void test_pack_GOPHER_ASK_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ASK_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_ASK_ATTRIBUTE_TYPEW, 16)
    TEST_TYPE_ALIGN  (GOPHER_ASK_ATTRIBUTE_TYPEW, 8)
    TEST_FIELD_SIZE  (GOPHER_ASK_ATTRIBUTE_TYPEW, QuestionType, 8)
    TEST_FIELD_ALIGN (GOPHER_ASK_ATTRIBUTE_TYPEW, QuestionType, 8)
    TEST_FIELD_OFFSET(GOPHER_ASK_ATTRIBUTE_TYPEW, QuestionType, 0)
    TEST_FIELD_SIZE  (GOPHER_ASK_ATTRIBUTE_TYPEW, QuestionText, 8)
    TEST_FIELD_ALIGN (GOPHER_ASK_ATTRIBUTE_TYPEW, QuestionText, 8)
    TEST_FIELD_OFFSET(GOPHER_ASK_ATTRIBUTE_TYPEW, QuestionText, 8)
}

static void test_pack_GOPHER_ATTRIBUTE_ENUMERATORA(void)
{
    /* GOPHER_ATTRIBUTE_ENUMERATORA */
    TEST_TYPE_SIZE   (GOPHER_ATTRIBUTE_ENUMERATORA, 8)
    TEST_TYPE_ALIGN  (GOPHER_ATTRIBUTE_ENUMERATORA, 8)
}

static void test_pack_GOPHER_ATTRIBUTE_ENUMERATORW(void)
{
    /* GOPHER_ATTRIBUTE_ENUMERATORW */
    TEST_TYPE_SIZE   (GOPHER_ATTRIBUTE_ENUMERATORW, 8)
    TEST_TYPE_ALIGN  (GOPHER_ATTRIBUTE_ENUMERATORW, 8)
}

static void test_pack_GOPHER_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ATTRIBUTE_TYPEA */
    TEST_FIELD_SIZE  (GOPHER_ATTRIBUTE_TYPEA, CategoryId, 4)
    TEST_FIELD_ALIGN (GOPHER_ATTRIBUTE_TYPEA, CategoryId, 4)
    TEST_FIELD_OFFSET(GOPHER_ATTRIBUTE_TYPEA, CategoryId, 0)
    TEST_FIELD_SIZE  (GOPHER_ATTRIBUTE_TYPEA, AttributeId, 4)
    TEST_FIELD_ALIGN (GOPHER_ATTRIBUTE_TYPEA, AttributeId, 4)
    TEST_FIELD_OFFSET(GOPHER_ATTRIBUTE_TYPEA, AttributeId, 4)
}

static void test_pack_GOPHER_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ATTRIBUTE_TYPEW */
    TEST_FIELD_SIZE  (GOPHER_ATTRIBUTE_TYPEW, CategoryId, 4)
    TEST_FIELD_ALIGN (GOPHER_ATTRIBUTE_TYPEW, CategoryId, 4)
    TEST_FIELD_OFFSET(GOPHER_ATTRIBUTE_TYPEW, CategoryId, 0)
    TEST_FIELD_SIZE  (GOPHER_ATTRIBUTE_TYPEW, AttributeId, 4)
    TEST_FIELD_ALIGN (GOPHER_ATTRIBUTE_TYPEW, AttributeId, 4)
    TEST_FIELD_OFFSET(GOPHER_ATTRIBUTE_TYPEW, AttributeId, 4)
}

static void test_pack_GOPHER_FIND_DATAA(void)
{
    /* GOPHER_FIND_DATAA */
    TEST_TYPE_SIZE   (GOPHER_FIND_DATAA, 808)
    TEST_TYPE_ALIGN  (GOPHER_FIND_DATAA, 4)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAA, DisplayString, 129)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAA, DisplayString, 1)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAA, DisplayString, 0)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAA, GopherType, 4)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAA, GopherType, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAA, GopherType, 132)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAA, SizeLow, 4)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAA, SizeLow, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAA, SizeLow, 136)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAA, SizeHigh, 4)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAA, SizeHigh, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAA, SizeHigh, 140)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAA, LastModificationTime, 8)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAA, LastModificationTime, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAA, LastModificationTime, 144)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAA, Locator, 654)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAA, Locator, 1)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAA, Locator, 152)
}

static void test_pack_GOPHER_FIND_DATAW(void)
{
    /* GOPHER_FIND_DATAW */
    TEST_TYPE_SIZE   (GOPHER_FIND_DATAW, 1588)
    TEST_TYPE_ALIGN  (GOPHER_FIND_DATAW, 4)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAW, DisplayString, 258)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAW, DisplayString, 2)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAW, DisplayString, 0)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAW, GopherType, 4)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAW, GopherType, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAW, GopherType, 260)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAW, SizeLow, 4)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAW, SizeLow, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAW, SizeLow, 264)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAW, SizeHigh, 4)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAW, SizeHigh, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAW, SizeHigh, 268)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAW, LastModificationTime, 8)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAW, LastModificationTime, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAW, LastModificationTime, 272)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAW, Locator, 1308)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAW, Locator, 2)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAW, Locator, 280)
}

static void test_pack_GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 24)
    TEST_TYPE_ALIGN  (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 4)
    TEST_FIELD_SIZE  (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, DegreesNorth, 4)
    TEST_FIELD_ALIGN (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, DegreesNorth, 4)
    TEST_FIELD_OFFSET(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, DegreesNorth, 0)
    TEST_FIELD_SIZE  (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, MinutesNorth, 4)
    TEST_FIELD_ALIGN (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, MinutesNorth, 4)
    TEST_FIELD_OFFSET(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, MinutesNorth, 4)
    TEST_FIELD_SIZE  (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, SecondsNorth, 4)
    TEST_FIELD_ALIGN (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, SecondsNorth, 4)
    TEST_FIELD_OFFSET(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, SecondsNorth, 8)
    TEST_FIELD_SIZE  (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, DegreesEast, 4)
    TEST_FIELD_ALIGN (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, DegreesEast, 4)
    TEST_FIELD_OFFSET(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, DegreesEast, 12)
    TEST_FIELD_SIZE  (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, MinutesEast, 4)
    TEST_FIELD_ALIGN (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, MinutesEast, 4)
    TEST_FIELD_OFFSET(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, MinutesEast, 16)
    TEST_FIELD_SIZE  (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, SecondsEast, 4)
    TEST_FIELD_ALIGN (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, SecondsEast, 4)
    TEST_FIELD_OFFSET(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, SecondsEast, 20)
}

static void test_pack_GOPHER_LOCATION_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_LOCATION_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_LOCATION_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (GOPHER_LOCATION_ATTRIBUTE_TYPEA, 8)
    TEST_FIELD_SIZE  (GOPHER_LOCATION_ATTRIBUTE_TYPEA, Location, 8)
    TEST_FIELD_ALIGN (GOPHER_LOCATION_ATTRIBUTE_TYPEA, Location, 8)
    TEST_FIELD_OFFSET(GOPHER_LOCATION_ATTRIBUTE_TYPEA, Location, 0)
}

static void test_pack_GOPHER_LOCATION_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_LOCATION_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_LOCATION_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (GOPHER_LOCATION_ATTRIBUTE_TYPEW, 8)
    TEST_FIELD_SIZE  (GOPHER_LOCATION_ATTRIBUTE_TYPEW, Location, 8)
    TEST_FIELD_ALIGN (GOPHER_LOCATION_ATTRIBUTE_TYPEW, Location, 8)
    TEST_FIELD_OFFSET(GOPHER_LOCATION_ATTRIBUTE_TYPEW, Location, 0)
}

static void test_pack_GOPHER_MOD_DATE_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_MOD_DATE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (GOPHER_MOD_DATE_ATTRIBUTE_TYPE, 8)
    TEST_TYPE_ALIGN  (GOPHER_MOD_DATE_ATTRIBUTE_TYPE, 4)
    TEST_FIELD_SIZE  (GOPHER_MOD_DATE_ATTRIBUTE_TYPE, DateAndTime, 8)
    TEST_FIELD_ALIGN (GOPHER_MOD_DATE_ATTRIBUTE_TYPE, DateAndTime, 4)
    TEST_FIELD_OFFSET(GOPHER_MOD_DATE_ATTRIBUTE_TYPE, DateAndTime, 0)
}

static void test_pack_GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 8)
    TEST_FIELD_SIZE  (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, Organization, 8)
    TEST_FIELD_ALIGN (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, Organization, 8)
    TEST_FIELD_OFFSET(GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, Organization, 0)
}

static void test_pack_GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 8)
    TEST_FIELD_SIZE  (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, Organization, 8)
    TEST_FIELD_ALIGN (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, Organization, 8)
    TEST_FIELD_OFFSET(GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, Organization, 0)
}

static void test_pack_GOPHER_PROVIDER_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_PROVIDER_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_PROVIDER_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (GOPHER_PROVIDER_ATTRIBUTE_TYPEA, 8)
    TEST_FIELD_SIZE  (GOPHER_PROVIDER_ATTRIBUTE_TYPEA, Provider, 8)
    TEST_FIELD_ALIGN (GOPHER_PROVIDER_ATTRIBUTE_TYPEA, Provider, 8)
    TEST_FIELD_OFFSET(GOPHER_PROVIDER_ATTRIBUTE_TYPEA, Provider, 0)
}

static void test_pack_GOPHER_PROVIDER_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_PROVIDER_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_PROVIDER_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (GOPHER_PROVIDER_ATTRIBUTE_TYPEW, 8)
    TEST_FIELD_SIZE  (GOPHER_PROVIDER_ATTRIBUTE_TYPEW, Provider, 8)
    TEST_FIELD_ALIGN (GOPHER_PROVIDER_ATTRIBUTE_TYPEW, Provider, 8)
    TEST_FIELD_OFFSET(GOPHER_PROVIDER_ATTRIBUTE_TYPEW, Provider, 0)
}

static void test_pack_GOPHER_SCORE_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_SCORE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (GOPHER_SCORE_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (GOPHER_SCORE_ATTRIBUTE_TYPE, 4)
    TEST_FIELD_SIZE  (GOPHER_SCORE_ATTRIBUTE_TYPE, Score, 4)
    TEST_FIELD_ALIGN (GOPHER_SCORE_ATTRIBUTE_TYPE, Score, 4)
    TEST_FIELD_OFFSET(GOPHER_SCORE_ATTRIBUTE_TYPE, Score, 0)
}

static void test_pack_GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 8)
    TEST_TYPE_ALIGN  (GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 4)
    TEST_FIELD_SIZE  (GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, LowerBound, 4)
    TEST_FIELD_ALIGN (GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, LowerBound, 4)
    TEST_FIELD_OFFSET(GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, LowerBound, 0)
    TEST_FIELD_SIZE  (GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, UpperBound, 4)
    TEST_FIELD_ALIGN (GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, UpperBound, 4)
    TEST_FIELD_OFFSET(GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, UpperBound, 4)
}

static void test_pack_GOPHER_SITE_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_SITE_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_SITE_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (GOPHER_SITE_ATTRIBUTE_TYPEA, 8)
    TEST_FIELD_SIZE  (GOPHER_SITE_ATTRIBUTE_TYPEA, Site, 8)
    TEST_FIELD_ALIGN (GOPHER_SITE_ATTRIBUTE_TYPEA, Site, 8)
    TEST_FIELD_OFFSET(GOPHER_SITE_ATTRIBUTE_TYPEA, Site, 0)
}

static void test_pack_GOPHER_SITE_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_SITE_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_SITE_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (GOPHER_SITE_ATTRIBUTE_TYPEW, 8)
    TEST_FIELD_SIZE  (GOPHER_SITE_ATTRIBUTE_TYPEW, Site, 8)
    TEST_FIELD_ALIGN (GOPHER_SITE_ATTRIBUTE_TYPEW, Site, 8)
    TEST_FIELD_OFFSET(GOPHER_SITE_ATTRIBUTE_TYPEW, Site, 0)
}

static void test_pack_GOPHER_TIMEZONE_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_TIMEZONE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (GOPHER_TIMEZONE_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (GOPHER_TIMEZONE_ATTRIBUTE_TYPE, 4)
    TEST_FIELD_SIZE  (GOPHER_TIMEZONE_ATTRIBUTE_TYPE, Zone, 4)
    TEST_FIELD_ALIGN (GOPHER_TIMEZONE_ATTRIBUTE_TYPE, Zone, 4)
    TEST_FIELD_OFFSET(GOPHER_TIMEZONE_ATTRIBUTE_TYPE, Zone, 0)
}

static void test_pack_GOPHER_TTL_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_TTL_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (GOPHER_TTL_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (GOPHER_TTL_ATTRIBUTE_TYPE, 4)
    TEST_FIELD_SIZE  (GOPHER_TTL_ATTRIBUTE_TYPE, Ttl, 4)
    TEST_FIELD_ALIGN (GOPHER_TTL_ATTRIBUTE_TYPE, Ttl, 4)
    TEST_FIELD_OFFSET(GOPHER_TTL_ATTRIBUTE_TYPE, Ttl, 0)
}

static void test_pack_GOPHER_UNKNOWN_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_UNKNOWN_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (GOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 8)
    TEST_FIELD_SIZE  (GOPHER_UNKNOWN_ATTRIBUTE_TYPEA, Text, 8)
    TEST_FIELD_ALIGN (GOPHER_UNKNOWN_ATTRIBUTE_TYPEA, Text, 8)
    TEST_FIELD_OFFSET(GOPHER_UNKNOWN_ATTRIBUTE_TYPEA, Text, 0)
}

static void test_pack_GOPHER_UNKNOWN_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_UNKNOWN_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (GOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 8)
    TEST_FIELD_SIZE  (GOPHER_UNKNOWN_ATTRIBUTE_TYPEW, Text, 8)
    TEST_FIELD_ALIGN (GOPHER_UNKNOWN_ATTRIBUTE_TYPEW, Text, 8)
    TEST_FIELD_OFFSET(GOPHER_UNKNOWN_ATTRIBUTE_TYPEW, Text, 0)
}

static void test_pack_GOPHER_VERONICA_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_VERONICA_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (GOPHER_VERONICA_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (GOPHER_VERONICA_ATTRIBUTE_TYPE, 4)
    TEST_FIELD_SIZE  (GOPHER_VERONICA_ATTRIBUTE_TYPE, TreeWalk, 4)
    TEST_FIELD_ALIGN (GOPHER_VERONICA_ATTRIBUTE_TYPE, TreeWalk, 4)
    TEST_FIELD_OFFSET(GOPHER_VERONICA_ATTRIBUTE_TYPE, TreeWalk, 0)
}

static void test_pack_GOPHER_VERSION_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_VERSION_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_VERSION_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (GOPHER_VERSION_ATTRIBUTE_TYPEA, 8)
    TEST_FIELD_SIZE  (GOPHER_VERSION_ATTRIBUTE_TYPEA, Version, 8)
    TEST_FIELD_ALIGN (GOPHER_VERSION_ATTRIBUTE_TYPEA, Version, 8)
    TEST_FIELD_OFFSET(GOPHER_VERSION_ATTRIBUTE_TYPEA, Version, 0)
}

static void test_pack_GOPHER_VERSION_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_VERSION_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_VERSION_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (GOPHER_VERSION_ATTRIBUTE_TYPEW, 8)
    TEST_FIELD_SIZE  (GOPHER_VERSION_ATTRIBUTE_TYPEW, Version, 8)
    TEST_FIELD_ALIGN (GOPHER_VERSION_ATTRIBUTE_TYPEW, Version, 8)
    TEST_FIELD_OFFSET(GOPHER_VERSION_ATTRIBUTE_TYPEW, Version, 0)
}

static void test_pack_GOPHER_VIEW_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_VIEW_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_VIEW_ATTRIBUTE_TYPEA, 24)
    TEST_TYPE_ALIGN  (GOPHER_VIEW_ATTRIBUTE_TYPEA, 8)
    TEST_FIELD_SIZE  (GOPHER_VIEW_ATTRIBUTE_TYPEA, ContentType, 8)
    TEST_FIELD_ALIGN (GOPHER_VIEW_ATTRIBUTE_TYPEA, ContentType, 8)
    TEST_FIELD_OFFSET(GOPHER_VIEW_ATTRIBUTE_TYPEA, ContentType, 0)
    TEST_FIELD_SIZE  (GOPHER_VIEW_ATTRIBUTE_TYPEA, Language, 8)
    TEST_FIELD_ALIGN (GOPHER_VIEW_ATTRIBUTE_TYPEA, Language, 8)
    TEST_FIELD_OFFSET(GOPHER_VIEW_ATTRIBUTE_TYPEA, Language, 8)
    TEST_FIELD_SIZE  (GOPHER_VIEW_ATTRIBUTE_TYPEA, Size, 4)
    TEST_FIELD_ALIGN (GOPHER_VIEW_ATTRIBUTE_TYPEA, Size, 4)
    TEST_FIELD_OFFSET(GOPHER_VIEW_ATTRIBUTE_TYPEA, Size, 16)
}

static void test_pack_GOPHER_VIEW_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_VIEW_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_VIEW_ATTRIBUTE_TYPEW, 24)
    TEST_TYPE_ALIGN  (GOPHER_VIEW_ATTRIBUTE_TYPEW, 8)
    TEST_FIELD_SIZE  (GOPHER_VIEW_ATTRIBUTE_TYPEW, ContentType, 8)
    TEST_FIELD_ALIGN (GOPHER_VIEW_ATTRIBUTE_TYPEW, ContentType, 8)
    TEST_FIELD_OFFSET(GOPHER_VIEW_ATTRIBUTE_TYPEW, ContentType, 0)
    TEST_FIELD_SIZE  (GOPHER_VIEW_ATTRIBUTE_TYPEW, Language, 8)
    TEST_FIELD_ALIGN (GOPHER_VIEW_ATTRIBUTE_TYPEW, Language, 8)
    TEST_FIELD_OFFSET(GOPHER_VIEW_ATTRIBUTE_TYPEW, Language, 8)
    TEST_FIELD_SIZE  (GOPHER_VIEW_ATTRIBUTE_TYPEW, Size, 4)
    TEST_FIELD_ALIGN (GOPHER_VIEW_ATTRIBUTE_TYPEW, Size, 4)
    TEST_FIELD_OFFSET(GOPHER_VIEW_ATTRIBUTE_TYPEW, Size, 16)
}

static void test_pack_GROUPID(void)
{
    /* GROUPID */
    TEST_TYPE_SIZE   (GROUPID, 8)
    TEST_TYPE_ALIGN  (GROUPID, 8)
    TEST_TYPE_SIGNED(GROUPID)
}

static void test_pack_HINTERNET(void)
{
    /* HINTERNET */
    TEST_TYPE_SIZE   (HINTERNET, 8)
    TEST_TYPE_ALIGN  (HINTERNET, 8)
}

static void test_pack_HTTP_VERSION_INFO(void)
{
    /* HTTP_VERSION_INFO */
    TEST_TYPE_SIZE   (HTTP_VERSION_INFO, 8)
    TEST_TYPE_ALIGN  (HTTP_VERSION_INFO, 4)
    TEST_FIELD_SIZE  (HTTP_VERSION_INFO, dwMajorVersion, 4)
    TEST_FIELD_ALIGN (HTTP_VERSION_INFO, dwMajorVersion, 4)
    TEST_FIELD_OFFSET(HTTP_VERSION_INFO, dwMajorVersion, 0)
    TEST_FIELD_SIZE  (HTTP_VERSION_INFO, dwMinorVersion, 4)
    TEST_FIELD_ALIGN (HTTP_VERSION_INFO, dwMinorVersion, 4)
    TEST_FIELD_OFFSET(HTTP_VERSION_INFO, dwMinorVersion, 4)
}

static void test_pack_INTERNET_ASYNC_RESULT(void)
{
    /* INTERNET_ASYNC_RESULT */
    TEST_TYPE_SIZE   (INTERNET_ASYNC_RESULT, 16)
    TEST_TYPE_ALIGN  (INTERNET_ASYNC_RESULT, 8)
    TEST_FIELD_SIZE  (INTERNET_ASYNC_RESULT, dwResult, 8)
    TEST_FIELD_ALIGN (INTERNET_ASYNC_RESULT, dwResult, 8)
    TEST_FIELD_OFFSET(INTERNET_ASYNC_RESULT, dwResult, 0)
    TEST_FIELD_SIZE  (INTERNET_ASYNC_RESULT, dwError, 4)
    TEST_FIELD_ALIGN (INTERNET_ASYNC_RESULT, dwError, 4)
    TEST_FIELD_OFFSET(INTERNET_ASYNC_RESULT, dwError, 8)
}

static void test_pack_INTERNET_AUTH_NOTIFY_DATA(void)
{
    /* INTERNET_AUTH_NOTIFY_DATA */
    TEST_TYPE_SIZE   (INTERNET_AUTH_NOTIFY_DATA, 24)
    TEST_TYPE_ALIGN  (INTERNET_AUTH_NOTIFY_DATA, 8)
    TEST_FIELD_SIZE  (INTERNET_AUTH_NOTIFY_DATA, cbStruct, 4)
    TEST_FIELD_ALIGN (INTERNET_AUTH_NOTIFY_DATA, cbStruct, 4)
    TEST_FIELD_OFFSET(INTERNET_AUTH_NOTIFY_DATA, cbStruct, 0)
    TEST_FIELD_SIZE  (INTERNET_AUTH_NOTIFY_DATA, dwOptions, 4)
    TEST_FIELD_ALIGN (INTERNET_AUTH_NOTIFY_DATA, dwOptions, 4)
    TEST_FIELD_OFFSET(INTERNET_AUTH_NOTIFY_DATA, dwOptions, 4)
    TEST_FIELD_SIZE  (INTERNET_AUTH_NOTIFY_DATA, pfnNotify, 8)
    TEST_FIELD_ALIGN (INTERNET_AUTH_NOTIFY_DATA, pfnNotify, 8)
    TEST_FIELD_OFFSET(INTERNET_AUTH_NOTIFY_DATA, pfnNotify, 8)
    TEST_FIELD_SIZE  (INTERNET_AUTH_NOTIFY_DATA, dwContext, 8)
    TEST_FIELD_ALIGN (INTERNET_AUTH_NOTIFY_DATA, dwContext, 8)
    TEST_FIELD_OFFSET(INTERNET_AUTH_NOTIFY_DATA, dwContext, 16)
}

static void test_pack_INTERNET_BUFFERSA(void)
{
    /* INTERNET_BUFFERSA */
    TEST_TYPE_SIZE   (INTERNET_BUFFERSA, 56)
    TEST_TYPE_ALIGN  (INTERNET_BUFFERSA, 8)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, dwStructSize, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, dwStructSize, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, dwStructSize, 0)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, Next, 8)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, Next, 8)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, Next, 8)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, lpcszHeader, 8)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, lpcszHeader, 8)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, lpcszHeader, 16)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, dwHeadersLength, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, dwHeadersLength, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, dwHeadersLength, 24)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, dwHeadersTotal, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, dwHeadersTotal, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, dwHeadersTotal, 28)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, lpvBuffer, 8)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, lpvBuffer, 8)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, lpvBuffer, 32)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, dwBufferLength, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, dwBufferLength, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, dwBufferLength, 40)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, dwBufferTotal, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, dwBufferTotal, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, dwBufferTotal, 44)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, dwOffsetLow, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, dwOffsetLow, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, dwOffsetLow, 48)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, dwOffsetHigh, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, dwOffsetHigh, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, dwOffsetHigh, 52)
}

static void test_pack_INTERNET_BUFFERSW(void)
{
    /* INTERNET_BUFFERSW */
    TEST_TYPE_SIZE   (INTERNET_BUFFERSW, 56)
    TEST_TYPE_ALIGN  (INTERNET_BUFFERSW, 8)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, dwStructSize, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, dwStructSize, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, dwStructSize, 0)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, Next, 8)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, Next, 8)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, Next, 8)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, lpcszHeader, 8)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, lpcszHeader, 8)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, lpcszHeader, 16)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, dwHeadersLength, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, dwHeadersLength, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, dwHeadersLength, 24)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, dwHeadersTotal, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, dwHeadersTotal, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, dwHeadersTotal, 28)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, lpvBuffer, 8)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, lpvBuffer, 8)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, lpvBuffer, 32)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, dwBufferLength, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, dwBufferLength, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, dwBufferLength, 40)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, dwBufferTotal, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, dwBufferTotal, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, dwBufferTotal, 44)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, dwOffsetLow, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, dwOffsetLow, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, dwOffsetLow, 48)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, dwOffsetHigh, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, dwOffsetHigh, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, dwOffsetHigh, 52)
}

static void test_pack_INTERNET_CACHE_ENTRY_INFOA(void)
{
    /* INTERNET_CACHE_ENTRY_INFOA */
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, dwStructSize, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, dwStructSize, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, dwStructSize, 0)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, lpszSourceUrlName, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, lpszSourceUrlName, 8)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, lpszSourceUrlName, 8)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, lpszLocalFileName, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, lpszLocalFileName, 8)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, lpszLocalFileName, 16)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, CacheEntryType, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, CacheEntryType, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, CacheEntryType, 24)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, dwUseCount, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, dwUseCount, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, dwUseCount, 28)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, dwHitRate, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, dwHitRate, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, dwHitRate, 32)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, dwSizeLow, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, dwSizeLow, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, dwSizeLow, 36)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, dwSizeHigh, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, dwSizeHigh, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, dwSizeHigh, 40)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, LastModifiedTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, LastModifiedTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, LastModifiedTime, 44)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, ExpireTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, ExpireTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, ExpireTime, 52)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, LastAccessTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, LastAccessTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, LastAccessTime, 60)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, LastSyncTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, LastSyncTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, LastSyncTime, 68)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, lpHeaderInfo, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, lpHeaderInfo, 8)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, lpHeaderInfo, 80)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, dwHeaderInfoSize, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, dwHeaderInfoSize, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, dwHeaderInfoSize, 88)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, lpszFileExtension, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, lpszFileExtension, 8)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, lpszFileExtension, 96)
}

static void test_pack_INTERNET_CACHE_ENTRY_INFOW(void)
{
    /* INTERNET_CACHE_ENTRY_INFOW */
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, dwStructSize, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, dwStructSize, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, dwStructSize, 0)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, lpszSourceUrlName, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, lpszSourceUrlName, 8)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, lpszSourceUrlName, 8)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, lpszLocalFileName, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, lpszLocalFileName, 8)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, lpszLocalFileName, 16)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, CacheEntryType, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, CacheEntryType, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, CacheEntryType, 24)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, dwUseCount, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, dwUseCount, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, dwUseCount, 28)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, dwHitRate, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, dwHitRate, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, dwHitRate, 32)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, dwSizeLow, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, dwSizeLow, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, dwSizeLow, 36)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, dwSizeHigh, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, dwSizeHigh, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, dwSizeHigh, 40)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, LastModifiedTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, LastModifiedTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, LastModifiedTime, 44)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, ExpireTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, ExpireTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, ExpireTime, 52)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, LastAccessTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, LastAccessTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, LastAccessTime, 60)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, LastSyncTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, LastSyncTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, LastSyncTime, 68)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, lpHeaderInfo, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, lpHeaderInfo, 8)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, lpHeaderInfo, 80)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, dwHeaderInfoSize, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, dwHeaderInfoSize, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, dwHeaderInfoSize, 88)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, lpszFileExtension, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, lpszFileExtension, 8)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, lpszFileExtension, 96)
}

static void test_pack_INTERNET_CERTIFICATE_INFOA(void)
{
    /* INTERNET_CERTIFICATE_INFOA */
    TEST_TYPE_SIZE   (INTERNET_CERTIFICATE_INFOA, 64)
    TEST_TYPE_ALIGN  (INTERNET_CERTIFICATE_INFOA, 8)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, ftExpiry, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, ftExpiry, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, ftExpiry, 0)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, ftStart, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, ftStart, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, ftStart, 8)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, lpszSubjectInfo, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, lpszSubjectInfo, 8)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, lpszSubjectInfo, 16)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, lpszIssuerInfo, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, lpszIssuerInfo, 8)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, lpszIssuerInfo, 24)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, lpszProtocolName, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, lpszProtocolName, 8)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, lpszProtocolName, 32)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, lpszSignatureAlgName, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, lpszSignatureAlgName, 8)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, lpszSignatureAlgName, 40)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, lpszEncryptionAlgName, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, lpszEncryptionAlgName, 8)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, lpszEncryptionAlgName, 48)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, dwKeySize, 4)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, dwKeySize, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, dwKeySize, 56)
}

static void test_pack_INTERNET_CERTIFICATE_INFOW(void)
{
    /* INTERNET_CERTIFICATE_INFOW */
    TEST_TYPE_SIZE   (INTERNET_CERTIFICATE_INFOW, 64)
    TEST_TYPE_ALIGN  (INTERNET_CERTIFICATE_INFOW, 8)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, ftExpiry, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, ftExpiry, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, ftExpiry, 0)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, ftStart, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, ftStart, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, ftStart, 8)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, lpszSubjectInfo, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, lpszSubjectInfo, 8)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, lpszSubjectInfo, 16)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, lpszIssuerInfo, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, lpszIssuerInfo, 8)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, lpszIssuerInfo, 24)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, lpszProtocolName, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, lpszProtocolName, 8)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, lpszProtocolName, 32)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, lpszSignatureAlgName, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, lpszSignatureAlgName, 8)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, lpszSignatureAlgName, 40)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, lpszEncryptionAlgName, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, lpszEncryptionAlgName, 8)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, lpszEncryptionAlgName, 48)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, dwKeySize, 4)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, dwKeySize, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, dwKeySize, 56)
}

static void test_pack_INTERNET_CONNECTED_INFO(void)
{
    /* INTERNET_CONNECTED_INFO */
    TEST_TYPE_SIZE   (INTERNET_CONNECTED_INFO, 8)
    TEST_TYPE_ALIGN  (INTERNET_CONNECTED_INFO, 4)
    TEST_FIELD_SIZE  (INTERNET_CONNECTED_INFO, dwConnectedState, 4)
    TEST_FIELD_ALIGN (INTERNET_CONNECTED_INFO, dwConnectedState, 4)
    TEST_FIELD_OFFSET(INTERNET_CONNECTED_INFO, dwConnectedState, 0)
    TEST_FIELD_SIZE  (INTERNET_CONNECTED_INFO, dwFlags, 4)
    TEST_FIELD_ALIGN (INTERNET_CONNECTED_INFO, dwFlags, 4)
    TEST_FIELD_OFFSET(INTERNET_CONNECTED_INFO, dwFlags, 4)
}

static void test_pack_INTERNET_PORT(void)
{
    /* INTERNET_PORT */
    TEST_TYPE_SIZE   (INTERNET_PORT, 2)
    TEST_TYPE_ALIGN  (INTERNET_PORT, 2)
    TEST_TYPE_UNSIGNED(INTERNET_PORT)
}

static void test_pack_INTERNET_PROXY_INFOA(void)
{
    /* INTERNET_PROXY_INFOA */
    TEST_TYPE_SIZE   (INTERNET_PROXY_INFOA, 24)
    TEST_TYPE_ALIGN  (INTERNET_PROXY_INFOA, 8)
    TEST_FIELD_SIZE  (INTERNET_PROXY_INFOA, dwAccessType, 4)
    TEST_FIELD_ALIGN (INTERNET_PROXY_INFOA, dwAccessType, 4)
    TEST_FIELD_OFFSET(INTERNET_PROXY_INFOA, dwAccessType, 0)
    TEST_FIELD_SIZE  (INTERNET_PROXY_INFOA, lpszProxy, 8)
    TEST_FIELD_ALIGN (INTERNET_PROXY_INFOA, lpszProxy, 8)
    TEST_FIELD_OFFSET(INTERNET_PROXY_INFOA, lpszProxy, 8)
    TEST_FIELD_SIZE  (INTERNET_PROXY_INFOA, lpszProxyBypass, 8)
    TEST_FIELD_ALIGN (INTERNET_PROXY_INFOA, lpszProxyBypass, 8)
    TEST_FIELD_OFFSET(INTERNET_PROXY_INFOA, lpszProxyBypass, 16)
}

static void test_pack_INTERNET_PROXY_INFOW(void)
{
    /* INTERNET_PROXY_INFOW */
    TEST_TYPE_SIZE   (INTERNET_PROXY_INFOW, 24)
    TEST_TYPE_ALIGN  (INTERNET_PROXY_INFOW, 8)
    TEST_FIELD_SIZE  (INTERNET_PROXY_INFOW, dwAccessType, 4)
    TEST_FIELD_ALIGN (INTERNET_PROXY_INFOW, dwAccessType, 4)
    TEST_FIELD_OFFSET(INTERNET_PROXY_INFOW, dwAccessType, 0)
    TEST_FIELD_SIZE  (INTERNET_PROXY_INFOW, lpszProxy, 8)
    TEST_FIELD_ALIGN (INTERNET_PROXY_INFOW, lpszProxy, 8)
    TEST_FIELD_OFFSET(INTERNET_PROXY_INFOW, lpszProxy, 8)
    TEST_FIELD_SIZE  (INTERNET_PROXY_INFOW, lpszProxyBypass, 8)
    TEST_FIELD_ALIGN (INTERNET_PROXY_INFOW, lpszProxyBypass, 8)
    TEST_FIELD_OFFSET(INTERNET_PROXY_INFOW, lpszProxyBypass, 16)
}

static void test_pack_INTERNET_STATUS_CALLBACK(void)
{
    /* INTERNET_STATUS_CALLBACK */
    TEST_TYPE_SIZE   (INTERNET_STATUS_CALLBACK, 8)
    TEST_TYPE_ALIGN  (INTERNET_STATUS_CALLBACK, 8)
}

static void test_pack_INTERNET_VERSION_INFO(void)
{
    /* INTERNET_VERSION_INFO */
    TEST_TYPE_SIZE   (INTERNET_VERSION_INFO, 8)
    TEST_TYPE_ALIGN  (INTERNET_VERSION_INFO, 4)
    TEST_FIELD_SIZE  (INTERNET_VERSION_INFO, dwMajorVersion, 4)
    TEST_FIELD_ALIGN (INTERNET_VERSION_INFO, dwMajorVersion, 4)
    TEST_FIELD_OFFSET(INTERNET_VERSION_INFO, dwMajorVersion, 0)
    TEST_FIELD_SIZE  (INTERNET_VERSION_INFO, dwMinorVersion, 4)
    TEST_FIELD_ALIGN (INTERNET_VERSION_INFO, dwMinorVersion, 4)
    TEST_FIELD_OFFSET(INTERNET_VERSION_INFO, dwMinorVersion, 4)
}

static void test_pack_LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_SIZE (LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 16)
    TEST_TARGET_ALIGN(LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 8)
}

static void test_pack_LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_SIZE (LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 16)
    TEST_TARGET_ALIGN(LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 8)
}

static void test_pack_LPGOPHER_ADMIN_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ADMIN_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_ADMIN_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_ADMIN_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_SIZE (LPGOPHER_ADMIN_ATTRIBUTE_TYPEA, 16)
    TEST_TARGET_ALIGN(LPGOPHER_ADMIN_ATTRIBUTE_TYPEA, 8)
}

static void test_pack_LPGOPHER_ADMIN_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ADMIN_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_ADMIN_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_ADMIN_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_SIZE (LPGOPHER_ADMIN_ATTRIBUTE_TYPEW, 16)
    TEST_TARGET_ALIGN(LPGOPHER_ADMIN_ATTRIBUTE_TYPEW, 8)
}

static void test_pack_LPGOPHER_ASK_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ASK_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_ASK_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_ASK_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_SIZE (LPGOPHER_ASK_ATTRIBUTE_TYPEA, 16)
    TEST_TARGET_ALIGN(LPGOPHER_ASK_ATTRIBUTE_TYPEA, 8)
}

static void test_pack_LPGOPHER_ASK_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ASK_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_ASK_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_ASK_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_SIZE (LPGOPHER_ASK_ATTRIBUTE_TYPEW, 16)
    TEST_TARGET_ALIGN(LPGOPHER_ASK_ATTRIBUTE_TYPEW, 8)
}

static void test_pack_LPGOPHER_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_ATTRIBUTE_TYPEA, 8)
}

static void test_pack_LPGOPHER_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_ATTRIBUTE_TYPEW, 8)
}

static void test_pack_LPGOPHER_FIND_DATAA(void)
{
    /* LPGOPHER_FIND_DATAA */
    TEST_TYPE_SIZE   (LPGOPHER_FIND_DATAA, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_FIND_DATAA, 8)
    TEST_TARGET_SIZE (LPGOPHER_FIND_DATAA, 808)
    TEST_TARGET_ALIGN(LPGOPHER_FIND_DATAA, 4)
}

static void test_pack_LPGOPHER_FIND_DATAW(void)
{
    /* LPGOPHER_FIND_DATAW */
    TEST_TYPE_SIZE   (LPGOPHER_FIND_DATAW, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_FIND_DATAW, 8)
    TEST_TARGET_SIZE (LPGOPHER_FIND_DATAW, 1588)
    TEST_TARGET_ALIGN(LPGOPHER_FIND_DATAW, 4)
}

static void test_pack_LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 8)
    TEST_TARGET_SIZE (LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 24)
    TEST_TARGET_ALIGN(LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 4)
}

static void test_pack_LPGOPHER_LOCATION_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_LOCATION_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_LOCATION_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_LOCATION_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_SIZE (LPGOPHER_LOCATION_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_ALIGN(LPGOPHER_LOCATION_ATTRIBUTE_TYPEA, 8)
}

static void test_pack_LPGOPHER_LOCATION_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_LOCATION_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_LOCATION_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_LOCATION_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_SIZE (LPGOPHER_LOCATION_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_ALIGN(LPGOPHER_LOCATION_ATTRIBUTE_TYPEW, 8)
}

static void test_pack_LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE, 8)
    TEST_TARGET_SIZE (LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE, 8)
    TEST_TARGET_ALIGN(LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE, 4)
}

static void test_pack_LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_SIZE (LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_ALIGN(LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 8)
}

static void test_pack_LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_SIZE (LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_ALIGN(LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 8)
}

static void test_pack_LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_SIZE (LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_ALIGN(LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA, 8)
}

static void test_pack_LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_SIZE (LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_ALIGN(LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW, 8)
}

static void test_pack_LPGOPHER_SCORE_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_SCORE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (LPGOPHER_SCORE_ATTRIBUTE_TYPE, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_SCORE_ATTRIBUTE_TYPE, 8)
    TEST_TARGET_SIZE (LPGOPHER_SCORE_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_ALIGN(LPGOPHER_SCORE_ATTRIBUTE_TYPE, 4)
}

static void test_pack_LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 8)
    TEST_TARGET_SIZE (LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 8)
    TEST_TARGET_ALIGN(LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 4)
}

static void test_pack_LPGOPHER_SITE_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_SITE_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_SITE_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_SITE_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_SIZE (LPGOPHER_SITE_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_ALIGN(LPGOPHER_SITE_ATTRIBUTE_TYPEA, 8)
}

static void test_pack_LPGOPHER_SITE_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_SITE_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_SITE_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_SITE_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_SIZE (LPGOPHER_SITE_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_ALIGN(LPGOPHER_SITE_ATTRIBUTE_TYPEW, 8)
}

static void test_pack_LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE, 8)
    TEST_TARGET_SIZE (LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_ALIGN(LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE, 4)
}

static void test_pack_LPGOPHER_TTL_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_TTL_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (LPGOPHER_TTL_ATTRIBUTE_TYPE, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_TTL_ATTRIBUTE_TYPE, 8)
    TEST_TARGET_SIZE (LPGOPHER_TTL_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_ALIGN(LPGOPHER_TTL_ATTRIBUTE_TYPE, 4)
}

static void test_pack_LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_SIZE (LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_ALIGN(LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 8)
}

static void test_pack_LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_SIZE (LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_ALIGN(LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 8)
}

static void test_pack_LPGOPHER_VERONICA_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_VERONICA_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (LPGOPHER_VERONICA_ATTRIBUTE_TYPE, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_VERONICA_ATTRIBUTE_TYPE, 8)
    TEST_TARGET_SIZE (LPGOPHER_VERONICA_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_ALIGN(LPGOPHER_VERONICA_ATTRIBUTE_TYPE, 4)
}

static void test_pack_LPGOPHER_VERSION_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_VERSION_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_VERSION_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_VERSION_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_SIZE (LPGOPHER_VERSION_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_ALIGN(LPGOPHER_VERSION_ATTRIBUTE_TYPEA, 8)
}

static void test_pack_LPGOPHER_VERSION_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_VERSION_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_VERSION_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_VERSION_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_SIZE (LPGOPHER_VERSION_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_ALIGN(LPGOPHER_VERSION_ATTRIBUTE_TYPEW, 8)
}

static void test_pack_LPGOPHER_VIEW_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_VIEW_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_VIEW_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_VIEW_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_SIZE (LPGOPHER_VIEW_ATTRIBUTE_TYPEA, 24)
    TEST_TARGET_ALIGN(LPGOPHER_VIEW_ATTRIBUTE_TYPEA, 8)
}

static void test_pack_LPGOPHER_VIEW_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_VIEW_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_VIEW_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (LPGOPHER_VIEW_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_SIZE (LPGOPHER_VIEW_ATTRIBUTE_TYPEW, 24)
    TEST_TARGET_ALIGN(LPGOPHER_VIEW_ATTRIBUTE_TYPEW, 8)
}

static void test_pack_LPHINTERNET(void)
{
    /* LPHINTERNET */
    TEST_TYPE_SIZE   (LPHINTERNET, 8)
    TEST_TYPE_ALIGN  (LPHINTERNET, 8)
    TEST_TARGET_SIZE (LPHINTERNET, 8)
    TEST_TARGET_ALIGN(LPHINTERNET, 8)
}

static void test_pack_LPHTTP_VERSION_INFO(void)
{
    /* LPHTTP_VERSION_INFO */
    TEST_TYPE_SIZE   (LPHTTP_VERSION_INFO, 8)
    TEST_TYPE_ALIGN  (LPHTTP_VERSION_INFO, 8)
    TEST_TARGET_SIZE (LPHTTP_VERSION_INFO, 8)
    TEST_TARGET_ALIGN(LPHTTP_VERSION_INFO, 4)
}

static void test_pack_LPINTERNET_ASYNC_RESULT(void)
{
    /* LPINTERNET_ASYNC_RESULT */
    TEST_TYPE_SIZE   (LPINTERNET_ASYNC_RESULT, 8)
    TEST_TYPE_ALIGN  (LPINTERNET_ASYNC_RESULT, 8)
    TEST_TARGET_SIZE (LPINTERNET_ASYNC_RESULT, 16)
    TEST_TARGET_ALIGN(LPINTERNET_ASYNC_RESULT, 8)
}

static void test_pack_LPINTERNET_BUFFERSA(void)
{
    /* LPINTERNET_BUFFERSA */
    TEST_TYPE_SIZE   (LPINTERNET_BUFFERSA, 8)
    TEST_TYPE_ALIGN  (LPINTERNET_BUFFERSA, 8)
    TEST_TARGET_SIZE (LPINTERNET_BUFFERSA, 56)
    TEST_TARGET_ALIGN(LPINTERNET_BUFFERSA, 8)
}

static void test_pack_LPINTERNET_BUFFERSW(void)
{
    /* LPINTERNET_BUFFERSW */
    TEST_TYPE_SIZE   (LPINTERNET_BUFFERSW, 8)
    TEST_TYPE_ALIGN  (LPINTERNET_BUFFERSW, 8)
    TEST_TARGET_SIZE (LPINTERNET_BUFFERSW, 56)
    TEST_TARGET_ALIGN(LPINTERNET_BUFFERSW, 8)
}

static void test_pack_LPINTERNET_CACHE_ENTRY_INFOA(void)
{
    /* LPINTERNET_CACHE_ENTRY_INFOA */
    TEST_TYPE_SIZE   (LPINTERNET_CACHE_ENTRY_INFOA, 8)
    TEST_TYPE_ALIGN  (LPINTERNET_CACHE_ENTRY_INFOA, 8)
}

static void test_pack_LPINTERNET_CACHE_ENTRY_INFOW(void)
{
    /* LPINTERNET_CACHE_ENTRY_INFOW */
    TEST_TYPE_SIZE   (LPINTERNET_CACHE_ENTRY_INFOW, 8)
    TEST_TYPE_ALIGN  (LPINTERNET_CACHE_ENTRY_INFOW, 8)
}

static void test_pack_LPINTERNET_CERTIFICATE_INFOA(void)
{
    /* LPINTERNET_CERTIFICATE_INFOA */
    TEST_TYPE_SIZE   (LPINTERNET_CERTIFICATE_INFOA, 8)
    TEST_TYPE_ALIGN  (LPINTERNET_CERTIFICATE_INFOA, 8)
    TEST_TARGET_SIZE (LPINTERNET_CERTIFICATE_INFOA, 64)
    TEST_TARGET_ALIGN(LPINTERNET_CERTIFICATE_INFOA, 8)
}

static void test_pack_LPINTERNET_CERTIFICATE_INFOW(void)
{
    /* LPINTERNET_CERTIFICATE_INFOW */
    TEST_TYPE_SIZE   (LPINTERNET_CERTIFICATE_INFOW, 8)
    TEST_TYPE_ALIGN  (LPINTERNET_CERTIFICATE_INFOW, 8)
    TEST_TARGET_SIZE (LPINTERNET_CERTIFICATE_INFOW, 64)
    TEST_TARGET_ALIGN(LPINTERNET_CERTIFICATE_INFOW, 8)
}

static void test_pack_LPINTERNET_CONNECTED_INFO(void)
{
    /* LPINTERNET_CONNECTED_INFO */
    TEST_TYPE_SIZE   (LPINTERNET_CONNECTED_INFO, 8)
    TEST_TYPE_ALIGN  (LPINTERNET_CONNECTED_INFO, 8)
    TEST_TARGET_SIZE (LPINTERNET_CONNECTED_INFO, 8)
    TEST_TARGET_ALIGN(LPINTERNET_CONNECTED_INFO, 4)
}

static void test_pack_LPINTERNET_PORT(void)
{
    /* LPINTERNET_PORT */
    TEST_TYPE_SIZE   (LPINTERNET_PORT, 8)
    TEST_TYPE_ALIGN  (LPINTERNET_PORT, 8)
    TEST_TARGET_SIZE (LPINTERNET_PORT, 2)
    TEST_TARGET_ALIGN(LPINTERNET_PORT, 2)
}

static void test_pack_LPINTERNET_PROXY_INFOA(void)
{
    /* LPINTERNET_PROXY_INFOA */
    TEST_TYPE_SIZE   (LPINTERNET_PROXY_INFOA, 8)
    TEST_TYPE_ALIGN  (LPINTERNET_PROXY_INFOA, 8)
    TEST_TARGET_SIZE (LPINTERNET_PROXY_INFOA, 24)
    TEST_TARGET_ALIGN(LPINTERNET_PROXY_INFOA, 8)
}

static void test_pack_LPINTERNET_PROXY_INFOW(void)
{
    /* LPINTERNET_PROXY_INFOW */
    TEST_TYPE_SIZE   (LPINTERNET_PROXY_INFOW, 8)
    TEST_TYPE_ALIGN  (LPINTERNET_PROXY_INFOW, 8)
    TEST_TARGET_SIZE (LPINTERNET_PROXY_INFOW, 24)
    TEST_TARGET_ALIGN(LPINTERNET_PROXY_INFOW, 8)
}

static void test_pack_LPINTERNET_STATUS_CALLBACK(void)
{
    /* LPINTERNET_STATUS_CALLBACK */
    TEST_TYPE_SIZE   (LPINTERNET_STATUS_CALLBACK, 8)
    TEST_TYPE_ALIGN  (LPINTERNET_STATUS_CALLBACK, 8)
    TEST_TARGET_SIZE (LPINTERNET_STATUS_CALLBACK, 8)
    TEST_TARGET_ALIGN(LPINTERNET_STATUS_CALLBACK, 8)
}

static void test_pack_LPINTERNET_VERSION_INFO(void)
{
    /* LPINTERNET_VERSION_INFO */
    TEST_TYPE_SIZE   (LPINTERNET_VERSION_INFO, 8)
    TEST_TYPE_ALIGN  (LPINTERNET_VERSION_INFO, 8)
    TEST_TARGET_SIZE (LPINTERNET_VERSION_INFO, 8)
    TEST_TARGET_ALIGN(LPINTERNET_VERSION_INFO, 4)
}

static void test_pack_LPURL_COMPONENTSA(void)
{
    /* LPURL_COMPONENTSA */
    TEST_TYPE_SIZE   (LPURL_COMPONENTSA, 8)
    TEST_TYPE_ALIGN  (LPURL_COMPONENTSA, 8)
}

static void test_pack_LPURL_COMPONENTSW(void)
{
    /* LPURL_COMPONENTSW */
    TEST_TYPE_SIZE   (LPURL_COMPONENTSW, 8)
    TEST_TYPE_ALIGN  (LPURL_COMPONENTSW, 8)
}

static void test_pack_PFN_AUTH_NOTIFY(void)
{
    /* PFN_AUTH_NOTIFY */
    TEST_TYPE_SIZE   (PFN_AUTH_NOTIFY, 8)
    TEST_TYPE_ALIGN  (PFN_AUTH_NOTIFY, 8)
}

static void test_pack_PFN_DIAL_HANDLER(void)
{
    /* PFN_DIAL_HANDLER */
    TEST_TYPE_SIZE   (PFN_DIAL_HANDLER, 8)
    TEST_TYPE_ALIGN  (PFN_DIAL_HANDLER, 8)
}

static void test_pack_URL_COMPONENTSA(void)
{
    /* URL_COMPONENTSA */
    TEST_FIELD_SIZE  (URL_COMPONENTSA, dwStructSize, 4)
    TEST_FIELD_ALIGN (URL_COMPONENTSA, dwStructSize, 4)
    TEST_FIELD_OFFSET(URL_COMPONENTSA, dwStructSize, 0)
    TEST_FIELD_SIZE  (URL_COMPONENTSA, lpszScheme, 8)
    TEST_FIELD_ALIGN (URL_COMPONENTSA, lpszScheme, 8)
    TEST_FIELD_OFFSET(URL_COMPONENTSA, lpszScheme, 8)
    TEST_FIELD_SIZE  (URL_COMPONENTSA, dwSchemeLength, 4)
    TEST_FIELD_ALIGN (URL_COMPONENTSA, dwSchemeLength, 4)
    TEST_FIELD_OFFSET(URL_COMPONENTSA, dwSchemeLength, 16)
}

static void test_pack_URL_COMPONENTSW(void)
{
    /* URL_COMPONENTSW */
    TEST_FIELD_SIZE  (URL_COMPONENTSW, dwStructSize, 4)
    TEST_FIELD_ALIGN (URL_COMPONENTSW, dwStructSize, 4)
    TEST_FIELD_OFFSET(URL_COMPONENTSW, dwStructSize, 0)
    TEST_FIELD_SIZE  (URL_COMPONENTSW, lpszScheme, 8)
    TEST_FIELD_ALIGN (URL_COMPONENTSW, lpszScheme, 8)
    TEST_FIELD_OFFSET(URL_COMPONENTSW, lpszScheme, 8)
    TEST_FIELD_SIZE  (URL_COMPONENTSW, dwSchemeLength, 4)
    TEST_FIELD_ALIGN (URL_COMPONENTSW, dwSchemeLength, 4)
    TEST_FIELD_OFFSET(URL_COMPONENTSW, dwSchemeLength, 16)
}

#else /* _WIN64 */

static void test_pack_GOPHER_ABSTRACT_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ABSTRACT_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 4)
    TEST_FIELD_SIZE  (GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, ShortAbstract, 4)
    TEST_FIELD_ALIGN (GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, ShortAbstract, 4)
    TEST_FIELD_OFFSET(GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, ShortAbstract, 0)
    TEST_FIELD_SIZE  (GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, AbstractFile, 4)
    TEST_FIELD_ALIGN (GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, AbstractFile, 4)
    TEST_FIELD_OFFSET(GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, AbstractFile, 4)
}

static void test_pack_GOPHER_ABSTRACT_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ABSTRACT_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 4)
    TEST_FIELD_SIZE  (GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, ShortAbstract, 4)
    TEST_FIELD_ALIGN (GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, ShortAbstract, 4)
    TEST_FIELD_OFFSET(GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, ShortAbstract, 0)
    TEST_FIELD_SIZE  (GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, AbstractFile, 4)
    TEST_FIELD_ALIGN (GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, AbstractFile, 4)
    TEST_FIELD_OFFSET(GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, AbstractFile, 4)
}

static void test_pack_GOPHER_ADMIN_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ADMIN_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_ADMIN_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (GOPHER_ADMIN_ATTRIBUTE_TYPEA, 4)
    TEST_FIELD_SIZE  (GOPHER_ADMIN_ATTRIBUTE_TYPEA, Comment, 4)
    TEST_FIELD_ALIGN (GOPHER_ADMIN_ATTRIBUTE_TYPEA, Comment, 4)
    TEST_FIELD_OFFSET(GOPHER_ADMIN_ATTRIBUTE_TYPEA, Comment, 0)
    TEST_FIELD_SIZE  (GOPHER_ADMIN_ATTRIBUTE_TYPEA, EmailAddress, 4)
    TEST_FIELD_ALIGN (GOPHER_ADMIN_ATTRIBUTE_TYPEA, EmailAddress, 4)
    TEST_FIELD_OFFSET(GOPHER_ADMIN_ATTRIBUTE_TYPEA, EmailAddress, 4)
}

static void test_pack_GOPHER_ADMIN_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ADMIN_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_ADMIN_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (GOPHER_ADMIN_ATTRIBUTE_TYPEW, 4)
    TEST_FIELD_SIZE  (GOPHER_ADMIN_ATTRIBUTE_TYPEW, Comment, 4)
    TEST_FIELD_ALIGN (GOPHER_ADMIN_ATTRIBUTE_TYPEW, Comment, 4)
    TEST_FIELD_OFFSET(GOPHER_ADMIN_ATTRIBUTE_TYPEW, Comment, 0)
    TEST_FIELD_SIZE  (GOPHER_ADMIN_ATTRIBUTE_TYPEW, EmailAddress, 4)
    TEST_FIELD_ALIGN (GOPHER_ADMIN_ATTRIBUTE_TYPEW, EmailAddress, 4)
    TEST_FIELD_OFFSET(GOPHER_ADMIN_ATTRIBUTE_TYPEW, EmailAddress, 4)
}

static void test_pack_GOPHER_ASK_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ASK_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_ASK_ATTRIBUTE_TYPEA, 8)
    TEST_TYPE_ALIGN  (GOPHER_ASK_ATTRIBUTE_TYPEA, 4)
    TEST_FIELD_SIZE  (GOPHER_ASK_ATTRIBUTE_TYPEA, QuestionType, 4)
    TEST_FIELD_ALIGN (GOPHER_ASK_ATTRIBUTE_TYPEA, QuestionType, 4)
    TEST_FIELD_OFFSET(GOPHER_ASK_ATTRIBUTE_TYPEA, QuestionType, 0)
    TEST_FIELD_SIZE  (GOPHER_ASK_ATTRIBUTE_TYPEA, QuestionText, 4)
    TEST_FIELD_ALIGN (GOPHER_ASK_ATTRIBUTE_TYPEA, QuestionText, 4)
    TEST_FIELD_OFFSET(GOPHER_ASK_ATTRIBUTE_TYPEA, QuestionText, 4)
}

static void test_pack_GOPHER_ASK_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ASK_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_ASK_ATTRIBUTE_TYPEW, 8)
    TEST_TYPE_ALIGN  (GOPHER_ASK_ATTRIBUTE_TYPEW, 4)
    TEST_FIELD_SIZE  (GOPHER_ASK_ATTRIBUTE_TYPEW, QuestionType, 4)
    TEST_FIELD_ALIGN (GOPHER_ASK_ATTRIBUTE_TYPEW, QuestionType, 4)
    TEST_FIELD_OFFSET(GOPHER_ASK_ATTRIBUTE_TYPEW, QuestionType, 0)
    TEST_FIELD_SIZE  (GOPHER_ASK_ATTRIBUTE_TYPEW, QuestionText, 4)
    TEST_FIELD_ALIGN (GOPHER_ASK_ATTRIBUTE_TYPEW, QuestionText, 4)
    TEST_FIELD_OFFSET(GOPHER_ASK_ATTRIBUTE_TYPEW, QuestionText, 4)
}

static void test_pack_GOPHER_ATTRIBUTE_ENUMERATORA(void)
{
    /* GOPHER_ATTRIBUTE_ENUMERATORA */
    TEST_TYPE_SIZE   (GOPHER_ATTRIBUTE_ENUMERATORA, 4)
    TEST_TYPE_ALIGN  (GOPHER_ATTRIBUTE_ENUMERATORA, 4)
}

static void test_pack_GOPHER_ATTRIBUTE_ENUMERATORW(void)
{
    /* GOPHER_ATTRIBUTE_ENUMERATORW */
    TEST_TYPE_SIZE   (GOPHER_ATTRIBUTE_ENUMERATORW, 4)
    TEST_TYPE_ALIGN  (GOPHER_ATTRIBUTE_ENUMERATORW, 4)
}

static void test_pack_GOPHER_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ATTRIBUTE_TYPEA */
    TEST_FIELD_SIZE  (GOPHER_ATTRIBUTE_TYPEA, CategoryId, 4)
    TEST_FIELD_ALIGN (GOPHER_ATTRIBUTE_TYPEA, CategoryId, 4)
    TEST_FIELD_OFFSET(GOPHER_ATTRIBUTE_TYPEA, CategoryId, 0)
    TEST_FIELD_SIZE  (GOPHER_ATTRIBUTE_TYPEA, AttributeId, 4)
    TEST_FIELD_ALIGN (GOPHER_ATTRIBUTE_TYPEA, AttributeId, 4)
    TEST_FIELD_OFFSET(GOPHER_ATTRIBUTE_TYPEA, AttributeId, 4)
}

static void test_pack_GOPHER_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ATTRIBUTE_TYPEW */
    TEST_FIELD_SIZE  (GOPHER_ATTRIBUTE_TYPEW, CategoryId, 4)
    TEST_FIELD_ALIGN (GOPHER_ATTRIBUTE_TYPEW, CategoryId, 4)
    TEST_FIELD_OFFSET(GOPHER_ATTRIBUTE_TYPEW, CategoryId, 0)
    TEST_FIELD_SIZE  (GOPHER_ATTRIBUTE_TYPEW, AttributeId, 4)
    TEST_FIELD_ALIGN (GOPHER_ATTRIBUTE_TYPEW, AttributeId, 4)
    TEST_FIELD_OFFSET(GOPHER_ATTRIBUTE_TYPEW, AttributeId, 4)
}

static void test_pack_GOPHER_FIND_DATAA(void)
{
    /* GOPHER_FIND_DATAA */
    TEST_TYPE_SIZE   (GOPHER_FIND_DATAA, 808)
    TEST_TYPE_ALIGN  (GOPHER_FIND_DATAA, 4)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAA, DisplayString, 129)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAA, DisplayString, 1)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAA, DisplayString, 0)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAA, GopherType, 4)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAA, GopherType, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAA, GopherType, 132)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAA, SizeLow, 4)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAA, SizeLow, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAA, SizeLow, 136)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAA, SizeHigh, 4)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAA, SizeHigh, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAA, SizeHigh, 140)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAA, LastModificationTime, 8)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAA, LastModificationTime, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAA, LastModificationTime, 144)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAA, Locator, 654)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAA, Locator, 1)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAA, Locator, 152)
}

static void test_pack_GOPHER_FIND_DATAW(void)
{
    /* GOPHER_FIND_DATAW */
    TEST_TYPE_SIZE   (GOPHER_FIND_DATAW, 1588)
    TEST_TYPE_ALIGN  (GOPHER_FIND_DATAW, 4)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAW, DisplayString, 258)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAW, DisplayString, 2)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAW, DisplayString, 0)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAW, GopherType, 4)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAW, GopherType, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAW, GopherType, 260)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAW, SizeLow, 4)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAW, SizeLow, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAW, SizeLow, 264)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAW, SizeHigh, 4)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAW, SizeHigh, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAW, SizeHigh, 268)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAW, LastModificationTime, 8)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAW, LastModificationTime, 4)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAW, LastModificationTime, 272)
    TEST_FIELD_SIZE  (GOPHER_FIND_DATAW, Locator, 1308)
    TEST_FIELD_ALIGN (GOPHER_FIND_DATAW, Locator, 2)
    TEST_FIELD_OFFSET(GOPHER_FIND_DATAW, Locator, 280)
}

static void test_pack_GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 24)
    TEST_TYPE_ALIGN  (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 4)
    TEST_FIELD_SIZE  (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, DegreesNorth, 4)
    TEST_FIELD_ALIGN (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, DegreesNorth, 4)
    TEST_FIELD_OFFSET(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, DegreesNorth, 0)
    TEST_FIELD_SIZE  (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, MinutesNorth, 4)
    TEST_FIELD_ALIGN (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, MinutesNorth, 4)
    TEST_FIELD_OFFSET(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, MinutesNorth, 4)
    TEST_FIELD_SIZE  (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, SecondsNorth, 4)
    TEST_FIELD_ALIGN (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, SecondsNorth, 4)
    TEST_FIELD_OFFSET(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, SecondsNorth, 8)
    TEST_FIELD_SIZE  (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, DegreesEast, 4)
    TEST_FIELD_ALIGN (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, DegreesEast, 4)
    TEST_FIELD_OFFSET(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, DegreesEast, 12)
    TEST_FIELD_SIZE  (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, MinutesEast, 4)
    TEST_FIELD_ALIGN (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, MinutesEast, 4)
    TEST_FIELD_OFFSET(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, MinutesEast, 16)
    TEST_FIELD_SIZE  (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, SecondsEast, 4)
    TEST_FIELD_ALIGN (GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, SecondsEast, 4)
    TEST_FIELD_OFFSET(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, SecondsEast, 20)
}

static void test_pack_GOPHER_LOCATION_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_LOCATION_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_LOCATION_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (GOPHER_LOCATION_ATTRIBUTE_TYPEA, 4)
    TEST_FIELD_SIZE  (GOPHER_LOCATION_ATTRIBUTE_TYPEA, Location, 4)
    TEST_FIELD_ALIGN (GOPHER_LOCATION_ATTRIBUTE_TYPEA, Location, 4)
    TEST_FIELD_OFFSET(GOPHER_LOCATION_ATTRIBUTE_TYPEA, Location, 0)
}

static void test_pack_GOPHER_LOCATION_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_LOCATION_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_LOCATION_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (GOPHER_LOCATION_ATTRIBUTE_TYPEW, 4)
    TEST_FIELD_SIZE  (GOPHER_LOCATION_ATTRIBUTE_TYPEW, Location, 4)
    TEST_FIELD_ALIGN (GOPHER_LOCATION_ATTRIBUTE_TYPEW, Location, 4)
    TEST_FIELD_OFFSET(GOPHER_LOCATION_ATTRIBUTE_TYPEW, Location, 0)
}

static void test_pack_GOPHER_MOD_DATE_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_MOD_DATE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (GOPHER_MOD_DATE_ATTRIBUTE_TYPE, 8)
    TEST_TYPE_ALIGN  (GOPHER_MOD_DATE_ATTRIBUTE_TYPE, 4)
    TEST_FIELD_SIZE  (GOPHER_MOD_DATE_ATTRIBUTE_TYPE, DateAndTime, 8)
    TEST_FIELD_ALIGN (GOPHER_MOD_DATE_ATTRIBUTE_TYPE, DateAndTime, 4)
    TEST_FIELD_OFFSET(GOPHER_MOD_DATE_ATTRIBUTE_TYPE, DateAndTime, 0)
}

static void test_pack_GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 4)
    TEST_FIELD_SIZE  (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, Organization, 4)
    TEST_FIELD_ALIGN (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, Organization, 4)
    TEST_FIELD_OFFSET(GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, Organization, 0)
}

static void test_pack_GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 4)
    TEST_FIELD_SIZE  (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, Organization, 4)
    TEST_FIELD_ALIGN (GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, Organization, 4)
    TEST_FIELD_OFFSET(GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, Organization, 0)
}

static void test_pack_GOPHER_PROVIDER_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_PROVIDER_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_PROVIDER_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (GOPHER_PROVIDER_ATTRIBUTE_TYPEA, 4)
    TEST_FIELD_SIZE  (GOPHER_PROVIDER_ATTRIBUTE_TYPEA, Provider, 4)
    TEST_FIELD_ALIGN (GOPHER_PROVIDER_ATTRIBUTE_TYPEA, Provider, 4)
    TEST_FIELD_OFFSET(GOPHER_PROVIDER_ATTRIBUTE_TYPEA, Provider, 0)
}

static void test_pack_GOPHER_PROVIDER_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_PROVIDER_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_PROVIDER_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (GOPHER_PROVIDER_ATTRIBUTE_TYPEW, 4)
    TEST_FIELD_SIZE  (GOPHER_PROVIDER_ATTRIBUTE_TYPEW, Provider, 4)
    TEST_FIELD_ALIGN (GOPHER_PROVIDER_ATTRIBUTE_TYPEW, Provider, 4)
    TEST_FIELD_OFFSET(GOPHER_PROVIDER_ATTRIBUTE_TYPEW, Provider, 0)
}

static void test_pack_GOPHER_SCORE_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_SCORE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (GOPHER_SCORE_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (GOPHER_SCORE_ATTRIBUTE_TYPE, 4)
    TEST_FIELD_SIZE  (GOPHER_SCORE_ATTRIBUTE_TYPE, Score, 4)
    TEST_FIELD_ALIGN (GOPHER_SCORE_ATTRIBUTE_TYPE, Score, 4)
    TEST_FIELD_OFFSET(GOPHER_SCORE_ATTRIBUTE_TYPE, Score, 0)
}

static void test_pack_GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 8)
    TEST_TYPE_ALIGN  (GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 4)
    TEST_FIELD_SIZE  (GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, LowerBound, 4)
    TEST_FIELD_ALIGN (GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, LowerBound, 4)
    TEST_FIELD_OFFSET(GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, LowerBound, 0)
    TEST_FIELD_SIZE  (GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, UpperBound, 4)
    TEST_FIELD_ALIGN (GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, UpperBound, 4)
    TEST_FIELD_OFFSET(GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, UpperBound, 4)
}

static void test_pack_GOPHER_SITE_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_SITE_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_SITE_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (GOPHER_SITE_ATTRIBUTE_TYPEA, 4)
    TEST_FIELD_SIZE  (GOPHER_SITE_ATTRIBUTE_TYPEA, Site, 4)
    TEST_FIELD_ALIGN (GOPHER_SITE_ATTRIBUTE_TYPEA, Site, 4)
    TEST_FIELD_OFFSET(GOPHER_SITE_ATTRIBUTE_TYPEA, Site, 0)
}

static void test_pack_GOPHER_SITE_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_SITE_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_SITE_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (GOPHER_SITE_ATTRIBUTE_TYPEW, 4)
    TEST_FIELD_SIZE  (GOPHER_SITE_ATTRIBUTE_TYPEW, Site, 4)
    TEST_FIELD_ALIGN (GOPHER_SITE_ATTRIBUTE_TYPEW, Site, 4)
    TEST_FIELD_OFFSET(GOPHER_SITE_ATTRIBUTE_TYPEW, Site, 0)
}

static void test_pack_GOPHER_TIMEZONE_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_TIMEZONE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (GOPHER_TIMEZONE_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (GOPHER_TIMEZONE_ATTRIBUTE_TYPE, 4)
    TEST_FIELD_SIZE  (GOPHER_TIMEZONE_ATTRIBUTE_TYPE, Zone, 4)
    TEST_FIELD_ALIGN (GOPHER_TIMEZONE_ATTRIBUTE_TYPE, Zone, 4)
    TEST_FIELD_OFFSET(GOPHER_TIMEZONE_ATTRIBUTE_TYPE, Zone, 0)
}

static void test_pack_GOPHER_TTL_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_TTL_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (GOPHER_TTL_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (GOPHER_TTL_ATTRIBUTE_TYPE, 4)
    TEST_FIELD_SIZE  (GOPHER_TTL_ATTRIBUTE_TYPE, Ttl, 4)
    TEST_FIELD_ALIGN (GOPHER_TTL_ATTRIBUTE_TYPE, Ttl, 4)
    TEST_FIELD_OFFSET(GOPHER_TTL_ATTRIBUTE_TYPE, Ttl, 0)
}

static void test_pack_GOPHER_UNKNOWN_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_UNKNOWN_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (GOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 4)
    TEST_FIELD_SIZE  (GOPHER_UNKNOWN_ATTRIBUTE_TYPEA, Text, 4)
    TEST_FIELD_ALIGN (GOPHER_UNKNOWN_ATTRIBUTE_TYPEA, Text, 4)
    TEST_FIELD_OFFSET(GOPHER_UNKNOWN_ATTRIBUTE_TYPEA, Text, 0)
}

static void test_pack_GOPHER_UNKNOWN_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_UNKNOWN_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (GOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 4)
    TEST_FIELD_SIZE  (GOPHER_UNKNOWN_ATTRIBUTE_TYPEW, Text, 4)
    TEST_FIELD_ALIGN (GOPHER_UNKNOWN_ATTRIBUTE_TYPEW, Text, 4)
    TEST_FIELD_OFFSET(GOPHER_UNKNOWN_ATTRIBUTE_TYPEW, Text, 0)
}

static void test_pack_GOPHER_VERONICA_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_VERONICA_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (GOPHER_VERONICA_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (GOPHER_VERONICA_ATTRIBUTE_TYPE, 4)
    TEST_FIELD_SIZE  (GOPHER_VERONICA_ATTRIBUTE_TYPE, TreeWalk, 4)
    TEST_FIELD_ALIGN (GOPHER_VERONICA_ATTRIBUTE_TYPE, TreeWalk, 4)
    TEST_FIELD_OFFSET(GOPHER_VERONICA_ATTRIBUTE_TYPE, TreeWalk, 0)
}

static void test_pack_GOPHER_VERSION_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_VERSION_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_VERSION_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (GOPHER_VERSION_ATTRIBUTE_TYPEA, 4)
    TEST_FIELD_SIZE  (GOPHER_VERSION_ATTRIBUTE_TYPEA, Version, 4)
    TEST_FIELD_ALIGN (GOPHER_VERSION_ATTRIBUTE_TYPEA, Version, 4)
    TEST_FIELD_OFFSET(GOPHER_VERSION_ATTRIBUTE_TYPEA, Version, 0)
}

static void test_pack_GOPHER_VERSION_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_VERSION_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_VERSION_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (GOPHER_VERSION_ATTRIBUTE_TYPEW, 4)
    TEST_FIELD_SIZE  (GOPHER_VERSION_ATTRIBUTE_TYPEW, Version, 4)
    TEST_FIELD_ALIGN (GOPHER_VERSION_ATTRIBUTE_TYPEW, Version, 4)
    TEST_FIELD_OFFSET(GOPHER_VERSION_ATTRIBUTE_TYPEW, Version, 0)
}

static void test_pack_GOPHER_VIEW_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_VIEW_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (GOPHER_VIEW_ATTRIBUTE_TYPEA, 12)
    TEST_TYPE_ALIGN  (GOPHER_VIEW_ATTRIBUTE_TYPEA, 4)
    TEST_FIELD_SIZE  (GOPHER_VIEW_ATTRIBUTE_TYPEA, ContentType, 4)
    TEST_FIELD_ALIGN (GOPHER_VIEW_ATTRIBUTE_TYPEA, ContentType, 4)
    TEST_FIELD_OFFSET(GOPHER_VIEW_ATTRIBUTE_TYPEA, ContentType, 0)
    TEST_FIELD_SIZE  (GOPHER_VIEW_ATTRIBUTE_TYPEA, Language, 4)
    TEST_FIELD_ALIGN (GOPHER_VIEW_ATTRIBUTE_TYPEA, Language, 4)
    TEST_FIELD_OFFSET(GOPHER_VIEW_ATTRIBUTE_TYPEA, Language, 4)
    TEST_FIELD_SIZE  (GOPHER_VIEW_ATTRIBUTE_TYPEA, Size, 4)
    TEST_FIELD_ALIGN (GOPHER_VIEW_ATTRIBUTE_TYPEA, Size, 4)
    TEST_FIELD_OFFSET(GOPHER_VIEW_ATTRIBUTE_TYPEA, Size, 8)
}

static void test_pack_GOPHER_VIEW_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_VIEW_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (GOPHER_VIEW_ATTRIBUTE_TYPEW, 12)
    TEST_TYPE_ALIGN  (GOPHER_VIEW_ATTRIBUTE_TYPEW, 4)
    TEST_FIELD_SIZE  (GOPHER_VIEW_ATTRIBUTE_TYPEW, ContentType, 4)
    TEST_FIELD_ALIGN (GOPHER_VIEW_ATTRIBUTE_TYPEW, ContentType, 4)
    TEST_FIELD_OFFSET(GOPHER_VIEW_ATTRIBUTE_TYPEW, ContentType, 0)
    TEST_FIELD_SIZE  (GOPHER_VIEW_ATTRIBUTE_TYPEW, Language, 4)
    TEST_FIELD_ALIGN (GOPHER_VIEW_ATTRIBUTE_TYPEW, Language, 4)
    TEST_FIELD_OFFSET(GOPHER_VIEW_ATTRIBUTE_TYPEW, Language, 4)
    TEST_FIELD_SIZE  (GOPHER_VIEW_ATTRIBUTE_TYPEW, Size, 4)
    TEST_FIELD_ALIGN (GOPHER_VIEW_ATTRIBUTE_TYPEW, Size, 4)
    TEST_FIELD_OFFSET(GOPHER_VIEW_ATTRIBUTE_TYPEW, Size, 8)
}

static void test_pack_GROUPID(void)
{
    /* GROUPID */
    TEST_TYPE_SIZE   (GROUPID, 8)
    TEST_TYPE_ALIGN  (GROUPID, 8)
    TEST_TYPE_SIGNED(GROUPID)
}

static void test_pack_HINTERNET(void)
{
    /* HINTERNET */
    TEST_TYPE_SIZE   (HINTERNET, 4)
    TEST_TYPE_ALIGN  (HINTERNET, 4)
}

static void test_pack_HTTP_VERSION_INFO(void)
{
    /* HTTP_VERSION_INFO */
    TEST_TYPE_SIZE   (HTTP_VERSION_INFO, 8)
    TEST_TYPE_ALIGN  (HTTP_VERSION_INFO, 4)
    TEST_FIELD_SIZE  (HTTP_VERSION_INFO, dwMajorVersion, 4)
    TEST_FIELD_ALIGN (HTTP_VERSION_INFO, dwMajorVersion, 4)
    TEST_FIELD_OFFSET(HTTP_VERSION_INFO, dwMajorVersion, 0)
    TEST_FIELD_SIZE  (HTTP_VERSION_INFO, dwMinorVersion, 4)
    TEST_FIELD_ALIGN (HTTP_VERSION_INFO, dwMinorVersion, 4)
    TEST_FIELD_OFFSET(HTTP_VERSION_INFO, dwMinorVersion, 4)
}

static void test_pack_INTERNET_ASYNC_RESULT(void)
{
    /* INTERNET_ASYNC_RESULT */
    TEST_TYPE_SIZE   (INTERNET_ASYNC_RESULT, 8)
    TEST_TYPE_ALIGN  (INTERNET_ASYNC_RESULT, 4)
    TEST_FIELD_SIZE  (INTERNET_ASYNC_RESULT, dwResult, 4)
    TEST_FIELD_ALIGN (INTERNET_ASYNC_RESULT, dwResult, 4)
    TEST_FIELD_OFFSET(INTERNET_ASYNC_RESULT, dwResult, 0)
    TEST_FIELD_SIZE  (INTERNET_ASYNC_RESULT, dwError, 4)
    TEST_FIELD_ALIGN (INTERNET_ASYNC_RESULT, dwError, 4)
    TEST_FIELD_OFFSET(INTERNET_ASYNC_RESULT, dwError, 4)
}

static void test_pack_INTERNET_AUTH_NOTIFY_DATA(void)
{
    /* INTERNET_AUTH_NOTIFY_DATA */
    TEST_TYPE_SIZE   (INTERNET_AUTH_NOTIFY_DATA, 16)
    TEST_TYPE_ALIGN  (INTERNET_AUTH_NOTIFY_DATA, 4)
    TEST_FIELD_SIZE  (INTERNET_AUTH_NOTIFY_DATA, cbStruct, 4)
    TEST_FIELD_ALIGN (INTERNET_AUTH_NOTIFY_DATA, cbStruct, 4)
    TEST_FIELD_OFFSET(INTERNET_AUTH_NOTIFY_DATA, cbStruct, 0)
    TEST_FIELD_SIZE  (INTERNET_AUTH_NOTIFY_DATA, dwOptions, 4)
    TEST_FIELD_ALIGN (INTERNET_AUTH_NOTIFY_DATA, dwOptions, 4)
    TEST_FIELD_OFFSET(INTERNET_AUTH_NOTIFY_DATA, dwOptions, 4)
    TEST_FIELD_SIZE  (INTERNET_AUTH_NOTIFY_DATA, pfnNotify, 4)
    TEST_FIELD_ALIGN (INTERNET_AUTH_NOTIFY_DATA, pfnNotify, 4)
    TEST_FIELD_OFFSET(INTERNET_AUTH_NOTIFY_DATA, pfnNotify, 8)
    TEST_FIELD_SIZE  (INTERNET_AUTH_NOTIFY_DATA, dwContext, 4)
    TEST_FIELD_ALIGN (INTERNET_AUTH_NOTIFY_DATA, dwContext, 4)
    TEST_FIELD_OFFSET(INTERNET_AUTH_NOTIFY_DATA, dwContext, 12)
}

static void test_pack_INTERNET_BUFFERSA(void)
{
    /* INTERNET_BUFFERSA */
    TEST_TYPE_SIZE   (INTERNET_BUFFERSA, 40)
    TEST_TYPE_ALIGN  (INTERNET_BUFFERSA, 4)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, dwStructSize, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, dwStructSize, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, dwStructSize, 0)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, Next, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, Next, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, Next, 4)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, lpcszHeader, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, lpcszHeader, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, lpcszHeader, 8)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, dwHeadersLength, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, dwHeadersLength, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, dwHeadersLength, 12)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, dwHeadersTotal, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, dwHeadersTotal, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, dwHeadersTotal, 16)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, lpvBuffer, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, lpvBuffer, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, lpvBuffer, 20)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, dwBufferLength, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, dwBufferLength, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, dwBufferLength, 24)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, dwBufferTotal, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, dwBufferTotal, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, dwBufferTotal, 28)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, dwOffsetLow, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, dwOffsetLow, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, dwOffsetLow, 32)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSA, dwOffsetHigh, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSA, dwOffsetHigh, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSA, dwOffsetHigh, 36)
}

static void test_pack_INTERNET_BUFFERSW(void)
{
    /* INTERNET_BUFFERSW */
    TEST_TYPE_SIZE   (INTERNET_BUFFERSW, 40)
    TEST_TYPE_ALIGN  (INTERNET_BUFFERSW, 4)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, dwStructSize, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, dwStructSize, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, dwStructSize, 0)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, Next, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, Next, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, Next, 4)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, lpcszHeader, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, lpcszHeader, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, lpcszHeader, 8)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, dwHeadersLength, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, dwHeadersLength, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, dwHeadersLength, 12)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, dwHeadersTotal, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, dwHeadersTotal, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, dwHeadersTotal, 16)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, lpvBuffer, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, lpvBuffer, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, lpvBuffer, 20)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, dwBufferLength, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, dwBufferLength, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, dwBufferLength, 24)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, dwBufferTotal, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, dwBufferTotal, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, dwBufferTotal, 28)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, dwOffsetLow, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, dwOffsetLow, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, dwOffsetLow, 32)
    TEST_FIELD_SIZE  (INTERNET_BUFFERSW, dwOffsetHigh, 4)
    TEST_FIELD_ALIGN (INTERNET_BUFFERSW, dwOffsetHigh, 4)
    TEST_FIELD_OFFSET(INTERNET_BUFFERSW, dwOffsetHigh, 36)
}

static void test_pack_INTERNET_CACHE_ENTRY_INFOA(void)
{
    /* INTERNET_CACHE_ENTRY_INFOA */
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, dwStructSize, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, dwStructSize, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, dwStructSize, 0)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, lpszSourceUrlName, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, lpszSourceUrlName, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, lpszSourceUrlName, 4)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, lpszLocalFileName, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, lpszLocalFileName, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, lpszLocalFileName, 8)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, CacheEntryType, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, CacheEntryType, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, CacheEntryType, 12)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, dwUseCount, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, dwUseCount, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, dwUseCount, 16)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, dwHitRate, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, dwHitRate, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, dwHitRate, 20)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, dwSizeLow, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, dwSizeLow, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, dwSizeLow, 24)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, dwSizeHigh, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, dwSizeHigh, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, dwSizeHigh, 28)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, LastModifiedTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, LastModifiedTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, LastModifiedTime, 32)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, ExpireTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, ExpireTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, ExpireTime, 40)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, LastAccessTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, LastAccessTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, LastAccessTime, 48)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, LastSyncTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, LastSyncTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, LastSyncTime, 56)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, lpHeaderInfo, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, lpHeaderInfo, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, lpHeaderInfo, 64)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, dwHeaderInfoSize, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, dwHeaderInfoSize, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, dwHeaderInfoSize, 68)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOA, lpszFileExtension, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOA, lpszFileExtension, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOA, lpszFileExtension, 72)
}

static void test_pack_INTERNET_CACHE_ENTRY_INFOW(void)
{
    /* INTERNET_CACHE_ENTRY_INFOW */
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, dwStructSize, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, dwStructSize, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, dwStructSize, 0)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, lpszSourceUrlName, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, lpszSourceUrlName, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, lpszSourceUrlName, 4)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, lpszLocalFileName, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, lpszLocalFileName, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, lpszLocalFileName, 8)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, CacheEntryType, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, CacheEntryType, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, CacheEntryType, 12)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, dwUseCount, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, dwUseCount, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, dwUseCount, 16)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, dwHitRate, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, dwHitRate, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, dwHitRate, 20)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, dwSizeLow, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, dwSizeLow, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, dwSizeLow, 24)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, dwSizeHigh, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, dwSizeHigh, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, dwSizeHigh, 28)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, LastModifiedTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, LastModifiedTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, LastModifiedTime, 32)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, ExpireTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, ExpireTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, ExpireTime, 40)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, LastAccessTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, LastAccessTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, LastAccessTime, 48)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, LastSyncTime, 8)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, LastSyncTime, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, LastSyncTime, 56)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, lpHeaderInfo, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, lpHeaderInfo, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, lpHeaderInfo, 64)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, dwHeaderInfoSize, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, dwHeaderInfoSize, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, dwHeaderInfoSize, 68)
    TEST_FIELD_SIZE  (INTERNET_CACHE_ENTRY_INFOW, lpszFileExtension, 4)
    TEST_FIELD_ALIGN (INTERNET_CACHE_ENTRY_INFOW, lpszFileExtension, 4)
    TEST_FIELD_OFFSET(INTERNET_CACHE_ENTRY_INFOW, lpszFileExtension, 72)
}

static void test_pack_INTERNET_CERTIFICATE_INFOA(void)
{
    /* INTERNET_CERTIFICATE_INFOA */
    TEST_TYPE_SIZE   (INTERNET_CERTIFICATE_INFOA, 40)
    TEST_TYPE_ALIGN  (INTERNET_CERTIFICATE_INFOA, 4)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, ftExpiry, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, ftExpiry, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, ftExpiry, 0)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, ftStart, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, ftStart, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, ftStart, 8)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, lpszSubjectInfo, 4)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, lpszSubjectInfo, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, lpszSubjectInfo, 16)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, lpszIssuerInfo, 4)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, lpszIssuerInfo, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, lpszIssuerInfo, 20)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, lpszProtocolName, 4)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, lpszProtocolName, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, lpszProtocolName, 24)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, lpszSignatureAlgName, 4)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, lpszSignatureAlgName, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, lpszSignatureAlgName, 28)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, lpszEncryptionAlgName, 4)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, lpszEncryptionAlgName, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, lpszEncryptionAlgName, 32)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOA, dwKeySize, 4)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOA, dwKeySize, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOA, dwKeySize, 36)
}

static void test_pack_INTERNET_CERTIFICATE_INFOW(void)
{
    /* INTERNET_CERTIFICATE_INFOW */
    TEST_TYPE_SIZE   (INTERNET_CERTIFICATE_INFOW, 40)
    TEST_TYPE_ALIGN  (INTERNET_CERTIFICATE_INFOW, 4)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, ftExpiry, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, ftExpiry, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, ftExpiry, 0)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, ftStart, 8)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, ftStart, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, ftStart, 8)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, lpszSubjectInfo, 4)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, lpszSubjectInfo, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, lpszSubjectInfo, 16)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, lpszIssuerInfo, 4)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, lpszIssuerInfo, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, lpszIssuerInfo, 20)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, lpszProtocolName, 4)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, lpszProtocolName, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, lpszProtocolName, 24)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, lpszSignatureAlgName, 4)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, lpszSignatureAlgName, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, lpszSignatureAlgName, 28)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, lpszEncryptionAlgName, 4)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, lpszEncryptionAlgName, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, lpszEncryptionAlgName, 32)
    TEST_FIELD_SIZE  (INTERNET_CERTIFICATE_INFOW, dwKeySize, 4)
    TEST_FIELD_ALIGN (INTERNET_CERTIFICATE_INFOW, dwKeySize, 4)
    TEST_FIELD_OFFSET(INTERNET_CERTIFICATE_INFOW, dwKeySize, 36)
}

static void test_pack_INTERNET_CONNECTED_INFO(void)
{
    /* INTERNET_CONNECTED_INFO */
    TEST_TYPE_SIZE   (INTERNET_CONNECTED_INFO, 8)
    TEST_TYPE_ALIGN  (INTERNET_CONNECTED_INFO, 4)
    TEST_FIELD_SIZE  (INTERNET_CONNECTED_INFO, dwConnectedState, 4)
    TEST_FIELD_ALIGN (INTERNET_CONNECTED_INFO, dwConnectedState, 4)
    TEST_FIELD_OFFSET(INTERNET_CONNECTED_INFO, dwConnectedState, 0)
    TEST_FIELD_SIZE  (INTERNET_CONNECTED_INFO, dwFlags, 4)
    TEST_FIELD_ALIGN (INTERNET_CONNECTED_INFO, dwFlags, 4)
    TEST_FIELD_OFFSET(INTERNET_CONNECTED_INFO, dwFlags, 4)
}

static void test_pack_INTERNET_PORT(void)
{
    /* INTERNET_PORT */
    TEST_TYPE_SIZE   (INTERNET_PORT, 2)
    TEST_TYPE_ALIGN  (INTERNET_PORT, 2)
    TEST_TYPE_UNSIGNED(INTERNET_PORT)
}

static void test_pack_INTERNET_PROXY_INFOA(void)
{
    /* INTERNET_PROXY_INFOA */
    TEST_TYPE_SIZE   (INTERNET_PROXY_INFOA, 12)
    TEST_TYPE_ALIGN  (INTERNET_PROXY_INFOA, 4)
    TEST_FIELD_SIZE  (INTERNET_PROXY_INFOA, dwAccessType, 4)
    TEST_FIELD_ALIGN (INTERNET_PROXY_INFOA, dwAccessType, 4)
    TEST_FIELD_OFFSET(INTERNET_PROXY_INFOA, dwAccessType, 0)
    TEST_FIELD_SIZE  (INTERNET_PROXY_INFOA, lpszProxy, 4)
    TEST_FIELD_ALIGN (INTERNET_PROXY_INFOA, lpszProxy, 4)
    TEST_FIELD_OFFSET(INTERNET_PROXY_INFOA, lpszProxy, 4)
    TEST_FIELD_SIZE  (INTERNET_PROXY_INFOA, lpszProxyBypass, 4)
    TEST_FIELD_ALIGN (INTERNET_PROXY_INFOA, lpszProxyBypass, 4)
    TEST_FIELD_OFFSET(INTERNET_PROXY_INFOA, lpszProxyBypass, 8)
}

static void test_pack_INTERNET_PROXY_INFOW(void)
{
    /* INTERNET_PROXY_INFOW */
    TEST_TYPE_SIZE   (INTERNET_PROXY_INFOW, 12)
    TEST_TYPE_ALIGN  (INTERNET_PROXY_INFOW, 4)
    TEST_FIELD_SIZE  (INTERNET_PROXY_INFOW, dwAccessType, 4)
    TEST_FIELD_ALIGN (INTERNET_PROXY_INFOW, dwAccessType, 4)
    TEST_FIELD_OFFSET(INTERNET_PROXY_INFOW, dwAccessType, 0)
    TEST_FIELD_SIZE  (INTERNET_PROXY_INFOW, lpszProxy, 4)
    TEST_FIELD_ALIGN (INTERNET_PROXY_INFOW, lpszProxy, 4)
    TEST_FIELD_OFFSET(INTERNET_PROXY_INFOW, lpszProxy, 4)
    TEST_FIELD_SIZE  (INTERNET_PROXY_INFOW, lpszProxyBypass, 4)
    TEST_FIELD_ALIGN (INTERNET_PROXY_INFOW, lpszProxyBypass, 4)
    TEST_FIELD_OFFSET(INTERNET_PROXY_INFOW, lpszProxyBypass, 8)
}

static void test_pack_INTERNET_STATUS_CALLBACK(void)
{
    /* INTERNET_STATUS_CALLBACK */
    TEST_TYPE_SIZE   (INTERNET_STATUS_CALLBACK, 4)
    TEST_TYPE_ALIGN  (INTERNET_STATUS_CALLBACK, 4)
}

static void test_pack_INTERNET_VERSION_INFO(void)
{
    /* INTERNET_VERSION_INFO */
    TEST_TYPE_SIZE   (INTERNET_VERSION_INFO, 8)
    TEST_TYPE_ALIGN  (INTERNET_VERSION_INFO, 4)
    TEST_FIELD_SIZE  (INTERNET_VERSION_INFO, dwMajorVersion, 4)
    TEST_FIELD_ALIGN (INTERNET_VERSION_INFO, dwMajorVersion, 4)
    TEST_FIELD_OFFSET(INTERNET_VERSION_INFO, dwMajorVersion, 0)
    TEST_FIELD_SIZE  (INTERNET_VERSION_INFO, dwMinorVersion, 4)
    TEST_FIELD_ALIGN (INTERNET_VERSION_INFO, dwMinorVersion, 4)
    TEST_FIELD_OFFSET(INTERNET_VERSION_INFO, dwMinorVersion, 4)
}

static void test_pack_LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_SIZE (LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_ALIGN(LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 4)
}

static void test_pack_LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_SIZE (LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_ALIGN(LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 4)
}

static void test_pack_LPGOPHER_ADMIN_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ADMIN_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_ADMIN_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_ADMIN_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_SIZE (LPGOPHER_ADMIN_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_ALIGN(LPGOPHER_ADMIN_ATTRIBUTE_TYPEA, 4)
}

static void test_pack_LPGOPHER_ADMIN_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ADMIN_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_ADMIN_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_ADMIN_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_SIZE (LPGOPHER_ADMIN_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_ALIGN(LPGOPHER_ADMIN_ATTRIBUTE_TYPEW, 4)
}

static void test_pack_LPGOPHER_ASK_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ASK_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_ASK_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_ASK_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_SIZE (LPGOPHER_ASK_ATTRIBUTE_TYPEA, 8)
    TEST_TARGET_ALIGN(LPGOPHER_ASK_ATTRIBUTE_TYPEA, 4)
}

static void test_pack_LPGOPHER_ASK_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ASK_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_ASK_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_ASK_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_SIZE (LPGOPHER_ASK_ATTRIBUTE_TYPEW, 8)
    TEST_TARGET_ALIGN(LPGOPHER_ASK_ATTRIBUTE_TYPEW, 4)
}

static void test_pack_LPGOPHER_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_ATTRIBUTE_TYPEA, 4)
}

static void test_pack_LPGOPHER_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_ATTRIBUTE_TYPEW, 4)
}

static void test_pack_LPGOPHER_FIND_DATAA(void)
{
    /* LPGOPHER_FIND_DATAA */
    TEST_TYPE_SIZE   (LPGOPHER_FIND_DATAA, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_FIND_DATAA, 4)
    TEST_TARGET_SIZE (LPGOPHER_FIND_DATAA, 808)
    TEST_TARGET_ALIGN(LPGOPHER_FIND_DATAA, 4)
}

static void test_pack_LPGOPHER_FIND_DATAW(void)
{
    /* LPGOPHER_FIND_DATAW */
    TEST_TYPE_SIZE   (LPGOPHER_FIND_DATAW, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_FIND_DATAW, 4)
    TEST_TARGET_SIZE (LPGOPHER_FIND_DATAW, 1588)
    TEST_TARGET_ALIGN(LPGOPHER_FIND_DATAW, 4)
}

static void test_pack_LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_SIZE (LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 24)
    TEST_TARGET_ALIGN(LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 4)
}

static void test_pack_LPGOPHER_LOCATION_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_LOCATION_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_LOCATION_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_LOCATION_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_SIZE (LPGOPHER_LOCATION_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_ALIGN(LPGOPHER_LOCATION_ATTRIBUTE_TYPEA, 4)
}

static void test_pack_LPGOPHER_LOCATION_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_LOCATION_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_LOCATION_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_LOCATION_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_SIZE (LPGOPHER_LOCATION_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_ALIGN(LPGOPHER_LOCATION_ATTRIBUTE_TYPEW, 4)
}

static void test_pack_LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_SIZE (LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE, 8)
    TEST_TARGET_ALIGN(LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE, 4)
}

static void test_pack_LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_SIZE (LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_ALIGN(LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 4)
}

static void test_pack_LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_SIZE (LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_ALIGN(LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 4)
}

static void test_pack_LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_SIZE (LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_ALIGN(LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA, 4)
}

static void test_pack_LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_SIZE (LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_ALIGN(LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW, 4)
}

static void test_pack_LPGOPHER_SCORE_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_SCORE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (LPGOPHER_SCORE_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_SCORE_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_SIZE (LPGOPHER_SCORE_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_ALIGN(LPGOPHER_SCORE_ATTRIBUTE_TYPE, 4)
}

static void test_pack_LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_SIZE (LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 8)
    TEST_TARGET_ALIGN(LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 4)
}

static void test_pack_LPGOPHER_SITE_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_SITE_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_SITE_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_SITE_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_SIZE (LPGOPHER_SITE_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_ALIGN(LPGOPHER_SITE_ATTRIBUTE_TYPEA, 4)
}

static void test_pack_LPGOPHER_SITE_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_SITE_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_SITE_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_SITE_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_SIZE (LPGOPHER_SITE_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_ALIGN(LPGOPHER_SITE_ATTRIBUTE_TYPEW, 4)
}

static void test_pack_LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_SIZE (LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_ALIGN(LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE, 4)
}

static void test_pack_LPGOPHER_TTL_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_TTL_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (LPGOPHER_TTL_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_TTL_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_SIZE (LPGOPHER_TTL_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_ALIGN(LPGOPHER_TTL_ATTRIBUTE_TYPE, 4)
}

static void test_pack_LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_SIZE (LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_ALIGN(LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 4)
}

static void test_pack_LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_SIZE (LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_ALIGN(LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 4)
}

static void test_pack_LPGOPHER_VERONICA_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_VERONICA_ATTRIBUTE_TYPE */
    TEST_TYPE_SIZE   (LPGOPHER_VERONICA_ATTRIBUTE_TYPE, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_VERONICA_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_SIZE (LPGOPHER_VERONICA_ATTRIBUTE_TYPE, 4)
    TEST_TARGET_ALIGN(LPGOPHER_VERONICA_ATTRIBUTE_TYPE, 4)
}

static void test_pack_LPGOPHER_VERSION_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_VERSION_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_VERSION_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_VERSION_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_SIZE (LPGOPHER_VERSION_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_ALIGN(LPGOPHER_VERSION_ATTRIBUTE_TYPEA, 4)
}

static void test_pack_LPGOPHER_VERSION_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_VERSION_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_VERSION_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_VERSION_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_SIZE (LPGOPHER_VERSION_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_ALIGN(LPGOPHER_VERSION_ATTRIBUTE_TYPEW, 4)
}

static void test_pack_LPGOPHER_VIEW_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_VIEW_ATTRIBUTE_TYPEA */
    TEST_TYPE_SIZE   (LPGOPHER_VIEW_ATTRIBUTE_TYPEA, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_VIEW_ATTRIBUTE_TYPEA, 4)
    TEST_TARGET_SIZE (LPGOPHER_VIEW_ATTRIBUTE_TYPEA, 12)
    TEST_TARGET_ALIGN(LPGOPHER_VIEW_ATTRIBUTE_TYPEA, 4)
}

static void test_pack_LPGOPHER_VIEW_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_VIEW_ATTRIBUTE_TYPEW */
    TEST_TYPE_SIZE   (LPGOPHER_VIEW_ATTRIBUTE_TYPEW, 4)
    TEST_TYPE_ALIGN  (LPGOPHER_VIEW_ATTRIBUTE_TYPEW, 4)
    TEST_TARGET_SIZE (LPGOPHER_VIEW_ATTRIBUTE_TYPEW, 12)
    TEST_TARGET_ALIGN(LPGOPHER_VIEW_ATTRIBUTE_TYPEW, 4)
}

static void test_pack_LPHINTERNET(void)
{
    /* LPHINTERNET */
    TEST_TYPE_SIZE   (LPHINTERNET, 4)
    TEST_TYPE_ALIGN  (LPHINTERNET, 4)
    TEST_TARGET_SIZE (LPHINTERNET, 4)
    TEST_TARGET_ALIGN(LPHINTERNET, 4)
}

static void test_pack_LPHTTP_VERSION_INFO(void)
{
    /* LPHTTP_VERSION_INFO */
    TEST_TYPE_SIZE   (LPHTTP_VERSION_INFO, 4)
    TEST_TYPE_ALIGN  (LPHTTP_VERSION_INFO, 4)
    TEST_TARGET_SIZE (LPHTTP_VERSION_INFO, 8)
    TEST_TARGET_ALIGN(LPHTTP_VERSION_INFO, 4)
}

static void test_pack_LPINTERNET_ASYNC_RESULT(void)
{
    /* LPINTERNET_ASYNC_RESULT */
    TEST_TYPE_SIZE   (LPINTERNET_ASYNC_RESULT, 4)
    TEST_TYPE_ALIGN  (LPINTERNET_ASYNC_RESULT, 4)
    TEST_TARGET_SIZE (LPINTERNET_ASYNC_RESULT, 8)
    TEST_TARGET_ALIGN(LPINTERNET_ASYNC_RESULT, 4)
}

static void test_pack_LPINTERNET_BUFFERSA(void)
{
    /* LPINTERNET_BUFFERSA */
    TEST_TYPE_SIZE   (LPINTERNET_BUFFERSA, 4)
    TEST_TYPE_ALIGN  (LPINTERNET_BUFFERSA, 4)
    TEST_TARGET_SIZE (LPINTERNET_BUFFERSA, 40)
    TEST_TARGET_ALIGN(LPINTERNET_BUFFERSA, 4)
}

static void test_pack_LPINTERNET_BUFFERSW(void)
{
    /* LPINTERNET_BUFFERSW */
    TEST_TYPE_SIZE   (LPINTERNET_BUFFERSW, 4)
    TEST_TYPE_ALIGN  (LPINTERNET_BUFFERSW, 4)
    TEST_TARGET_SIZE (LPINTERNET_BUFFERSW, 40)
    TEST_TARGET_ALIGN(LPINTERNET_BUFFERSW, 4)
}

static void test_pack_LPINTERNET_CACHE_ENTRY_INFOA(void)
{
    /* LPINTERNET_CACHE_ENTRY_INFOA */
    TEST_TYPE_SIZE   (LPINTERNET_CACHE_ENTRY_INFOA, 4)
    TEST_TYPE_ALIGN  (LPINTERNET_CACHE_ENTRY_INFOA, 4)
}

static void test_pack_LPINTERNET_CACHE_ENTRY_INFOW(void)
{
    /* LPINTERNET_CACHE_ENTRY_INFOW */
    TEST_TYPE_SIZE   (LPINTERNET_CACHE_ENTRY_INFOW, 4)
    TEST_TYPE_ALIGN  (LPINTERNET_CACHE_ENTRY_INFOW, 4)
}

static void test_pack_LPINTERNET_CERTIFICATE_INFOA(void)
{
    /* LPINTERNET_CERTIFICATE_INFOA */
    TEST_TYPE_SIZE   (LPINTERNET_CERTIFICATE_INFOA, 4)
    TEST_TYPE_ALIGN  (LPINTERNET_CERTIFICATE_INFOA, 4)
    TEST_TARGET_SIZE (LPINTERNET_CERTIFICATE_INFOA, 40)
    TEST_TARGET_ALIGN(LPINTERNET_CERTIFICATE_INFOA, 4)
}

static void test_pack_LPINTERNET_CERTIFICATE_INFOW(void)
{
    /* LPINTERNET_CERTIFICATE_INFOW */
    TEST_TYPE_SIZE   (LPINTERNET_CERTIFICATE_INFOW, 4)
    TEST_TYPE_ALIGN  (LPINTERNET_CERTIFICATE_INFOW, 4)
    TEST_TARGET_SIZE (LPINTERNET_CERTIFICATE_INFOW, 40)
    TEST_TARGET_ALIGN(LPINTERNET_CERTIFICATE_INFOW, 4)
}

static void test_pack_LPINTERNET_CONNECTED_INFO(void)
{
    /* LPINTERNET_CONNECTED_INFO */
    TEST_TYPE_SIZE   (LPINTERNET_CONNECTED_INFO, 4)
    TEST_TYPE_ALIGN  (LPINTERNET_CONNECTED_INFO, 4)
    TEST_TARGET_SIZE (LPINTERNET_CONNECTED_INFO, 8)
    TEST_TARGET_ALIGN(LPINTERNET_CONNECTED_INFO, 4)
}

static void test_pack_LPINTERNET_PORT(void)
{
    /* LPINTERNET_PORT */
    TEST_TYPE_SIZE   (LPINTERNET_PORT, 4)
    TEST_TYPE_ALIGN  (LPINTERNET_PORT, 4)
    TEST_TARGET_SIZE (LPINTERNET_PORT, 2)
    TEST_TARGET_ALIGN(LPINTERNET_PORT, 2)
}

static void test_pack_LPINTERNET_PROXY_INFOA(void)
{
    /* LPINTERNET_PROXY_INFOA */
    TEST_TYPE_SIZE   (LPINTERNET_PROXY_INFOA, 4)
    TEST_TYPE_ALIGN  (LPINTERNET_PROXY_INFOA, 4)
    TEST_TARGET_SIZE (LPINTERNET_PROXY_INFOA, 12)
    TEST_TARGET_ALIGN(LPINTERNET_PROXY_INFOA, 4)
}

static void test_pack_LPINTERNET_PROXY_INFOW(void)
{
    /* LPINTERNET_PROXY_INFOW */
    TEST_TYPE_SIZE   (LPINTERNET_PROXY_INFOW, 4)
    TEST_TYPE_ALIGN  (LPINTERNET_PROXY_INFOW, 4)
    TEST_TARGET_SIZE (LPINTERNET_PROXY_INFOW, 12)
    TEST_TARGET_ALIGN(LPINTERNET_PROXY_INFOW, 4)
}

static void test_pack_LPINTERNET_STATUS_CALLBACK(void)
{
    /* LPINTERNET_STATUS_CALLBACK */
    TEST_TYPE_SIZE   (LPINTERNET_STATUS_CALLBACK, 4)
    TEST_TYPE_ALIGN  (LPINTERNET_STATUS_CALLBACK, 4)
    TEST_TARGET_SIZE (LPINTERNET_STATUS_CALLBACK, 4)
    TEST_TARGET_ALIGN(LPINTERNET_STATUS_CALLBACK, 4)
}

static void test_pack_LPINTERNET_VERSION_INFO(void)
{
    /* LPINTERNET_VERSION_INFO */
    TEST_TYPE_SIZE   (LPINTERNET_VERSION_INFO, 4)
    TEST_TYPE_ALIGN  (LPINTERNET_VERSION_INFO, 4)
    TEST_TARGET_SIZE (LPINTERNET_VERSION_INFO, 8)
    TEST_TARGET_ALIGN(LPINTERNET_VERSION_INFO, 4)
}

static void test_pack_LPURL_COMPONENTSA(void)
{
    /* LPURL_COMPONENTSA */
    TEST_TYPE_SIZE   (LPURL_COMPONENTSA, 4)
    TEST_TYPE_ALIGN  (LPURL_COMPONENTSA, 4)
}

static void test_pack_LPURL_COMPONENTSW(void)
{
    /* LPURL_COMPONENTSW */
    TEST_TYPE_SIZE   (LPURL_COMPONENTSW, 4)
    TEST_TYPE_ALIGN  (LPURL_COMPONENTSW, 4)
}

static void test_pack_PFN_AUTH_NOTIFY(void)
{
    /* PFN_AUTH_NOTIFY */
    TEST_TYPE_SIZE   (PFN_AUTH_NOTIFY, 4)
    TEST_TYPE_ALIGN  (PFN_AUTH_NOTIFY, 4)
}

static void test_pack_PFN_DIAL_HANDLER(void)
{
    /* PFN_DIAL_HANDLER */
    TEST_TYPE_SIZE   (PFN_DIAL_HANDLER, 4)
    TEST_TYPE_ALIGN  (PFN_DIAL_HANDLER, 4)
}

static void test_pack_URL_COMPONENTSA(void)
{
    /* URL_COMPONENTSA */
    TEST_FIELD_SIZE  (URL_COMPONENTSA, dwStructSize, 4)
    TEST_FIELD_ALIGN (URL_COMPONENTSA, dwStructSize, 4)
    TEST_FIELD_OFFSET(URL_COMPONENTSA, dwStructSize, 0)
    TEST_FIELD_SIZE  (URL_COMPONENTSA, lpszScheme, 4)
    TEST_FIELD_ALIGN (URL_COMPONENTSA, lpszScheme, 4)
    TEST_FIELD_OFFSET(URL_COMPONENTSA, lpszScheme, 4)
    TEST_FIELD_SIZE  (URL_COMPONENTSA, dwSchemeLength, 4)
    TEST_FIELD_ALIGN (URL_COMPONENTSA, dwSchemeLength, 4)
    TEST_FIELD_OFFSET(URL_COMPONENTSA, dwSchemeLength, 8)
}

static void test_pack_URL_COMPONENTSW(void)
{
    /* URL_COMPONENTSW */
    TEST_FIELD_SIZE  (URL_COMPONENTSW, dwStructSize, 4)
    TEST_FIELD_ALIGN (URL_COMPONENTSW, dwStructSize, 4)
    TEST_FIELD_OFFSET(URL_COMPONENTSW, dwStructSize, 0)
    TEST_FIELD_SIZE  (URL_COMPONENTSW, lpszScheme, 4)
    TEST_FIELD_ALIGN (URL_COMPONENTSW, lpszScheme, 4)
    TEST_FIELD_OFFSET(URL_COMPONENTSW, lpszScheme, 4)
    TEST_FIELD_SIZE  (URL_COMPONENTSW, dwSchemeLength, 4)
    TEST_FIELD_ALIGN (URL_COMPONENTSW, dwSchemeLength, 4)
    TEST_FIELD_OFFSET(URL_COMPONENTSW, dwSchemeLength, 8)
}

#endif /* _WIN64 */

static void test_pack(void)
{
    test_pack_GOPHER_ABSTRACT_ATTRIBUTE_TYPEA();
    test_pack_GOPHER_ABSTRACT_ATTRIBUTE_TYPEW();
    test_pack_GOPHER_ADMIN_ATTRIBUTE_TYPEA();
    test_pack_GOPHER_ADMIN_ATTRIBUTE_TYPEW();
    test_pack_GOPHER_ASK_ATTRIBUTE_TYPEA();
    test_pack_GOPHER_ASK_ATTRIBUTE_TYPEW();
    test_pack_GOPHER_ATTRIBUTE_ENUMERATORA();
    test_pack_GOPHER_ATTRIBUTE_ENUMERATORW();
    test_pack_GOPHER_ATTRIBUTE_TYPEA();
    test_pack_GOPHER_ATTRIBUTE_TYPEW();
    test_pack_GOPHER_FIND_DATAA();
    test_pack_GOPHER_FIND_DATAW();
    test_pack_GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE();
    test_pack_GOPHER_LOCATION_ATTRIBUTE_TYPEA();
    test_pack_GOPHER_LOCATION_ATTRIBUTE_TYPEW();
    test_pack_GOPHER_MOD_DATE_ATTRIBUTE_TYPE();
    test_pack_GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA();
    test_pack_GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW();
    test_pack_GOPHER_PROVIDER_ATTRIBUTE_TYPEA();
    test_pack_GOPHER_PROVIDER_ATTRIBUTE_TYPEW();
    test_pack_GOPHER_SCORE_ATTRIBUTE_TYPE();
    test_pack_GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE();
    test_pack_GOPHER_SITE_ATTRIBUTE_TYPEA();
    test_pack_GOPHER_SITE_ATTRIBUTE_TYPEW();
    test_pack_GOPHER_TIMEZONE_ATTRIBUTE_TYPE();
    test_pack_GOPHER_TTL_ATTRIBUTE_TYPE();
    test_pack_GOPHER_UNKNOWN_ATTRIBUTE_TYPEA();
    test_pack_GOPHER_UNKNOWN_ATTRIBUTE_TYPEW();
    test_pack_GOPHER_VERONICA_ATTRIBUTE_TYPE();
    test_pack_GOPHER_VERSION_ATTRIBUTE_TYPEA();
    test_pack_GOPHER_VERSION_ATTRIBUTE_TYPEW();
    test_pack_GOPHER_VIEW_ATTRIBUTE_TYPEA();
    test_pack_GOPHER_VIEW_ATTRIBUTE_TYPEW();
    test_pack_GROUPID();
    test_pack_HINTERNET();
    test_pack_HTTP_VERSION_INFO();
    test_pack_INTERNET_ASYNC_RESULT();
    test_pack_INTERNET_AUTH_NOTIFY_DATA();
    test_pack_INTERNET_BUFFERSA();
    test_pack_INTERNET_BUFFERSW();
    test_pack_INTERNET_CACHE_ENTRY_INFOA();
    test_pack_INTERNET_CACHE_ENTRY_INFOW();
    test_pack_INTERNET_CERTIFICATE_INFOA();
    test_pack_INTERNET_CERTIFICATE_INFOW();
    test_pack_INTERNET_CONNECTED_INFO();
    test_pack_INTERNET_PORT();
    test_pack_INTERNET_PROXY_INFOA();
    test_pack_INTERNET_PROXY_INFOW();
    test_pack_INTERNET_STATUS_CALLBACK();
    test_pack_INTERNET_VERSION_INFO();
    test_pack_LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA();
    test_pack_LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW();
    test_pack_LPGOPHER_ADMIN_ATTRIBUTE_TYPEA();
    test_pack_LPGOPHER_ADMIN_ATTRIBUTE_TYPEW();
    test_pack_LPGOPHER_ASK_ATTRIBUTE_TYPEA();
    test_pack_LPGOPHER_ASK_ATTRIBUTE_TYPEW();
    test_pack_LPGOPHER_ATTRIBUTE_TYPEA();
    test_pack_LPGOPHER_ATTRIBUTE_TYPEW();
    test_pack_LPGOPHER_FIND_DATAA();
    test_pack_LPGOPHER_FIND_DATAW();
    test_pack_LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE();
    test_pack_LPGOPHER_LOCATION_ATTRIBUTE_TYPEA();
    test_pack_LPGOPHER_LOCATION_ATTRIBUTE_TYPEW();
    test_pack_LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE();
    test_pack_LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA();
    test_pack_LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW();
    test_pack_LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA();
    test_pack_LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW();
    test_pack_LPGOPHER_SCORE_ATTRIBUTE_TYPE();
    test_pack_LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE();
    test_pack_LPGOPHER_SITE_ATTRIBUTE_TYPEA();
    test_pack_LPGOPHER_SITE_ATTRIBUTE_TYPEW();
    test_pack_LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE();
    test_pack_LPGOPHER_TTL_ATTRIBUTE_TYPE();
    test_pack_LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA();
    test_pack_LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW();
    test_pack_LPGOPHER_VERONICA_ATTRIBUTE_TYPE();
    test_pack_LPGOPHER_VERSION_ATTRIBUTE_TYPEA();
    test_pack_LPGOPHER_VERSION_ATTRIBUTE_TYPEW();
    test_pack_LPGOPHER_VIEW_ATTRIBUTE_TYPEA();
    test_pack_LPGOPHER_VIEW_ATTRIBUTE_TYPEW();
    test_pack_LPHINTERNET();
    test_pack_LPHTTP_VERSION_INFO();
    test_pack_LPINTERNET_ASYNC_RESULT();
    test_pack_LPINTERNET_BUFFERSA();
    test_pack_LPINTERNET_BUFFERSW();
    test_pack_LPINTERNET_CACHE_ENTRY_INFOA();
    test_pack_LPINTERNET_CACHE_ENTRY_INFOW();
    test_pack_LPINTERNET_CERTIFICATE_INFOA();
    test_pack_LPINTERNET_CERTIFICATE_INFOW();
    test_pack_LPINTERNET_CONNECTED_INFO();
    test_pack_LPINTERNET_PORT();
    test_pack_LPINTERNET_PROXY_INFOA();
    test_pack_LPINTERNET_PROXY_INFOW();
    test_pack_LPINTERNET_STATUS_CALLBACK();
    test_pack_LPINTERNET_VERSION_INFO();
    test_pack_LPURL_COMPONENTSA();
    test_pack_LPURL_COMPONENTSW();
    test_pack_PFN_AUTH_NOTIFY();
    test_pack_PFN_DIAL_HANDLER();
    test_pack_URL_COMPONENTSA();
    test_pack_URL_COMPONENTSW();
}

START_TEST(generated)
{
    test_pack();
}
