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

/*
 * Unit tests for data structure packing
 */

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

#define WINE_NOWINSOCK

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

static void test_pack_GOPHER_ABSTRACT_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ABSTRACT_ATTRIBUTE_TYPEA (pack 4) */
    TEST_TYPE(GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 8, 4);
    TEST_FIELD(GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, LPCSTR, ShortAbstract, 0, 4, 4);
    TEST_FIELD(GOPHER_ABSTRACT_ATTRIBUTE_TYPEA, LPCSTR, AbstractFile, 4, 4, 4);
}

static void test_pack_GOPHER_ABSTRACT_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ABSTRACT_ATTRIBUTE_TYPEW (pack 4) */
    TEST_TYPE(GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 8, 4);
    TEST_FIELD(GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, LPCWSTR, ShortAbstract, 0, 4, 4);
    TEST_FIELD(GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, LPCWSTR, AbstractFile, 4, 4, 4);
}

static void test_pack_GOPHER_ADMIN_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ADMIN_ATTRIBUTE_TYPEA (pack 4) */
    TEST_TYPE(GOPHER_ADMIN_ATTRIBUTE_TYPEA, 8, 4);
    TEST_FIELD(GOPHER_ADMIN_ATTRIBUTE_TYPEA, LPCSTR, Comment, 0, 4, 4);
    TEST_FIELD(GOPHER_ADMIN_ATTRIBUTE_TYPEA, LPCSTR, EmailAddress, 4, 4, 4);
}

static void test_pack_GOPHER_ADMIN_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ADMIN_ATTRIBUTE_TYPEW (pack 4) */
    TEST_TYPE(GOPHER_ADMIN_ATTRIBUTE_TYPEW, 8, 4);
    TEST_FIELD(GOPHER_ADMIN_ATTRIBUTE_TYPEW, LPCWSTR, Comment, 0, 4, 4);
    TEST_FIELD(GOPHER_ADMIN_ATTRIBUTE_TYPEW, LPCWSTR, EmailAddress, 4, 4, 4);
}

static void test_pack_GOPHER_ASK_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ASK_ATTRIBUTE_TYPEA (pack 4) */
    TEST_TYPE(GOPHER_ASK_ATTRIBUTE_TYPEA, 8, 4);
    TEST_FIELD(GOPHER_ASK_ATTRIBUTE_TYPEA, LPCSTR, QuestionType, 0, 4, 4);
    TEST_FIELD(GOPHER_ASK_ATTRIBUTE_TYPEA, LPCSTR, QuestionText, 4, 4, 4);
}

static void test_pack_GOPHER_ASK_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ASK_ATTRIBUTE_TYPEW (pack 4) */
    TEST_TYPE(GOPHER_ASK_ATTRIBUTE_TYPEW, 8, 4);
    TEST_FIELD(GOPHER_ASK_ATTRIBUTE_TYPEW, LPCWSTR, QuestionType, 0, 4, 4);
    TEST_FIELD(GOPHER_ASK_ATTRIBUTE_TYPEW, LPCWSTR, QuestionText, 4, 4, 4);
}

static void test_pack_GOPHER_ATTRIBUTE_ENUMERATORA(void)
{
    /* GOPHER_ATTRIBUTE_ENUMERATORA */
    TEST_TYPE(GOPHER_ATTRIBUTE_ENUMERATORA, 4, 4);
}

static void test_pack_GOPHER_ATTRIBUTE_ENUMERATORW(void)
{
    /* GOPHER_ATTRIBUTE_ENUMERATORW */
    TEST_TYPE(GOPHER_ATTRIBUTE_ENUMERATORW, 4, 4);
}

static void test_pack_GOPHER_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ATTRIBUTE_TYPEA (pack 4) */
    TEST_FIELD(GOPHER_ATTRIBUTE_TYPEA, DWORD, CategoryId, 0, 4, 4);
    TEST_FIELD(GOPHER_ATTRIBUTE_TYPEA, DWORD, AttributeId, 4, 4, 4);
}

static void test_pack_GOPHER_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ATTRIBUTE_TYPEW (pack 4) */
    TEST_FIELD(GOPHER_ATTRIBUTE_TYPEW, DWORD, CategoryId, 0, 4, 4);
    TEST_FIELD(GOPHER_ATTRIBUTE_TYPEW, DWORD, AttributeId, 4, 4, 4);
}

