int __cdecl main(int argc, char *argv[]) { WCHAR *checkstr; WCHAR buf[256] = { 0 }; int ret; if (PAL_Initialize(argc, argv) != 0) { return(FAIL); } checkstr = convert("hello world"); TestVsnwprintf(buf, 256, checkstr); if (memcmp(checkstr, buf, wcslen(checkstr)*2+2) != 0) { Fail("ERROR: Expected \"%s\", got \"%s\"\n", convertC(checkstr), convertC(buf)); } TestVsnwprintf(buf, 256, convert("xxxxxxxxxxxxxxxxx")); ret = TestVsnwprintf(buf, 8, checkstr); if (memcmp(checkstr, buf, 16) != 0) { Fail("ERROR: Expected \"%8s\", got \"%8s\"\n", convertC(checkstr), convertC(buf)); } if (ret >= 0) { Fail("ERROR: Expected negative return value, got %d.\n", ret); } if (buf[8] != (WCHAR) 'x') { Fail("ERROR: buffer overflow using \"%s\" with length 8.\n", convertC(checkstr)); } PAL_Terminate(); return PASS; }
static void DoI64DoubleTest(WCHAR *formatstr, INT64 value, WCHAR *valuestr, WCHAR *checkstr1) { WCHAR buf[256] = { 0 }; TestVsnwprintf(buf, 256, formatstr, value); if (memcmp(buf, checkstr1, wcslen(checkstr1) + 2) != 0) { Fail("ERROR: failed to insert %s into \"%s\"\n" "Expected \"%s\", got \"%s\".\n", value, convertC(formatstr), convertC(checkstr1), convertC(buf)); } }
/* ditto with wcslen */ static void DoPointerTest(WCHAR *formatstr, void* param, WCHAR* paramstr, WCHAR *checkstr1) { WCHAR buf[256] = { 0 }; TestVsnwprintf(buf, 256, formatstr, param); if (memcmp(buf, checkstr1, wcslen(checkstr1) + 2) != 0) { Fail("ERROR: failed to insert pointer to %#p into \"%s\"\n" "Expected \"%s\" got \"%s\".\n", paramstr, convertC(formatstr), convertC(checkstr1), convertC(buf)); } }
void DoArgumentPrecDoubleTest(WCHAR *formatstr, int precision, double param, WCHAR *checkstr1, WCHAR *checkstr2) { WCHAR buf[256]; TestVsnwprintf(buf, 256, formatstr, precision, param); if (memcmp(buf, checkstr1, wcslen(checkstr1) + 2) != 0 && memcmp(buf, checkstr2, wcslen(checkstr2) + 2) != 0) { Fail("ERROR: failed to insert %f into \"%s\" with precision %d\n" "Expected \"%s\" or \"%s\", got \"%s\".\n", param, convertC(formatstr), precision, convertC(checkstr1), convertC(checkstr2), convertC(buf)); } }
static void DoShortTest(WCHAR *formatstr, int param, WCHAR *checkstr) { WCHAR buf[256] = { 0 }; short int n = -1; TestVsnwprintf(buf, 256, formatstr, &n); if (n != param) { Fail("ERROR: Expected count parameter to resolve to %d, got %d\n", param, n); } if (memcmp(buf, checkstr, wcslen(buf)*2 + 2) != 0) { Fail("ERROR: Expected \"%s\" got \"%s\".\n", convertC(checkstr), convertC(buf)); } }