/* 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
 */

#ifdef _WIN64

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

#else

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

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

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

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

#endif

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


static void test_pack_GOPHER_ABSTRACT_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ABSTRACT_ATTRIBUTE_TYPEA (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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 (pack 4) */
    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)
}

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)
{
#ifdef _WIN64
    ok(0, "The type size / alignment tests don't support Win64 yet\n");
#else
    test_pack();
#endif
}