static void test_pack_GOPHER_FIND_DATAA(void)
{
    /* GOPHER_FIND_DATAA (pack 4) */
    TEST_TYPE(GOPHER_FIND_DATAA, 808, 4);
    TEST_FIELD(GOPHER_FIND_DATAA, CHAR[MAX_GOPHER_DISPLAY_TEXT + 1], DisplayString, 0, 129, 1);
    TEST_FIELD(GOPHER_FIND_DATAA, DWORD, GopherType, 132, 4, 4);
    TEST_FIELD(GOPHER_FIND_DATAA, DWORD, SizeLow, 136, 4, 4);
    TEST_FIELD(GOPHER_FIND_DATAA, DWORD, SizeHigh, 140, 4, 4);
    TEST_FIELD(GOPHER_FIND_DATAA, FILETIME, LastModificationTime, 144, 8, 4);
    TEST_FIELD(GOPHER_FIND_DATAA, CHAR[MAX_GOPHER_LOCATOR_LENGTH + 1], Locator, 152, 654, 1);
}

static void test_pack_GOPHER_FIND_DATAW(void)
{
    /* GOPHER_FIND_DATAW (pack 4) */
    TEST_TYPE(GOPHER_FIND_DATAW, 1588, 4);
    TEST_FIELD(GOPHER_FIND_DATAW, WCHAR[MAX_GOPHER_DISPLAY_TEXT + 1], DisplayString, 0, 258, 2);
    TEST_FIELD(GOPHER_FIND_DATAW, DWORD, GopherType, 260, 4, 4);
    TEST_FIELD(GOPHER_FIND_DATAW, DWORD, SizeLow, 264, 4, 4);
    TEST_FIELD(GOPHER_FIND_DATAW, DWORD, SizeHigh, 268, 4, 4);
    TEST_FIELD(GOPHER_FIND_DATAW, FILETIME, LastModificationTime, 272, 8, 4);
    TEST_FIELD(GOPHER_FIND_DATAW, WCHAR[MAX_GOPHER_LOCATOR_LENGTH + 1], Locator, 280, 1308, 2);
}

static void test_pack_GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE (pack 4) */
    TEST_TYPE(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 24, 4);
    TEST_FIELD(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, INT, DegreesNorth, 0, 4, 4);
    TEST_FIELD(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, INT, MinutesNorth, 4, 4, 4);
    TEST_FIELD(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, INT, SecondsNorth, 8, 4, 4);
    TEST_FIELD(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, INT, DegreesEast, 12, 4, 4);
    TEST_FIELD(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, INT, MinutesEast, 16, 4, 4);
    TEST_FIELD(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, INT, SecondsEast, 20, 4, 4);
}

static void test_pack_GOPHER_LOCATION_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_LOCATION_ATTRIBUTE_TYPEA (pack 4) */
    TEST_TYPE(GOPHER_LOCATION_ATTRIBUTE_TYPEA, 4, 4);
    TEST_FIELD(GOPHER_LOCATION_ATTRIBUTE_TYPEA, LPCSTR, Location, 0, 4, 4);
}

static void test_pack_GOPHER_LOCATION_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_LOCATION_ATTRIBUTE_TYPEW (pack 4) */
    TEST_TYPE(GOPHER_LOCATION_ATTRIBUTE_TYPEW, 4, 4);
    TEST_FIELD(GOPHER_LOCATION_ATTRIBUTE_TYPEW, LPCWSTR, Location, 0, 4, 4);
}

static void test_pack_GOPHER_MOD_DATE_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_MOD_DATE_ATTRIBUTE_TYPE (pack 4) */
    TEST_TYPE(GOPHER_MOD_DATE_ATTRIBUTE_TYPE, 8, 4);
    TEST_FIELD(GOPHER_MOD_DATE_ATTRIBUTE_TYPE, FILETIME, DateAndTime, 0, 8, 4);
}

static void test_pack_GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA (pack 4) */
    TEST_TYPE(GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 4, 4);
    TEST_FIELD(GOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, LPCSTR, Organization, 0, 4, 4);
}

static void test_pack_GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW (pack 4) */
    TEST_TYPE(GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 4, 4);
    TEST_FIELD(GOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, LPCWSTR, Organization, 0, 4, 4);
}

static void test_pack_GOPHER_PROVIDER_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_PROVIDER_ATTRIBUTE_TYPEA (pack 4) */
    TEST_TYPE(GOPHER_PROVIDER_ATTRIBUTE_TYPEA, 4, 4);
    TEST_FIELD(GOPHER_PROVIDER_ATTRIBUTE_TYPEA, LPCSTR, Provider, 0, 4, 4);
}

