📄 generated.c
字号:
/* File generated automatically from tools/winapi/test.dat; do not edit! */
/* This file can be copied, modified and distributed without restriction. */
/*
* Unit tests for data structure packing
*/
#define WINVER 0x0501
#define _WIN32_IE 0x0501
#define _WIN32_WINNT 0x0501
#define WINE_NOWINSOCK
#include "ntdll_test.h"
#include "wine/test.h"
/***********************************************************************
* Compability macros
*/
#define DWORD_PTR UINT_PTR
#define LONG_PTR INT_PTR
#define ULONG_PTR UINT_PTR
/***********************************************************************
* Windows API extension
*/
#if defined(_MSC_VER) && (_MSC_VER >= 1300) && defined(__cplusplus)
# define FIELD_ALIGNMENT(type, field) __alignof(((type*)0)->field)
#elif defined(__GNUC__)
# define FIELD_ALIGNMENT(type, field) __alignof__(((type*)0)->field)
#else
/* FIXME: Not sure if is possible to do without compiler extension */
#endif
#if defined(_MSC_VER) && (_MSC_VER >= 1300) && defined(__cplusplus)
# define _TYPE_ALIGNMENT(type) __alignof(type)
#elif defined(__GNUC__)
# define _TYPE_ALIGNMENT(type) __alignof__(type)
#else
/*
* FIXME: Not sure if is possible to do without compiler extension
* (if type is not just a name that is, if so the normal)
* TYPE_ALIGNMENT can be used)
*/
#endif
#if defined(TYPE_ALIGNMENT) && defined(_MSC_VER) && _MSC_VER >= 800 && !defined(__cplusplus)
#pragma warning(disable:4116)
#endif
#if !defined(TYPE_ALIGNMENT) && defined(_TYPE_ALIGNMENT)
# define TYPE_ALIGNMENT _TYPE_ALIGNMENT
#endif
/***********************************************************************
* Test helper macros
*/
#ifdef FIELD_ALIGNMENT
# define TEST_FIELD_ALIGNMENT(type, field, align) \
ok(FIELD_ALIGNMENT(type, field) == align, \
"FIELD_ALIGNMENT(" #type ", " #field ") == %d (expected " #align ")\n", \
(int)FIELD_ALIGNMENT(type, field))
#else
# define TEST_FIELD_ALIGNMENT(type, field, align) do { } while (0)
#endif
#define TEST_FIELD_OFFSET(type, field, offset) \
ok(FIELD_OFFSET(type, field) == offset, \
"FIELD_OFFSET(" #type ", " #field ") == %ld (expected " #offset ")\n", \
(long int)FIELD_OFFSET(type, field))
#ifdef _TYPE_ALIGNMENT
#define TEST__TYPE_ALIGNMENT(type, align) \
ok(_TYPE_ALIGNMENT(type) == align, "TYPE_ALIGNMENT(" #type ") == %d (expected " #align ")\n", (int)_TYPE_ALIGNMENT(type))
#else
# define TEST__TYPE_ALIGNMENT(type, align) do { } while (0)
#endif
#ifdef TYPE_ALIGNMENT
#define TEST_TYPE_ALIGNMENT(type, align) \
ok(TYPE_ALIGNMENT(type) == align, "TYPE_ALIGNMENT(" #type ") == %d (expected " #align ")\n", (int)TYPE_ALIGNMENT(type))
#else
# define TEST_TYPE_ALIGNMENT(type, align) do { } while (0)
#endif
#define TEST_TYPE_SIZE(type, size) \
ok(sizeof(type) == size, "sizeof(" #type ") == %d (expected " #size ")\n", ((int) sizeof(type)))
/***********************************************************************
* Test macros
*/
#define TEST_FIELD(type, field_type, field_name, field_offset, field_size, field_align) \
TEST_TYPE_SIZE(field_type, field_size); \
TEST_FIELD_ALIGNMENT(type, field_name, field_align); \
TEST_FIELD_OFFSET(type, field_name, field_offset); \
#define TEST_TYPE(type, size, align) \
TEST_TYPE_ALIGNMENT(type, align); \
TEST_TYPE_SIZE(type, size)
#define TEST_TYPE_POINTER(type, size, align) \
TEST__TYPE_ALIGNMENT(*(type)0, align); \
TEST_TYPE_SIZE(*(type)0, size)
#define TEST_TYPE_SIGNED(type) \
ok((type) -1 < 0, "(" #type ") -1 < 0\n");
#define TEST_TYPE_UNSIGNED(type) \
ok((type) -1 > 0, "(" #type ") -1 > 0\n");
static void test_pack_DWORD32(void)
{
/* DWORD32 */
TEST_TYPE(DWORD32, 4, 4);
TEST_TYPE_UNSIGNED(DWORD32);
}
static void test_pack_DWORD64(void)
{
/* DWORD64 */
TEST_TYPE(DWORD64, 8, 8);
TEST_TYPE_UNSIGNED(DWORD64);
}
static void test_pack_DWORD_PTR(void)
{
/* DWORD_PTR */
TEST_TYPE(DWORD_PTR, 4, 4);
}
static void test_pack_HALF_PTR(void)
{
/* HALF_PTR */
TEST_TYPE(HALF_PTR, 2, 2);
TEST_TYPE_SIGNED(HALF_PTR);
}
static void test_pack_INT16(void)
{
/* INT16 */
TEST_TYPE(INT16, 2, 2);
TEST_TYPE_SIGNED(INT16);
}
static void test_pack_INT32(void)
{
/* INT32 */
TEST_TYPE(INT32, 4, 4);
TEST_TYPE_SIGNED(INT32);
}
static void test_pack_INT64(void)
{
/* INT64 */
TEST_TYPE(INT64, 8, 8);
TEST_TYPE_SIGNED(INT64);
}
static void test_pack_INT8(void)
{
/* INT8 */
TEST_TYPE(INT8, 1, 1);
TEST_TYPE_SIGNED(INT8);
}
static void test_pack_INT_PTR(void)
{
/* INT_PTR */
TEST_TYPE(INT_PTR, 4, 4);
TEST_TYPE_SIGNED(INT_PTR);
}
static void test_pack_LONG32(void)
{
/* LONG32 */
TEST_TYPE(LONG32, 4, 4);
TEST_TYPE_SIGNED(LONG32);
}
static void test_pack_LONG64(void)
{
/* LONG64 */
TEST_TYPE(LONG64, 8, 8);
TEST_TYPE_SIGNED(LONG64);
}
static void test_pack_LONG_PTR(void)
{
/* LONG_PTR */
TEST_TYPE(LONG_PTR, 4, 4);
TEST_TYPE_SIGNED(LONG_PTR);
}
static void test_pack_SIZE_T(void)
{
/* SIZE_T */
TEST_TYPE(SIZE_T, 4, 4);
}
static void test_pack_SSIZE_T(void)
{
/* SSIZE_T */
TEST_TYPE(SSIZE_T, 4, 4);
}
static void test_pack_UHALF_PTR(void)
{
/* UHALF_PTR */
TEST_TYPE(UHALF_PTR, 2, 2);
TEST_TYPE_UNSIGNED(UHALF_PTR);
}
static void test_pack_UINT16(void)
{
/* UINT16 */
TEST_TYPE(UINT16, 2, 2);
TEST_TYPE_UNSIGNED(UINT16);
}
static void test_pack_UINT32(void)
{
/* UINT32 */
TEST_TYPE(UINT32, 4, 4);
TEST_TYPE_UNSIGNED(UINT32);
}
static void test_pack_UINT64(void)
{
/* UINT64 */
TEST_TYPE(UINT64, 8, 8);
TEST_TYPE_UNSIGNED(UINT64);
}
static void test_pack_UINT8(void)
{
/* UINT8 */
TEST_TYPE(UINT8, 1, 1);
TEST_TYPE_UNSIGNED(UINT8);
}
static void test_pack_UINT_PTR(void)
{
/* UINT_PTR */
TEST_TYPE(UINT_PTR, 4, 4);
TEST_TYPE_UNSIGNED(UINT_PTR);
}
static void test_pack_ULONG32(void)
{
/* ULONG32 */
TEST_TYPE(ULONG32, 4, 4);
TEST_TYPE_UNSIGNED(ULONG32);
}
static void test_pack_ULONG64(void)
{
/* ULONG64 */
TEST_TYPE(ULONG64, 8, 8);
TEST_TYPE_UNSIGNED(ULONG64);
}
static void test_pack_ULONG_PTR(void)
{
/* ULONG_PTR */
TEST_TYPE(ULONG_PTR, 4, 4);
TEST_TYPE_UNSIGNED(ULONG_PTR);
}
static void test_pack_ACCESS_ALLOWED_ACE(void)
{
/* ACCESS_ALLOWED_ACE (pack 4) */
TEST_TYPE(ACCESS_ALLOWED_ACE, 12, 4);
TEST_FIELD(ACCESS_ALLOWED_ACE, ACE_HEADER, Header, 0, 4, 2);
TEST_FIELD(ACCESS_ALLOWED_ACE, DWORD, Mask, 4, 4, 4);
TEST_FIELD(ACCESS_ALLOWED_ACE, DWORD, SidStart, 8, 4, 4);
}
static void test_pack_ACCESS_DENIED_ACE(void)
{
/* ACCESS_DENIED_ACE (pack 4) */
TEST_TYPE(ACCESS_DENIED_ACE, 12, 4);
TEST_FIELD(ACCESS_DENIED_ACE, ACE_HEADER, Header, 0, 4, 2);
TEST_FIELD(ACCESS_DENIED_ACE, DWORD, Mask, 4, 4, 4);
TEST_FIELD(ACCESS_DENIED_ACE, DWORD, SidStart, 8, 4, 4);
}
static void test_pack_ACCESS_MASK(void)
{
/* ACCESS_MASK */
TEST_TYPE(ACCESS_MASK, 4, 4);
TEST_TYPE_UNSIGNED(ACCESS_MASK);
}
static void test_pack_ACE_HEADER(void)
{
/* ACE_HEADER (pack 4) */
TEST_TYPE(ACE_HEADER, 4, 2);
TEST_FIELD(ACE_HEADER, BYTE, AceType, 0, 1, 1);
TEST_FIELD(ACE_HEADER, BYTE, AceFlags, 1, 1, 1);
TEST_FIELD(ACE_HEADER, WORD, AceSize, 2, 2, 2);
}
static void test_pack_ACL(void)
{
/* ACL (pack 4) */
TEST_TYPE(ACL, 8, 2);
TEST_FIELD(ACL, BYTE, AclRevision, 0, 1, 1);
TEST_FIELD(ACL, BYTE, Sbz1, 1, 1, 1);
TEST_FIELD(ACL, WORD, AclSize, 2, 2, 2);
TEST_FIELD(ACL, WORD, AceCount, 4, 2, 2);
TEST_FIELD(ACL, WORD, Sbz2, 6, 2, 2);
}
static void test_pack_ACL_REVISION_INFORMATION(void)
{
/* ACL_REVISION_INFORMATION (pack 4) */
TEST_TYPE(ACL_REVISION_INFORMATION, 4, 4);
TEST_FIELD(ACL_REVISION_INFORMATION, DWORD, AclRevision, 0, 4, 4);
}
static void test_pack_ACL_SIZE_INFORMATION(void)
{
/* ACL_SIZE_INFORMATION (pack 4) */
TEST_TYPE(ACL_SIZE_INFORMATION, 12, 4);
TEST_FIELD(ACL_SIZE_INFORMATION, DWORD, AceCount, 0, 4, 4);
TEST_FIELD(ACL_SIZE_INFORMATION, DWORD, AclBytesInUse, 4, 4, 4);
TEST_FIELD(ACL_SIZE_INFORMATION, DWORD, AclBytesFree, 8, 4, 4);
}
static void test_pack_BOOLEAN(void)
{
/* BOOLEAN */
TEST_TYPE(BOOLEAN, 1, 1);
TEST_TYPE_UNSIGNED(BOOLEAN);
}
static void test_pack_CCHAR(void)
{
/* CCHAR */
TEST_TYPE(CCHAR, 1, 1);
TEST_TYPE_SIGNED(CCHAR);
}
static void test_pack_CHAR(void)
{
/* CHAR */
TEST_TYPE(CHAR, 1, 1);
TEST_TYPE_SIGNED(CHAR);
}
static void test_pack_DWORDLONG(void)
{
/* DWORDLONG */
TEST_TYPE(DWORDLONG, 8, 8);
TEST_TYPE_UNSIGNED(DWORDLONG);
}
static void test_pack_EXCEPTION_POINTERS(void)
{
/* EXCEPTION_POINTERS (pack 4) */
TEST_TYPE(EXCEPTION_POINTERS, 8, 4);
TEST_FIELD(EXCEPTION_POINTERS, PEXCEPTION_RECORD, ExceptionRecord, 0, 4, 4);
TEST_FIELD(EXCEPTION_POINTERS, PCONTEXT, ContextRecord, 4, 4, 4);
}
static void test_pack_EXCEPTION_RECORD(void)
{
/* EXCEPTION_RECORD (pack 4) */
TEST_TYPE(EXCEPTION_RECORD, 80, 4);
TEST_FIELD(EXCEPTION_RECORD, DWORD, ExceptionCode, 0, 4, 4);
TEST_FIELD(EXCEPTION_RECORD, DWORD, ExceptionFlags, 4, 4, 4);
TEST_FIELD(EXCEPTION_RECORD, struct _EXCEPTION_RECORD *, ExceptionRecord, 8, 4, 4);
TEST_FIELD(EXCEPTION_RECORD, PVOID, ExceptionAddress, 12, 4, 4);
TEST_FIELD(EXCEPTION_RECORD, DWORD, NumberParameters, 16, 4, 4);
TEST_FIELD(EXCEPTION_RECORD, ULONG_PTR[EXCEPTION_MAXIMUM_PARAMETERS], ExceptionInformation, 20, 60, 4);
}
static void test_pack_EXECUTION_STATE(void)
{
/* EXECUTION_STATE */
TEST_TYPE(EXECUTION_STATE, 4, 4);
TEST_TYPE_UNSIGNED(EXECUTION_STATE);
}
static void test_pack_FLOATING_SAVE_AREA(void)
{
/* FLOATING_SAVE_AREA (pack 4) */
TEST_TYPE(FLOATING_SAVE_AREA, 112, 4);
TEST_FIELD(FLOATING_SAVE_AREA, DWORD, ControlWord, 0, 4, 4);
TEST_FIELD(FLOATING_SAVE_AREA, DWORD, StatusWord, 4, 4, 4);
TEST_FIELD(FLOATING_SAVE_AREA, DWORD, TagWord, 8, 4, 4);
TEST_FIELD(FLOATING_SAVE_AREA, DWORD, ErrorOffset, 12, 4, 4);
TEST_FIELD(FLOATING_SAVE_AREA, DWORD, ErrorSelector, 16, 4, 4);
TEST_FIELD(FLOATING_SAVE_AREA, DWORD, DataOffset, 20, 4, 4);
TEST_FIELD(FLOATING_SAVE_AREA, DWORD, DataSelector, 24, 4, 4);
TEST_FIELD(FLOATING_SAVE_AREA, BYTE[SIZE_OF_80387_REGISTERS], RegisterArea, 28, 80, 1);
TEST_FIELD(FLOATING_SAVE_AREA, DWORD, Cr0NpxState, 108, 4, 4);
}
static void test_pack_FPO_DATA(void)
{
/* FPO_DATA (pack 4) */
TEST_TYPE(FPO_DATA, 16, 4);
TEST_FIELD(FPO_DATA, DWORD, ulOffStart, 0, 4, 4);
TEST_FIELD(FPO_DATA, DWORD, cbProcSize, 4, 4, 4);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -