43 ok( (needed > 0),
"returned %d with %lu (expected '> 0')\n",
55 ok( (
len > 0),
"returned %d with %lu and '%s' (expected '> 0')\n",
63 ok( (
len > 0),
"returned %d with %lu and '%s' (expected '> 0')\n",
72 "returned %d with %lu and '%s' (expected '0' with "
75 ok(
buffer[6] ==
'x',
"expected buf[5]=='x', got \"%s\"\n",
buffer);
82 "returned %d with %lu and '%s' (expected '0' with "
84 ok(
buffer[0] ==
'f',
"expected buf[1]=='f', got \"%s\"\n",
buffer);
85 ok(
buffer[1] ==
'x',
"expected buf[1]=='x', got \"%s\"\n",
buffer);
89 ok( (
len > 0),
"returned %d with %lu (expected '> 0')\n",
95 "returned %d with %lu (expected '0' with "
111 "WideCharToMultiByte returned %d with GLE=%lu (expected 0 with ERROR_INVALID_PARAMETER)\n",
118 "WideCharToMultiByte returned %d with GLE=%lu (expected 0 with ERROR_INVALID_PARAMETER)\n",
133 "WideCharToMultiByte(-2002): len=%d error=%lu\n",
len,
GetLastError());
135 "WideCharToMultiByte(-2002): expected \"foobar\" got \"%s\"\n",
buf);
138 memset(bufW,
'x',
sizeof(bufW));
141 "MultiByteToWideChar(-2002): len=%d error=%lu\n",
len,
GetLastError());
144 memset(bufW,
'x',
sizeof(bufW));
150#define LONGBUFLEN 100000
162 memset(bufA,
'x',
sizeof(bufA));
165 "WideCharToMultiByte(destlen -1): len=%d error=%lx\n",
len,
GetLastError());
168 memset(bufW,
'x',
sizeof(bufW));
171 "MultiByteToWideChar(destlen -1): len=%d error=%lx\n",
len,
GetLastError());
175 memset(bufA,
'x',
sizeof(bufA));
178 "WideCharToMultiByte(destlen -1000): len=%d error=%lx\n",
len,
GetLastError());
181 memset(bufW,
'x',
sizeof(bufW));
184 "MultiByteToWideChar(destlen -1000): len=%d error=%lx\n",
len,
GetLastError());
188 memset(bufA,
'x',
sizeof(bufA));
191 "WideCharToMultiByte(destlen INT_MAX): len=%d error=%lx\n",
len,
GetLastError());
195 memset(bufA,
'x',
sizeof(bufA));
205 "WideCharToMultiByte(srclen %d, destlen INT_MAX): len %d error=%lx\n",
LONGBUFLEN,
len, theError);
211 char c_string[] =
"Hello World";
212 size_t c_string_len =
sizeof(c_string);
213 WCHAR w_string[] = {
'H',
'e',
'l',
'l',
'o',
' ',
'W',
'o',
'r',
'l',
'd',0};
315 ok(
len == 0,
"wrong ret %d\n",
len);
322 static const WCHAR strW[] = {
'j',
'u',
's',
't',
' ',
'a',
' ',
't',
'e',
's',
't',0};
323 static const char strA[] =
"just a test";
328 size_t overlap_limit = (
sizeof(
strW)-
sizeof(
strA)) - (
sizeof(
strW[0])-
sizeof(
strA[0]));
352 static const WCHAR wcs[] = {
'T',
'h', 1088,
'i', 0};
353 static const WCHAR dbwcs[] = {28953, 25152, 0};
354 static const WCHAR dbwcs2[] = {0x7bb8, 0x3d, 0xc813, 0xac00, 0xb77d, 0};
355 static const char default_char[] = {0xa3, 0xbf, 0};
360 ok(
mbc ==
'\xe4',
"mbc is %d\n",
mbc);
361 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
FALSE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
368 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
TRUE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
376 ok(
mbc ==
'\xf0',
"mbc is %d\n",
mbc);
377 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
FALSE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
386 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
FALSE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
390 skip(
"Codepage 1251 not available\n");
397 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
FALSE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
404 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
TRUE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
414 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
TRUE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
423 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
TRUE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
430 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
TRUE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
434 ok(!
strcmp(
mbs,
"\xf3\xe7\x3d\xa3\xbf\xa3\xbf\xa3\xbf"),
"mbs is %s\n",
mbs);
435 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
TRUE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
441 ok(
mbs[0] ==
'\0',
"mbs is %s\n",
mbs);
442 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
FALSE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
451 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
FALSE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
458 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
TRUE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
464 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
TRUE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
469 skip(
"Codepage 950 not available\n");
478 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
FALSE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
484 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
FALSE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
492 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
FALSE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
499 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
FALSE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
505 if(bUsedDefaultChar)
ok(*bUsedDefaultChar ==
FALSE,
"bUsedDefaultChar is %d\n", *bUsedDefaultChar);
513 int i,
len, expected_len;
515 static const BOOL directly_encodable_table[] =
517 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
518 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
519 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1,
520 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
521 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
522 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
523 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
524 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0
526 static const char base64_encoding_table[] =
527 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
537 char expected_dst[16];
545 {0x4F60,0x597D,0x5417,0}, -1, output,
sizeof(output) - 1,
550 {0x4F60,0x597D,0x5417,0}, -2, output,
sizeof(output) - 1,
555 {0x4F60,0x597D,0x5417,0}, -1, output, 10,
560 {0x4F60,0x597D,0x5417,0}, -1, output, 11,
565 {0x4F60,0x597D,0x5417,0}, -1, output, 12,
570 {0x4F60,0x597D,0x5417,0}, -1,
NULL, 0,
571#if defined(__REACTOS__) && defined(_MSC_VER)
579 {0x4F60,0x597D,0x5417,0}, -1, output, 0,
580#if defined(__REACTOS__) && defined(_MSC_VER)
588 {
'h',
'e',
'l',
'l',
'o',0}, 2, output,
sizeof(output) - 1,
593 {0x4F60,0x597D,0x5417,0}, 2, output,
sizeof(output) - 1,
598 {0}, -1, output,
sizeof(output) - 1,
603 {
'h',
'e',
'l',
'l',
'o',0}, -1, output, 2,
608 {0x4F60,0x0001,0}, -1, output, 2,
613 {0x4F60,0x0001,0}, -1, output, 3,
618 {0x4F60,0x0001,0}, -1, output, 4,
623 {0x4F60,0}, -1, output, 1,
629 {0x4F60,0x597D,0x5417,0}, -1, output, 9,
635 {0x4F60,0}, -1, output, 4,
640 {
'+',0}, -1, output, 1,
646 for (
i = 0;
i <= 0xFFFF;
i++)
653 memset(output,
'#',
sizeof(output) - 1);
654 output[
sizeof(output) - 1] = 0;
664 else if (
i <= 0x7F && directly_encodable_table[
i])
675 base64_encoding_table[(
i & 0xFC00) >> 10],
676 base64_encoding_table[(
i & 0x03F0) >> 4],
677 base64_encoding_table[(
i & 0x000F) << 2]);
680 ok(
len == expected_len,
"i=0x%04x: expected len=%i, got len=%i\n",
i, expected_len,
len);
682 "i=0x%04x: expected output='%s', got output='%s'\n",
i,
expected, output);
683 ok(output[expected_len] ==
'#',
"i=0x%04x: expected output[%i]='#', got output[%i]=%i\n",
684 i, expected_len, expected_len, output[expected_len]);
689 for (
i = 0;
i <= 0xFFFF;
i++)
696 memset(output,
'#',
sizeof(output) - 1);
697 output[
sizeof(output) - 1] = 0;
707 else if (
i <= 0x7F && directly_encodable_table[
i])
718 base64_encoding_table[8 | ((
i & 0xC000) >> 14)],
719 base64_encoding_table[(
i & 0x3F00) >> 8],
720 base64_encoding_table[(
i & 0x00FC) >> 2],
721 base64_encoding_table[((
i & 0x0003) << 4) | 2]);
724 ok(
len == expected_len,
"i=0x%04x: expected len=%i, got len=%i\n",
i, expected_len,
len);
726 "i=0x%04x: expected output='%s', got output='%s'\n",
i,
expected, output);
727 ok(output[expected_len] ==
'#',
"i=0x%04x: expected output[%i]='#', got output[%i]=%i\n",
728 i, expected_len, expected_len, output[expected_len]);
733 memset(output,
'#',
sizeof(output) - 1);
734 output[
sizeof(output) - 1] = 0;
743 "tests[%i]: expected error=0x%x, got error=0x%lx\n",
751 "tests[%i]: expected dst='%s', got dst='%s'\n",
754 "tests[%i]: expected dst[%i]='#', got dst[%i]=%i\n",
764 int i,
len, expected_len;
766 static const signed char base64_decoding_table[] =
768 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
769 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
770 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
771 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
772 -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
773 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
774 -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
775 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1
786 WCHAR expected_dst[32];
794 "+T2BZfQ-", -1, output,
ARRAY_SIZE(output) - 1,
795 {0x4F60,0x597D,0}, 3, 3
799 "+T2BZfQ-", -2, output,
ARRAY_SIZE(output) - 1,
800 {0x4F60,0x597D,0}, 3, 3
804 "+T2BZfQ-", -1, output, 2,
805 {0x4F60,0x597D}, 2, 0
809 "+T2BZfQ-", -1, output, 3,
810 {0x4F60,0x597D,0}, 3, 3
814 "+T2BZfQ-", -1, output, 4,
815 {0x4F60,0x597D,0}, 3, 3
819 "+T2BZfQ-", -1,
NULL, 0,
820#if defined(__REACTOS__) && defined(_MSC_VER)
828 "+T2BZfQ-", -1, output, 0,
829#if defined(__REACTOS__) && defined(_MSC_VER)
837 "+T-+T-+T-hello", -1, output,
ARRAY_SIZE(output) - 1,
838 {
'h',
'e',
'l',
'l',
'o',0}, 6, 6
842 "+T2-+T2-+T2-hello", -1, output,
ARRAY_SIZE(output) - 1,
843 {
'h',
'e',
'l',
'l',
'o',0}, 6, 6
847 "+T2B-+T2B-+T2B-hello", -1, output,
ARRAY_SIZE(output) - 1,
848 {0x4F60,0x4F60,0x4F60,
'h',
'e',
'l',
'l',
'o',0}, 9, 9
852 "+T2BZ-+T2BZ-+T2BZ-hello", -1, output,
ARRAY_SIZE(output) - 1,
853 {0x4F60,0x4F60,0x4F60,
'h',
'e',
'l',
'l',
'o',0}, 9, 9
857 "+T2BZ-\x82\xFE", -1, output,
ARRAY_SIZE(output) - 1,
858 {0x4F60,0x0082,0x00FE,0}, 4, 4
872 "+T2BZfQ-", 4, output,
ARRAY_SIZE(output) - 1,
898#if defined(__REACTOS__) && defined(_MSC_VER)
911 "hello", -1, output, 2,
916 "+T2BZfQ-", -1, output, 1,
922 for (
i = 0;
i < 256;
i++)
926 memset(output, 0x23,
sizeof(output) -
sizeof(
WCHAR));
939 else if (
i <= 0x7F && base64_decoding_table[
i] != -1)
943 expected[0] = (base64_decoding_table[
i] << 10) | 0x03E0;
956 ok(
len == expected_len,
"i=0x%02x: expected len=%i, got len=%i\n",
i, expected_len,
len);
958 "i=0x%02x: expected output=%s, got output=%s\n",
964 for (
i = 0;
i < 256;
i++)
968 memset(output, 0x23,
sizeof(output) -
sizeof(
WCHAR));
982 if (base64_decoding_table[
i] != -1)
986 expected[0] = 0x0400 | (base64_decoding_table[
i] << 4) | 0x000F;
1009 ok(
len == expected_len,
"i=0x%02x: expected len=%i, got len=%i\n",
i, expected_len,
len);
1011 "i=0x%02x: expected output=%s, got output=%s\n",
1017 memset(output, 0x23,
sizeof(output) -
sizeof(
WCHAR));
1024 tests[
i].expected_dst[
tests[
i].chars_written] = 0x2323;
1029 "tests[%i]: expected error=0x%x, got error=0x%lx\n",
1037 "tests[%i]: expected dst=%s, got dst=%s\n",
1046 static const struct tag_testset {
1051 { 37,
"\x6f",
FALSE },
1052 { 874,
"\xdd",
TRUE },
1053 { 932,
"\xfe",
TRUE },
1054 { 932,
"\x80",
FALSE },
1055 { 932,
"\x81\x45",
FALSE },
1056 { 936,
"\xff",
TRUE },
1057 { 949,
"\xff",
TRUE },
1058 { 950,
"\xff",
TRUE },
1059 { 1252,
"?",
FALSE },
1060 { 1252,
"\x90",
FALSE },
1061 { 1253,
"\xaa",
TRUE },
1062 { 1255,
"\xff",
TRUE },
1063 { 1257,
"\xa5",
TRUE },
1079 if (testset[
i].is_error) {
1081 ok(
ret == 0,
"Test %u: ret is %d\n",
i,
ret);
1084 ok(
err == 0xdeadbeef,
"Test %u: err is %lu\n",
i,
err);
1085 ok(
ret == 2,
"Test %u: ret is %d\n",
i,
ret);
1092 ok(
err == 0xdeadbeef,
"Test %u: err is %lu\n",
i,
err);
1093 ok(
ret == 2,
"Test %u: ret is %d\n",
i,
ret);
1106 BOOL islead, islead_default;
1125 struct test_islead_nocp {
1128 } isleads_nocp[] = {
1140 struct test_islead {
1145 { ENGLISH, 0x00,
FALSE },
1146 { ENGLISH, 0x81,
FALSE },
1147 { ENGLISH, 0xa0,
FALSE },
1148 { ENGLISH, 0xe0,
FALSE },
1150 { RUSSIAN, 0x00,
FALSE },
1151 { RUSSIAN, 0x81,
FALSE },
1152 { RUSSIAN, 0xa0,
FALSE },
1153 { RUSSIAN, 0xe0,
FALSE },
1155 { JAPANESE, 0x00,
FALSE },
1156 { JAPANESE, 0x81,
TRUE },
1157 { JAPANESE, 0xa0,
FALSE },
1158 { JAPANESE, 0xe0,
TRUE },
1160 { CHINESE, 0x00,
FALSE },
1161 { CHINESE, 0x81,
TRUE },
1162 { CHINESE, 0xa0,
TRUE },
1163 { CHINESE, 0xe0,
TRUE },
1175 ok(
cp == lcids[
i].threadcp,
"wrong codepage %u for lcid %04lx, should be %u\n",
cp, lcids[
i].
lcid, lcids[
i].threadcp);
1179 memset(&cpi, 0,
sizeof(cpi));
1182 ok(cpi.
CodePage == acp,
"wrong codepage %u for lcid %04lx, should be %u\n", cpi.
CodePage, lcids[
i].lcid, acp);
1194 memset(&cpi, 0,
sizeof(cpi));
1197 if (lcids[
i].threadcp)
1199 "wrong codepage %u for lcid %04lx, should be %u\n",
1200 cpi.
CodePage, lcids[
i].lcid, lcids[
i].threadcp);
1203 "wrong codepage %u for lcid %04lx, should be %u\n", cpi.
CodePage, lcids[
i].lcid, acp);
1223 ok(islead == islead_default,
"wrong islead %i for test char %x in lcid %04lx. should be %i\n",
1224 islead, isleads_nocp[
i].testchar, isleads_nocp[
i].
lcid, islead_default);
1235 "wrong islead %i for test char %x in lcid %04lx. should be %i\n",
1236 islead, isleads[
i].testchar, isleads[
i].lcid, isleads[
i].islead);
1246 unsigned char buf[] = {0xbf, 0xb4, 0xc7,
'\0',
'x'};
1263 memset(wbuf, 0xff,
sizeof(wbuf));
1268 ok(count2 == 1,
"%04lx: returned %d (expected 1)\n",
flags[
i], count2);
1269 ok(wbuf[0] == 0x770b,
"%04lx: returned %04x (expected 770b)\n",
flags[
i], wbuf[0]);
1270 ok(wbuf[1] == 0xffff,
"%04lx: returned %04x (expected ffff)\n",
flags[
i], wbuf[1]);
1275 memset(wbuf, 0xff,
sizeof(wbuf));
1283 ok(count2 == 0,
"%04lx: returned %d (expected 0)\n",
flags[
i], count2);
1290 ok(count2 == 2,
"%04lx: returned %d (expected 2)\n",
flags[
i], count2);
1291 ok(wbuf[0] == 0x770b,
"%04lx: returned %04x (expected 770b)\n",
flags[
i], wbuf[0]);
1292 ok(wbuf[1] == 0x003f ||
broken(wbuf[1] == 0),
1293 "%04lx: wrong wide char: %04x\n",
flags[
i], wbuf[1]);
1294 ok(wbuf[2] == 0xffff,
"%04lx: returned %04x (expected ffff)\n",
flags[
i], wbuf[2]);
1301 memset(wbuf, 0xff,
sizeof(wbuf));
1315 WCHAR wbuf_ok[] = { 0x770b, 0x003f,
'\0', 0xffff };
1316 WCHAR wbuf_broken[] = { 0x770b,
'\0', 0xffff, 0xffff };
1318 "%04lx: returned %d (expected 3)\n",
flags[
i],
count);
1319 ok(!
memcmp(wbuf, wbuf_ok,
sizeof(wbuf_ok))
1320 ||
broken(!
memcmp(wbuf, wbuf_broken,
sizeof(wbuf_broken))),
1321 "%04lx: returned %04x %04x %04x %04x (expected %04x %04x %04x %04x)\n",
1322 flags[
i], wbuf[0], wbuf[1], wbuf[2], wbuf[3],
1323 wbuf_ok[0], wbuf_ok[1], wbuf_ok[2], wbuf_ok[3]);
1330 memset(wbuf, 0xff,
sizeof(wbuf));
1344 WCHAR wbuf_ok[] = { 0x770b, 0x003f,
'\0',
'x', 0xffff };
1345 WCHAR wbuf_broken[] = { 0x770b,
'\0',
'x', 0xffff, 0xffff };
1347 "%04lx: returned %d (expected 4)\n",
flags[
i],
count);
1348 ok(!
memcmp(wbuf, wbuf_ok,
sizeof(wbuf_ok))
1349 ||
broken(!
memcmp(wbuf, wbuf_broken,
sizeof(wbuf_broken))),
1350 "%04lx: returned %04x %04x %04x %04x %04x (expected %04x %04x %04x %04x %04x)\n",
1351 flags[
i], wbuf[0], wbuf[1], wbuf[2], wbuf[3], wbuf[4],
1352 wbuf_ok[0], wbuf_ok[1], wbuf_ok[2], wbuf_ok[3], wbuf_ok[4]);
1359 BOOL bUsedDefaultChar;
static void test_threadcp(void)
static const WCHAR foobarW[]
static void test_other_invalid_parameters(void)
static void test_undefined_byte_char(void)
static void test_negative_source_length(void)
static const char foobarA[]
static void test_null_source(void)
static void test_utf7_decoding(void)
static void test_destination_buffer(void)
static void test_negative_dest_length(void)
static void test_utf7_encoding(void)
static void test_overlapped_buffers(void)
static void test_dbcs_to_widechar(void)
static void test_string_conversion(LPBOOL bUsedDefaultChar)
#define ERROR_INSUFFICIENT_BUFFER
#define ERROR_INVALID_PARAMETER
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
LCID WINAPI GetThreadLocale(void)
BOOL WINAPI SetThreadLocale(LCID lcid)
BOOL WINAPI IsValidCodePage(UINT codepage)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
INT WINAPI GetLocaleInfoA(LCID lcid, LCTYPE lctype, LPSTR buffer, INT len)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
BOOL WINAPI IsDBCSLeadByteEx(UINT codepage, BYTE testchar)
BOOL WINAPI GetCPInfoExA(UINT codepage, DWORD dwFlags, LPCPINFOEXA cpinfo)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
_ACRTIMP int __cdecl strncmp(const char *, const char *, size_t)
#define FillMemory(BUF, SIZ, MASK)
GLuint GLuint GLsizei count
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLenum GLenum input
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define WC_COMPOSITECHECK
#define MB_ERR_INVALID_CHARS
#define memcpy(s1, s2, n)
static struct test_info tests[]
static DWORD LPDWORD LPCSTR DWORD srclen
#define MAKELCID(lgid, srtid)
#define SUBLANG_JAPANESE_JAPAN
#define SUBLANG_HINDI_INDIA
#define SUBLANG_RUSSIAN_RUSSIA
#define SUBLANG_CHINESE_SIMPLIFIED
#define SUBLANG_GEORGIAN_GEORGIA
#define SUBLANG_ENGLISH_US
_In_ size_t const maxsize
DWORD WINAPI GetLastError(void)
#define ERROR_NO_UNICODE_TRANSLATION
#define ERROR_INVALID_FLAGS
#define LOCALE_IDEFAULTANSICODEPAGE