static void test_pack_GOPHER_PROVIDER_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_PROVIDER_ATTRIBUTE_TYPEW (pack 4) */
    TEST_TYPE(GOPHER_PROVIDER_ATTRIBUTE_TYPEW, 4, 4);
    TEST_FIELD(GOPHER_PROVIDER_ATTRIBUTE_TYPEW, LPCWSTR, Provider, 0, 4, 4);
}

static void test_pack_GOPHER_SCORE_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_SCORE_ATTRIBUTE_TYPE (pack 4) */
    TEST_TYPE(GOPHER_SCORE_ATTRIBUTE_TYPE, 4, 4);
    TEST_FIELD(GOPHER_SCORE_ATTRIBUTE_TYPE, INT, Score, 0, 4, 4);
}

static void test_pack_GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE (pack 4) */
    TEST_TYPE(GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 8, 4);
    TEST_FIELD(GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, INT, LowerBound, 0, 4, 4);
    TEST_FIELD(GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, INT, UpperBound, 4, 4, 4);
}

static void test_pack_GOPHER_SITE_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_SITE_ATTRIBUTE_TYPEA (pack 4) */
    TEST_TYPE(GOPHER_SITE_ATTRIBUTE_TYPEA, 4, 4);
    TEST_FIELD(GOPHER_SITE_ATTRIBUTE_TYPEA, LPCSTR, Site, 0, 4, 4);
}

static void test_pack_GOPHER_SITE_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_SITE_ATTRIBUTE_TYPEW (pack 4) */
    TEST_TYPE(GOPHER_SITE_ATTRIBUTE_TYPEW, 4, 4);
    TEST_FIELD(GOPHER_SITE_ATTRIBUTE_TYPEW, LPCWSTR, Site, 0, 4, 4);
}

static void test_pack_GOPHER_TIMEZONE_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_TIMEZONE_ATTRIBUTE_TYPE (pack 4) */
    TEST_TYPE(GOPHER_TIMEZONE_ATTRIBUTE_TYPE, 4, 4);
    TEST_FIELD(GOPHER_TIMEZONE_ATTRIBUTE_TYPE, INT, Zone, 0, 4, 4);
}

static void test_pack_GOPHER_TTL_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_TTL_ATTRIBUTE_TYPE (pack 4) */
    TEST_TYPE(GOPHER_TTL_ATTRIBUTE_TYPE, 4, 4);
    TEST_FIELD(GOPHER_TTL_ATTRIBUTE_TYPE, DWORD, Ttl, 0, 4, 4);
}

static void test_pack_GOPHER_UNKNOWN_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_UNKNOWN_ATTRIBUTE_TYPEA (pack 4) */
    TEST_TYPE(GOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 4, 4);
    TEST_FIELD(GOPHER_UNKNOWN_ATTRIBUTE_TYPEA, LPCSTR, Text, 0, 4, 4);
}

static void test_pack_GOPHER_UNKNOWN_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_UNKNOWN_ATTRIBUTE_TYPEW (pack 4) */
    TEST_TYPE(GOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 4, 4);
    TEST_FIELD(GOPHER_UNKNOWN_ATTRIBUTE_TYPEW, LPCWSTR, Text, 0, 4, 4);
}

static void test_pack_GOPHER_VERONICA_ATTRIBUTE_TYPE(void)
{
    /* GOPHER_VERONICA_ATTRIBUTE_TYPE (pack 4) */
    TEST_TYPE(GOPHER_VERONICA_ATTRIBUTE_TYPE, 4, 4);
    TEST_FIELD(GOPHER_VERONICA_ATTRIBUTE_TYPE, BOOL, TreeWalk, 0, 4, 4);
}

static void test_pack_GOPHER_VERSION_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_VERSION_ATTRIBUTE_TYPEA (pack 4) */
    TEST_TYPE(GOPHER_VERSION_ATTRIBUTE_TYPEA, 4, 4);
    TEST_FIELD(GOPHER_VERSION_ATTRIBUTE_TYPEA, LPCSTR, Version, 0, 4, 4);
}

static void test_pack_GOPHER_VERSION_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_VERSION_ATTRIBUTE_TYPEW (pack 4) */
    TEST_TYPE(GOPHER_VERSION_ATTRIBUTE_TYPEW, 4, 4);
    TEST_FIELD(GOPHER_VERSION_ATTRIBUTE_TYPEW, LPCWSTR, Version, 0, 4, 4);
}

