📄 string.c
字号:
ok(memcmp(dest_str, ulong2str->Buffer, LARGE_STRI_BUFFER_LENGTH) == 0,
"(test %d): _itoa(%d, [out], %d) assigns string \"%s\", expected: \"%s\"\n",
test_num, value, ulong2str->base, dest_str, ulong2str->Buffer);
}
static void one_ltoa_test(int test_num, const ulong2str_t *ulong2str)
{
char dest_str[LARGE_STRI_BUFFER_LENGTH + 1];
long value;
LPSTR result;
memset(dest_str, '-', LARGE_STRI_BUFFER_LENGTH);
dest_str[LARGE_STRI_BUFFER_LENGTH] = '\0';
value = ulong2str->value;
result = p_ltoa(ulong2str->value, dest_str, ulong2str->base);
ok(result == dest_str,
"(test %d): _ltoa(%ld, [out], %d) has result %p, expected: %p\n",
test_num, value, ulong2str->base, result, dest_str);
ok(memcmp(dest_str, ulong2str->Buffer, LARGE_STRI_BUFFER_LENGTH) == 0,
"(test %d): _ltoa(%ld, [out], %d) assigns string \"%s\", expected: \"%s\"\n",
test_num, value, ulong2str->base, dest_str, ulong2str->Buffer);
}
static void one_ultoa_test(int test_num, const ulong2str_t *ulong2str)
{
char dest_str[LARGE_STRI_BUFFER_LENGTH + 1];
unsigned long value;
LPSTR result;
memset(dest_str, '-', LARGE_STRI_BUFFER_LENGTH);
dest_str[LARGE_STRI_BUFFER_LENGTH] = '\0';
value = ulong2str->value;
result = p_ultoa(ulong2str->value, dest_str, ulong2str->base);
ok(result == dest_str,
"(test %d): _ultoa(%lu, [out], %d) has result %p, expected: %p\n",
test_num, value, ulong2str->base, result, dest_str);
ok(memcmp(dest_str, ulong2str->Buffer, LARGE_STRI_BUFFER_LENGTH) == 0,
"(test %d): _ultoa(%lu, [out], %d) assigns string \"%s\", expected: \"%s\"\n",
test_num, value, ulong2str->base, dest_str, ulong2str->Buffer);
}
static void test_ulongtoa(void)
{
int test_num;
for (test_num = 0; test_num < NB_ULONG2STR; test_num++) {
if (ulong2str[test_num].mask & 0x01) {
one_itoa_test(test_num, &ulong2str[test_num]);
} /* if */
if (ulong2str[test_num].mask & 0x02) {
one_ltoa_test(test_num, &ulong2str[test_num]);
} /* if */
if (ulong2str[test_num].mask & 0x04) {
one_ultoa_test(test_num, &ulong2str[test_num]);
} /* if */
} /* for */
}
static void one_itow_test(int test_num, const ulong2str_t *ulong2str)
{
int pos;
WCHAR expected_wstr[LARGE_STRI_BUFFER_LENGTH + 1];
WCHAR dest_wstr[LARGE_STRI_BUFFER_LENGTH + 1];
UNICODE_STRING unicode_string;
STRING ansi_str;
int value;
LPWSTR result;
for (pos = 0; pos < LARGE_STRI_BUFFER_LENGTH; pos++) {
expected_wstr[pos] = ulong2str->Buffer[pos];
} /* for */
expected_wstr[LARGE_STRI_BUFFER_LENGTH] = '\0';
for (pos = 0; pos < LARGE_STRI_BUFFER_LENGTH; pos++) {
dest_wstr[pos] = '-';
} /* for */
dest_wstr[LARGE_STRI_BUFFER_LENGTH] = '\0';
unicode_string.Length = LARGE_STRI_BUFFER_LENGTH * sizeof(WCHAR);
unicode_string.MaximumLength = unicode_string.Length + sizeof(WCHAR);
unicode_string.Buffer = dest_wstr;
value = ulong2str->value;
result = p_itow(value, dest_wstr, ulong2str->base);
pRtlUnicodeStringToAnsiString(&ansi_str, &unicode_string, 1);
ok(result == dest_wstr,
"(test %d): _itow(%d, [out], %d) has result %p, expected: %p\n",
test_num, value, ulong2str->base, result, dest_wstr);
ok(memcmp(dest_wstr, expected_wstr, LARGE_STRI_BUFFER_LENGTH * sizeof(WCHAR)) == 0,
"(test %d): _itow(%d, [out], %d) assigns string \"%s\", expected: \"%s\"\n",
test_num, value, ulong2str->base, ansi_str.Buffer, ulong2str->Buffer);
pRtlFreeAnsiString(&ansi_str);
}
static void one_ltow_test(int test_num, const ulong2str_t *ulong2str)
{
int pos;
WCHAR expected_wstr[LARGE_STRI_BUFFER_LENGTH + 1];
WCHAR dest_wstr[LARGE_STRI_BUFFER_LENGTH + 1];
UNICODE_STRING unicode_string;
STRING ansi_str;
long value;
LPWSTR result;
for (pos = 0; pos < LARGE_STRI_BUFFER_LENGTH; pos++) {
expected_wstr[pos] = ulong2str->Buffer[pos];
} /* for */
expected_wstr[LARGE_STRI_BUFFER_LENGTH] = '\0';
for (pos = 0; pos < LARGE_STRI_BUFFER_LENGTH; pos++) {
dest_wstr[pos] = '-';
} /* for */
dest_wstr[LARGE_STRI_BUFFER_LENGTH] = '\0';
unicode_string.Length = LARGE_STRI_BUFFER_LENGTH * sizeof(WCHAR);
unicode_string.MaximumLength = unicode_string.Length + sizeof(WCHAR);
unicode_string.Buffer = dest_wstr;
value = ulong2str->value;
result = p_ltow(value, dest_wstr, ulong2str->base);
pRtlUnicodeStringToAnsiString(&ansi_str, &unicode_string, 1);
ok(result == dest_wstr,
"(test %d): _ltow(%ld, [out], %d) has result %p, expected: %p\n",
test_num, value, ulong2str->base, result, dest_wstr);
ok(memcmp(dest_wstr, expected_wstr, LARGE_STRI_BUFFER_LENGTH * sizeof(WCHAR)) == 0,
"(test %d): _ltow(%ld, [out], %d) assigns string \"%s\", expected: \"%s\"\n",
test_num, value, ulong2str->base, ansi_str.Buffer, ulong2str->Buffer);
pRtlFreeAnsiString(&ansi_str);
}
static void one_ultow_test(int test_num, const ulong2str_t *ulong2str)
{
int pos;
WCHAR expected_wstr[LARGE_STRI_BUFFER_LENGTH + 1];
WCHAR dest_wstr[LARGE_STRI_BUFFER_LENGTH + 1];
UNICODE_STRING unicode_string;
STRING ansi_str;
unsigned long value;
LPWSTR result;
for (pos = 0; pos < LARGE_STRI_BUFFER_LENGTH; pos++) {
expected_wstr[pos] = ulong2str->Buffer[pos];
} /* for */
expected_wstr[LARGE_STRI_BUFFER_LENGTH] = '\0';
for (pos = 0; pos < LARGE_STRI_BUFFER_LENGTH; pos++) {
dest_wstr[pos] = '-';
} /* for */
dest_wstr[LARGE_STRI_BUFFER_LENGTH] = '\0';
unicode_string.Length = LARGE_STRI_BUFFER_LENGTH * sizeof(WCHAR);
unicode_string.MaximumLength = unicode_string.Length + sizeof(WCHAR);
unicode_string.Buffer = dest_wstr;
value = ulong2str->value;
result = p_ultow(value, dest_wstr, ulong2str->base);
pRtlUnicodeStringToAnsiString(&ansi_str, &unicode_string, 1);
ok(result == dest_wstr,
"(test %d): _ultow(%lu, [out], %d) has result %p, expected: %p\n",
test_num, value, ulong2str->base, result, dest_wstr);
ok(memcmp(dest_wstr, expected_wstr, LARGE_STRI_BUFFER_LENGTH * sizeof(WCHAR)) == 0,
"(test %d): _ultow(%lu, [out], %d) assigns string \"%s\", expected: \"%s\"\n",
test_num, value, ulong2str->base, ansi_str.Buffer, ulong2str->Buffer);
pRtlFreeAnsiString(&ansi_str);
}
static void test_ulongtow(void)
{
int test_num;
int pos;
WCHAR expected_wstr[LARGE_STRI_BUFFER_LENGTH + 1];
LPWSTR result;
for (test_num = 0; test_num < NB_ULONG2STR; test_num++) {
if (ulong2str[test_num].mask & 0x10) {
one_itow_test(test_num, &ulong2str[test_num]);
} /* if */
if (ulong2str[test_num].mask & 0x20) {
one_ltow_test(test_num, &ulong2str[test_num]);
} /* if */
if (ulong2str[test_num].mask & 0x40) {
one_ultow_test(test_num, &ulong2str[test_num]);
} /* if */
} /* for */
for (pos = 0; pos < LARGE_STRI_BUFFER_LENGTH; pos++) {
expected_wstr[pos] = ulong2str[0].Buffer[pos];
} /* for */
expected_wstr[LARGE_STRI_BUFFER_LENGTH] = '\0';
result = p_itow(ulong2str[0].value, NULL, 10);
ok(result == NULL,
"(test a): _itow(%ld, NULL, 10) has result %p, expected: NULL\n",
ulong2str[0].value, result);
for (pos = 0; pos < LARGE_STRI_BUFFER_LENGTH; pos++) {
expected_wstr[pos] = ulong2str[0].Buffer[pos];
} /* for */
expected_wstr[LARGE_STRI_BUFFER_LENGTH] = '\0';
result = p_ltow(ulong2str[0].value, NULL, 10);
ok(result == NULL,
"(test b): _ltow(%ld, NULL, 10) has result %p, expected: NULL\n",
ulong2str[0].value, result);
for (pos = 0; pos < LARGE_STRI_BUFFER_LENGTH; pos++) {
expected_wstr[pos] = ulong2str[0].Buffer[pos];
} /* for */
expected_wstr[LARGE_STRI_BUFFER_LENGTH] = '\0';
result = p_ultow(ulong2str[0].value, NULL, 10);
ok(result == NULL,
"(test c): _ultow(%ld, NULL, 10) has result %p, expected: NULL\n",
ulong2str[0].value, result);
}
#define ULL(a,b) (((ULONGLONG)(a) << 32) | (b))
typedef struct {
int base;
ULONGLONG value;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -