#include <stdio.h>
#include <winpr/crt.h>
#include <winpr/windows.h>
#define EXPECTED_SIZEOF_BYTE 1
#define EXPECTED_SIZEOF_BOOLEAN 1
#define EXPECTED_SIZEOF_CHAR 1
#define EXPECTED_SIZEOF_UCHAR 1
#define EXPECTED_SIZEOF_INT8 1
#define EXPECTED_SIZEOF_UINT8 1
#define EXPECTED_SIZEOF_INT16 2
#define EXPECTED_SIZEOF_UINT16 2
#define EXPECTED_SIZEOF_WORD 2
#define EXPECTED_SIZEOF_WCHAR 2
#define EXPECTED_SIZEOF_SHORT 2
#define EXPECTED_SIZEOF_USHORT 2
#define EXPECTED_SIZEOF_BOOL 4
#define EXPECTED_SIZEOF_INT 4
#define EXPECTED_SIZEOF_UINT 4
#define EXPECTED_SIZEOF_INT32 4
#define EXPECTED_SIZEOF_UINT32 4
#define EXPECTED_SIZEOF_DWORD 4
#define EXPECTED_SIZEOF_DWORD32 4
#define EXPECTED_SIZEOF_LONG 4
#define EXPECTED_SIZEOF_LONG32 4
#define EXPECTED_SIZEOF_INT64 8
#define EXPECTED_SIZEOF_UINT64 8
#define EXPECTED_SIZEOF_DWORD64 8
#define EXPECTED_SIZEOF_DWORDLONG 8
#define EXPECTED_SIZEOF_LONG64 8
#define EXPECTED_SIZEOF_ULONGLONG 8
#define EXPECTED_SIZEOF_LUID 8
#define EXPECTED_SIZEOF_FILETIME 8
#define EXPECTED_SIZEOF_LARGE_INTEGER 8
#define EXPECTED_SIZEOF_ULARGE_INTEGER 8
#define EXPECTED_SIZEOF_GUID 16
#define EXPECTED_SIZEOF_SYSTEMTIME 16
#define EXPECTED_SIZEOF_SIZE_T sizeof(void*)
#define EXPECTED_SIZEOF_INT_PTR sizeof(void*)
#define EXPECTED_SIZEOF_UINT_PTR sizeof(void*)
#define EXPECTED_SIZEOF_DWORD_PTR sizeof(void*)
#define EXPECTED_SIZEOF_LONG_PTR sizeof(void*)
#define EXPECTED_SIZEOF_ULONG_PTR sizeof(void*)
#define TEST_SIZEOF_TYPE(_name) \
if (sizeof(_name) != EXPECTED_SIZEOF_##_name) \
{ \
fprintf(stderr, "sizeof(%s) mismatch: Actual: %" PRIuz ", Expected: %" PRIuz "\n", #_name, \
sizeof(_name), (size_t)EXPECTED_SIZEOF_##_name); \
status = -1; \
}
int TestTypes(int argc, char* argv[])
{
int status = 0;
TEST_SIZEOF_TYPE(INT8)
TEST_SIZEOF_TYPE(UINT8)
TEST_SIZEOF_TYPE(BYTE)
TEST_SIZEOF_TYPE(BOOLEAN)
TEST_SIZEOF_TYPE(CHAR)
TEST_SIZEOF_TYPE(UCHAR)
TEST_SIZEOF_TYPE(INT16)
TEST_SIZEOF_TYPE(UINT16)
TEST_SIZEOF_TYPE(WORD)
TEST_SIZEOF_TYPE(WCHAR)
TEST_SIZEOF_TYPE(SHORT)
TEST_SIZEOF_TYPE(USHORT)
/* fails on OS X */
// TEST_SIZEOF_TYPE(BOOL)
TEST_SIZEOF_TYPE(INT)
TEST_SIZEOF_TYPE(UINT)
TEST_SIZEOF_TYPE(DWORD)
TEST_SIZEOF_TYPE(DWORD32)
TEST_SIZEOF_TYPE(LONG)
TEST_SIZEOF_TYPE(LONG32)
TEST_SIZEOF_TYPE(INT32)
TEST_SIZEOF_TYPE(UINT32)
TEST_SIZEOF_TYPE(INT64)
TEST_SIZEOF_TYPE(UINT64)
TEST_SIZEOF_TYPE(DWORD64)
TEST_SIZEOF_TYPE(DWORDLONG)
TEST_SIZEOF_TYPE(LONG64)
TEST_SIZEOF_TYPE(ULONGLONG)
TEST_SIZEOF_TYPE(LUID)
TEST_SIZEOF_TYPE(FILETIME)
TEST_SIZEOF_TYPE(LARGE_INTEGER)
TEST_SIZEOF_TYPE(ULARGE_INTEGER)
TEST_SIZEOF_TYPE(GUID)
TEST_SIZEOF_TYPE(SYSTEMTIME)
TEST_SIZEOF_TYPE(SIZE_T)
TEST_SIZEOF_TYPE(INT_PTR)
TEST_SIZEOF_TYPE(UINT_PTR)
TEST_SIZEOF_TYPE(DWORD_PTR)
TEST_SIZEOF_TYPE(LONG_PTR)
TEST_SIZEOF_TYPE(ULONG_PTR)
return status;
}