static void test_pack_GOPHER_VIEW_ATTRIBUTE_TYPEA(void)
{
    /* GOPHER_VIEW_ATTRIBUTE_TYPEA (pack 4) */
    TEST_TYPE(GOPHER_VIEW_ATTRIBUTE_TYPEA, 12, 4);
    TEST_FIELD(GOPHER_VIEW_ATTRIBUTE_TYPEA, LPCSTR, ContentType, 0, 4, 4);
    TEST_FIELD(GOPHER_VIEW_ATTRIBUTE_TYPEA, LPCSTR, Language, 4, 4, 4);
    TEST_FIELD(GOPHER_VIEW_ATTRIBUTE_TYPEA, DWORD, Size, 8, 4, 4);
}

static void test_pack_GOPHER_VIEW_ATTRIBUTE_TYPEW(void)
{
    /* GOPHER_VIEW_ATTRIBUTE_TYPEW (pack 4) */
    TEST_TYPE(GOPHER_VIEW_ATTRIBUTE_TYPEW, 12, 4);
    TEST_FIELD(GOPHER_VIEW_ATTRIBUTE_TYPEW, LPCWSTR, ContentType, 0, 4, 4);
    TEST_FIELD(GOPHER_VIEW_ATTRIBUTE_TYPEW, LPCWSTR, Language, 4, 4, 4);
    TEST_FIELD(GOPHER_VIEW_ATTRIBUTE_TYPEW, DWORD, Size, 8, 4, 4);
}

static void test_pack_GROUPID(void)
{
    /* GROUPID */
    TEST_TYPE(GROUPID, 8, 8);
    TEST_TYPE_SIGNED(GROUPID);
}

static void test_pack_HINTERNET(void)
{
    /* HINTERNET */
    TEST_TYPE(HINTERNET, 4, 4);
}

static void test_pack_HTTP_VERSION_INFO(void)
{
    /* HTTP_VERSION_INFO (pack 4) */
    TEST_TYPE(HTTP_VERSION_INFO, 8, 4);
    TEST_FIELD(HTTP_VERSION_INFO, DWORD, dwMajorVersion, 0, 4, 4);
    TEST_FIELD(HTTP_VERSION_INFO, DWORD, dwMinorVersion, 4, 4, 4);
}

static void test_pack_INTERNET_ASYNC_RESULT(void)
{
    /* INTERNET_ASYNC_RESULT (pack 4) */
    TEST_TYPE(INTERNET_ASYNC_RESULT, 8, 4);
    TEST_FIELD(INTERNET_ASYNC_RESULT, DWORD_PTR, dwResult, 0, 4, 4);
    TEST_FIELD(INTERNET_ASYNC_RESULT, DWORD, dwError, 4, 4, 4);
}

static void test_pack_INTERNET_AUTH_NOTIFY_DATA(void)
{
    /* INTERNET_AUTH_NOTIFY_DATA (pack 4) */
    TEST_TYPE(INTERNET_AUTH_NOTIFY_DATA, 16, 4);
    TEST_FIELD(INTERNET_AUTH_NOTIFY_DATA, DWORD, cbStruct, 0, 4, 4);
    TEST_FIELD(INTERNET_AUTH_NOTIFY_DATA, DWORD, dwOptions, 4, 4, 4);
    TEST_FIELD(INTERNET_AUTH_NOTIFY_DATA, PFN_AUTH_NOTIFY, pfnNotify, 8, 4, 4);
    TEST_FIELD(INTERNET_AUTH_NOTIFY_DATA, DWORD_PTR, dwContext, 12, 4, 4);
}

static void test_pack_INTERNET_BUFFERSA(void)
{
    /* INTERNET_BUFFERSA (pack 4) */
    TEST_TYPE(INTERNET_BUFFERSA, 40, 4);
    TEST_FIELD(INTERNET_BUFFERSA, DWORD, dwStructSize, 0, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSA, struct _INTERNET_BUFFERSA *, Next, 4, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSA, LPCSTR, lpcszHeader, 8, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSA, DWORD, dwHeadersLength, 12, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSA, DWORD, dwHeadersTotal, 16, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSA, LPVOID, lpvBuffer, 20, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSA, DWORD, dwBufferLength, 24, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSA, DWORD, dwBufferTotal, 28, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSA, DWORD, dwOffsetLow, 32, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSA, DWORD, dwOffsetHigh, 36, 4, 4);
}

static void test_pack_INTERNET_BUFFERSW(void)
{
    /* INTERNET_BUFFERSW (pack 4) */
    TEST_TYPE(INTERNET_BUFFERSW, 40, 4);
    TEST_FIELD(INTERNET_BUFFERSW, DWORD, dwStructSize, 0, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSW, struct _INTERNET_BUFFERSW *, Next, 4, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSW, LPCWSTR, lpcszHeader, 8, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSW, DWORD, dwHeadersLength, 12, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSW, DWORD, dwHeadersTotal, 16, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSW, LPVOID, lpvBuffer, 20, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSW, DWORD, dwBufferLength, 24, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSW, DWORD, dwBufferTotal, 28, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSW, DWORD, dwOffsetLow, 32, 4, 4);
    TEST_FIELD(INTERNET_BUFFERSW, DWORD, dwOffsetHigh, 36, 4, 4);
}

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

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

static void test_pack_INTERNET_CERTIFICATE_INFOA(void)
{
    /* INTERNET_CERTIFICATE_INFOA (pack 4) */
    TEST_TYPE(INTERNET_CERTIFICATE_INFOA, 40, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOA, FILETIME, ftExpiry, 0, 8, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOA, FILETIME, ftStart, 8, 8, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOA, LPSTR, lpszSubjectInfo, 16, 4, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOA, LPSTR, lpszIssuerInfo, 20, 4, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOA, LPSTR, lpszProtocolName, 24, 4, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOA, LPSTR, lpszSignatureAlgName, 28, 4, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOA, LPSTR, lpszEncryptionAlgName, 32, 4, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOA, DWORD, dwKeySize, 36, 4, 4);
}

static void test_pack_INTERNET_CERTIFICATE_INFOW(void)
{
    /* INTERNET_CERTIFICATE_INFOW (pack 4) */
    TEST_TYPE(INTERNET_CERTIFICATE_INFOW, 40, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOW, FILETIME, ftExpiry, 0, 8, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOW, FILETIME, ftStart, 8, 8, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOW, LPWSTR, lpszSubjectInfo, 16, 4, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOW, LPWSTR, lpszIssuerInfo, 20, 4, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOW, LPWSTR, lpszProtocolName, 24, 4, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOW, LPWSTR, lpszSignatureAlgName, 28, 4, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOW, LPWSTR, lpszEncryptionAlgName, 32, 4, 4);
    TEST_FIELD(INTERNET_CERTIFICATE_INFOW, DWORD, dwKeySize, 36, 4, 4);
}

static void test_pack_INTERNET_CONNECTED_INFO(void)
{
    /* INTERNET_CONNECTED_INFO (pack 4) */
    TEST_TYPE(INTERNET_CONNECTED_INFO, 8, 4);
    TEST_FIELD(INTERNET_CONNECTED_INFO, DWORD, dwConnectedState, 0, 4, 4);
    TEST_FIELD(INTERNET_CONNECTED_INFO, DWORD, dwFlags, 4, 4, 4);
}

static void test_pack_INTERNET_PORT(void)
{
    /* INTERNET_PORT */
    TEST_TYPE(INTERNET_PORT, 2, 2);
    TEST_TYPE_UNSIGNED(INTERNET_PORT);
}

static void test_pack_INTERNET_PROXY_INFOA(void)
{
    /* INTERNET_PROXY_INFOA (pack 4) */
    TEST_TYPE(INTERNET_PROXY_INFOA, 12, 4);
    TEST_FIELD(INTERNET_PROXY_INFOA, DWORD, dwAccessType, 0, 4, 4);
    TEST_FIELD(INTERNET_PROXY_INFOA, LPCSTR, lpszProxy, 4, 4, 4);
    TEST_FIELD(INTERNET_PROXY_INFOA, LPCSTR, lpszProxyBypass, 8, 4, 4);
}

static void test_pack_INTERNET_PROXY_INFOW(void)
{
    /* INTERNET_PROXY_INFOW (pack 4) */
    TEST_TYPE(INTERNET_PROXY_INFOW, 12, 4);
    TEST_FIELD(INTERNET_PROXY_INFOW, DWORD, dwAccessType, 0, 4, 4);
    TEST_FIELD(INTERNET_PROXY_INFOW, LPCWSTR, lpszProxy, 4, 4, 4);
    TEST_FIELD(INTERNET_PROXY_INFOW, LPCWSTR, lpszProxyBypass, 8, 4, 4);
}

static void test_pack_INTERNET_STATUS_CALLBACK(void)
{
    /* INTERNET_STATUS_CALLBACK */
    TEST_TYPE(INTERNET_STATUS_CALLBACK, 4, 4);
}

static void test_pack_INTERNET_VERSION_INFO(void)
{
    /* INTERNET_VERSION_INFO (pack 4) */
    TEST_TYPE(INTERNET_VERSION_INFO, 8, 4);
    TEST_FIELD(INTERNET_VERSION_INFO, DWORD, dwMajorVersion, 0, 4, 4);
    TEST_FIELD(INTERNET_VERSION_INFO, DWORD, dwMinorVersion, 4, 4, 4);
}

static void test_pack_LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA */
    TEST_TYPE(LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEA, 8, 4);
}

static void test_pack_LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW */
    TEST_TYPE(LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 8, 4);
}

static void test_pack_LPGOPHER_ADMIN_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ADMIN_ATTRIBUTE_TYPEA */
    TEST_TYPE(LPGOPHER_ADMIN_ATTRIBUTE_TYPEA, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_ADMIN_ATTRIBUTE_TYPEA, 8, 4);
}

static void test_pack_LPGOPHER_ADMIN_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ADMIN_ATTRIBUTE_TYPEW */
    TEST_TYPE(LPGOPHER_ADMIN_ATTRIBUTE_TYPEW, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_ADMIN_ATTRIBUTE_TYPEW, 8, 4);
}

static void test_pack_LPGOPHER_ASK_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ASK_ATTRIBUTE_TYPEA */
    TEST_TYPE(LPGOPHER_ASK_ATTRIBUTE_TYPEA, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_ASK_ATTRIBUTE_TYPEA, 8, 4);
}

static void test_pack_LPGOPHER_ASK_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ASK_ATTRIBUTE_TYPEW */
    TEST_TYPE(LPGOPHER_ASK_ATTRIBUTE_TYPEW, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_ASK_ATTRIBUTE_TYPEW, 8, 4);
}

static void test_pack_LPGOPHER_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ATTRIBUTE_TYPEA */
    TEST_TYPE(LPGOPHER_ATTRIBUTE_TYPEA, 4, 4);
}

static void test_pack_LPGOPHER_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ATTRIBUTE_TYPEW */
    TEST_TYPE(LPGOPHER_ATTRIBUTE_TYPEW, 4, 4);
}

static void test_pack_LPGOPHER_FIND_DATAA(void)
{
    /* LPGOPHER_FIND_DATAA */
    TEST_TYPE(LPGOPHER_FIND_DATAA, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_FIND_DATAA, 808, 4);
}

static void test_pack_LPGOPHER_FIND_DATAW(void)
{
    /* LPGOPHER_FIND_DATAW */
    TEST_TYPE(LPGOPHER_FIND_DATAW, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_FIND_DATAW, 1588, 4);
}

static void test_pack_LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE */
    TEST_TYPE(LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 24, 4);
}

static void test_pack_LPGOPHER_LOCATION_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_LOCATION_ATTRIBUTE_TYPEA */
    TEST_TYPE(LPGOPHER_LOCATION_ATTRIBUTE_TYPEA, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_LOCATION_ATTRIBUTE_TYPEA, 4, 4);
}

static void test_pack_LPGOPHER_LOCATION_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_LOCATION_ATTRIBUTE_TYPEW */
    TEST_TYPE(LPGOPHER_LOCATION_ATTRIBUTE_TYPEW, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_LOCATION_ATTRIBUTE_TYPEW, 4, 4);
}

static void test_pack_LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE */
    TEST_TYPE(LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE, 8, 4);
}

static void test_pack_LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA */
    TEST_TYPE(LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEA, 4, 4);
}

static void test_pack_LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW */
    TEST_TYPE(LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPEW, 4, 4);
}

static void test_pack_LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA */
    TEST_TYPE(LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_PROVIDER_ATTRIBUTE_TYPEA, 4, 4);
}

static void test_pack_LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW */
    TEST_TYPE(LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_PROVIDER_ATTRIBUTE_TYPEW, 4, 4);
}

static void test_pack_LPGOPHER_SCORE_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_SCORE_ATTRIBUTE_TYPE */
    TEST_TYPE(LPGOPHER_SCORE_ATTRIBUTE_TYPE, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_SCORE_ATTRIBUTE_TYPE, 4, 4);
}

static void test_pack_LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE */
    TEST_TYPE(LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 8, 4);
}

static void test_pack_LPGOPHER_SITE_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_SITE_ATTRIBUTE_TYPEA */
    TEST_TYPE(LPGOPHER_SITE_ATTRIBUTE_TYPEA, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_SITE_ATTRIBUTE_TYPEA, 4, 4);
}

static void test_pack_LPGOPHER_SITE_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_SITE_ATTRIBUTE_TYPEW */
    TEST_TYPE(LPGOPHER_SITE_ATTRIBUTE_TYPEW, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_SITE_ATTRIBUTE_TYPEW, 4, 4);
}

static void test_pack_LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE */
    TEST_TYPE(LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE, 4, 4);
}

static void test_pack_LPGOPHER_TTL_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_TTL_ATTRIBUTE_TYPE */
    TEST_TYPE(LPGOPHER_TTL_ATTRIBUTE_TYPE, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_TTL_ATTRIBUTE_TYPE, 4, 4);
}

static void test_pack_LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA */
    TEST_TYPE(LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEA, 4, 4);
}

static void test_pack_LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW */
    TEST_TYPE(LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_UNKNOWN_ATTRIBUTE_TYPEW, 4, 4);
}

static void test_pack_LPGOPHER_VERONICA_ATTRIBUTE_TYPE(void)
{
    /* LPGOPHER_VERONICA_ATTRIBUTE_TYPE */
    TEST_TYPE(LPGOPHER_VERONICA_ATTRIBUTE_TYPE, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_VERONICA_ATTRIBUTE_TYPE, 4, 4);
}

static void test_pack_LPGOPHER_VERSION_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_VERSION_ATTRIBUTE_TYPEA */
    TEST_TYPE(LPGOPHER_VERSION_ATTRIBUTE_TYPEA, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_VERSION_ATTRIBUTE_TYPEA, 4, 4);
}

static void test_pack_LPGOPHER_VERSION_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_VERSION_ATTRIBUTE_TYPEW */
    TEST_TYPE(LPGOPHER_VERSION_ATTRIBUTE_TYPEW, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_VERSION_ATTRIBUTE_TYPEW, 4, 4);
}

static void test_pack_LPGOPHER_VIEW_ATTRIBUTE_TYPEA(void)
{
    /* LPGOPHER_VIEW_ATTRIBUTE_TYPEA */
    TEST_TYPE(LPGOPHER_VIEW_ATTRIBUTE_TYPEA, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_VIEW_ATTRIBUTE_TYPEA, 12, 4);
}

static void test_pack_LPGOPHER_VIEW_ATTRIBUTE_TYPEW(void)
{
    /* LPGOPHER_VIEW_ATTRIBUTE_TYPEW */
    TEST_TYPE(LPGOPHER_VIEW_ATTRIBUTE_TYPEW, 4, 4);
    TEST_TYPE_POINTER(LPGOPHER_VIEW_ATTRIBUTE_TYPEW, 12, 4);
}

static void test_pack_LPHINTERNET(void)
{
    /* LPHINTERNET */
    TEST_TYPE(LPHINTERNET, 4, 4);
    TEST_TYPE_POINTER(LPHINTERNET, 4, 4);
}

static void test_pack_LPHTTP_VERSION_INFO(void)
{
    /* LPHTTP_VERSION_INFO */
    TEST_TYPE(LPHTTP_VERSION_INFO, 4, 4);
    TEST_TYPE_POINTER(LPHTTP_VERSION_INFO, 8, 4);
}

static void test_pack_LPINTERNET_ASYNC_RESULT(void)
{
    /* LPINTERNET_ASYNC_RESULT */
    TEST_TYPE(LPINTERNET_ASYNC_RESULT, 4, 4);
    TEST_TYPE_POINTER(LPINTERNET_ASYNC_RESULT, 8, 4);
}

static void test_pack_LPINTERNET_BUFFERSA(void)
{
    /* LPINTERNET_BUFFERSA */
    TEST_TYPE(LPINTERNET_BUFFERSA, 4, 4);
    TEST_TYPE_POINTER(LPINTERNET_BUFFERSA, 40, 4);
}

static void test_pack_LPINTERNET_BUFFERSW(void)
{
    /* LPINTERNET_BUFFERSW */
    TEST_TYPE(LPINTERNET_BUFFERSW, 4, 4);
    TEST_TYPE_POINTER(LPINTERNET_BUFFERSW, 40, 4);
}

static void test_pack_LPINTERNET_CACHE_ENTRY_INFOA(void)
{
    /* LPINTERNET_CACHE_ENTRY_INFOA */
    TEST_TYPE(LPINTERNET_CACHE_ENTRY_INFOA, 4, 4);
}

static void test_pack_LPINTERNET_CACHE_ENTRY_INFOW(void)
{
    /* LPINTERNET_CACHE_ENTRY_INFOW */
    TEST_TYPE(LPINTERNET_CACHE_ENTRY_INFOW, 4, 4);
}

static void test_pack_LPINTERNET_CERTIFICATE_INFOA(void)
{
    /* LPINTERNET_CERTIFICATE_INFOA */
    TEST_TYPE(LPINTERNET_CERTIFICATE_INFOA, 4, 4);
    TEST_TYPE_POINTER(LPINTERNET_CERTIFICATE_INFOA, 40, 4);
}

static void test_pack_LPINTERNET_CERTIFICATE_INFOW(void)
{
    /* LPINTERNET_CERTIFICATE_INFOW */
    TEST_TYPE(LPINTERNET_CERTIFICATE_INFOW, 4, 4);
    TEST_TYPE_POINTER(LPINTERNET_CERTIFICATE_INFOW, 40, 4);
}

static void test_pack_LPINTERNET_CONNECTED_INFO(void)
{
    /* LPINTERNET_CONNECTED_INFO */
    TEST_TYPE(LPINTERNET_CONNECTED_INFO, 4, 4);
    TEST_TYPE_POINTER(LPINTERNET_CONNECTED_INFO, 8, 4);
}

static void test_pack_LPINTERNET_PORT(void)
{
    /* LPINTERNET_PORT */
    TEST_TYPE(LPINTERNET_PORT, 4, 4);
    TEST_TYPE_POINTER(LPINTERNET_PORT, 2, 2);
}

static void test_pack_LPINTERNET_PROXY_INFOA(void)
{
    /* LPINTERNET_PROXY_INFOA */
    TEST_TYPE(LPINTERNET_PROXY_INFOA, 4, 4);
    TEST_TYPE_POINTER(LPINTERNET_PROXY_INFOA, 12, 4);
}

static void test_pack_LPINTERNET_PROXY_INFOW(void)
{
    /* LPINTERNET_PROXY_INFOW */
    TEST_TYPE(LPINTERNET_PROXY_INFOW, 4, 4);
    TEST_TYPE_POINTER(LPINTERNET_PROXY_INFOW, 12, 4);
}

static void test_pack_LPINTERNET_STATUS_CALLBACK(void)
{
    /* LPINTERNET_STATUS_CALLBACK */
    TEST_TYPE(LPINTERNET_STATUS_CALLBACK, 4, 4);
    TEST_TYPE_POINTER(LPINTERNET_STATUS_CALLBACK, 4, 4);
}

static void test_pack_LPINTERNET_VERSION_INFO(void)
{
    /* LPINTERNET_VERSION_INFO */
    TEST_TYPE(LPINTERNET_VERSION_INFO, 4, 4);
    TEST_TYPE_POINTER(LPINTERNET_VERSION_INFO, 8, 4);
}

static void test_pack_LPURL_COMPONENTSA(void)
{
    /* LPURL_COMPONENTSA */
    TEST_TYPE(LPURL_COMPONENTSA, 4, 4);
}

static void test_pack_LPURL_COMPONENTSW(void)
{
    /* LPURL_COMPONENTSW */
    TEST_TYPE(LPURL_COMPONENTSW, 4, 4);
}

static void test_pack_PFN_AUTH_NOTIFY(void)
{
    /* PFN_AUTH_NOTIFY */
    TEST_TYPE(PFN_AUTH_NOTIFY, 4, 4);
}

static void test_pack_PFN_DIAL_HANDLER(void)
{
    /* PFN_DIAL_HANDLER */
    TEST_TYPE(PFN_DIAL_HANDLER, 4, 4);
}

static void test_pack_URL_COMPONENTSA(void)
{
    /* URL_COMPONENTSA (pack 4) */
    TEST_FIELD(URL_COMPONENTSA, DWORD, dwStructSize, 0, 4, 4);
    TEST_FIELD(URL_COMPONENTSA, LPSTR, lpszScheme, 4, 4, 4);
    TEST_FIELD(URL_COMPONENTSA, DWORD, dwSchemeLength, 8, 4, 4);
}

static void test_pack_URL_COMPONENTSW(void)
{
    /* URL_COMPONENTSW (pack 4) */
    TEST_FIELD(URL_COMPONENTSW, DWORD, dwStructSize, 0, 4, 4);
    TEST_FIELD(URL_COMPONENTSW, LPWSTR, lpszScheme, 4, 4, 4);
    TEST_FIELD(URL_COMPONENTSW, DWORD, dwSchemeLength, 8, 4, 4);
}

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();
}
