512 lines
19 KiB
C
512 lines
19 KiB
C
#include "tests.h"
|
|
|
|
static VOID Test_buffer(
|
|
VOID
|
|
)
|
|
{
|
|
#define OUTPUT_COUNT 10
|
|
|
|
BOOLEAN result;
|
|
PH_FORMAT format[1];
|
|
WCHAR buffer[16];
|
|
SIZE_T returnLength;
|
|
|
|
format[0].Type = Int32FormatType;
|
|
format[0].u.Int32 = 1234567890;
|
|
|
|
result = PhFormatToBuffer(format, 1, buffer, (OUTPUT_COUNT + 1) * sizeof(WCHAR), &returnLength);
|
|
assert(result && wcscmp(buffer, L"1234567890") == 0 && returnLength == (OUTPUT_COUNT + 1) * sizeof(WCHAR));
|
|
result = PhFormatToBuffer(format, 1, buffer, 16 * sizeof(WCHAR), &returnLength);
|
|
assert(result && wcscmp(buffer, L"1234567890") == 0 && returnLength == (OUTPUT_COUNT + 1) * sizeof(WCHAR));
|
|
result = PhFormatToBuffer(format, 1, buffer, OUTPUT_COUNT * sizeof(WCHAR), &returnLength);
|
|
assert(!result && buffer[0] == 0 && returnLength == (OUTPUT_COUNT + 1) * sizeof(WCHAR));
|
|
result = PhFormatToBuffer(format, 1, buffer, 0, &returnLength);
|
|
assert(!result && returnLength == (OUTPUT_COUNT + 1) * sizeof(WCHAR));
|
|
result = PhFormatToBuffer(format, 1, NULL, 9999, &returnLength);
|
|
assert(!result && returnLength == (OUTPUT_COUNT + 1) * sizeof(WCHAR));
|
|
}
|
|
|
|
static VOID Test_char(
|
|
VOID
|
|
)
|
|
{
|
|
BOOLEAN result;
|
|
PH_FORMAT format[2];
|
|
WCHAR buffer[1024];
|
|
|
|
format[0].Type = CharFormatType;
|
|
format[0].u.Char = 'H';
|
|
format[1].Type = CharFormatType;
|
|
format[1].u.Char = 'i';
|
|
result = PhFormatToBuffer(format, 2, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"Hi") == 0);
|
|
}
|
|
|
|
static VOID Test_string(
|
|
VOID
|
|
)
|
|
{
|
|
BOOLEAN result;
|
|
PH_FORMAT format[4];
|
|
WCHAR buffer[1024];
|
|
|
|
format[0].Type = StringFormatType;
|
|
PhInitializeStringRef(&format[0].u.String, L"This ");
|
|
format[1].Type = StringZFormatType;
|
|
format[1].u.StringZ = L"is ";
|
|
format[2].Type = MultiByteStringFormatType;
|
|
PhInitializeBytesRef(&format[2].u.MultiByteString, "a ");
|
|
format[3].Type = MultiByteStringZFormatType;
|
|
format[3].u.MultiByteStringZ = "string.";
|
|
result = PhFormatToBuffer(format, 4, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"This is a string.") == 0);
|
|
}
|
|
|
|
static BOOLEAN IsThousandSepComma(
|
|
VOID
|
|
)
|
|
{
|
|
WCHAR thousandSep[4];
|
|
|
|
if (!GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STHOUSAND, thousandSep, 4))
|
|
return FALSE;
|
|
if (thousandSep[0] != ',' || thousandSep[1] != 0)
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
static VOID Test_integer(
|
|
VOID
|
|
)
|
|
{
|
|
BOOLEAN result;
|
|
PH_FORMAT format[1];
|
|
WCHAR buffer[1024];
|
|
|
|
// Basic
|
|
|
|
format[0].Type = Int32FormatType;
|
|
format[0].u.Int32 = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"0") == 0);
|
|
|
|
format[0].Type = Int32FormatType;
|
|
format[0].u.Int32 = 123;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"123") == 0);
|
|
|
|
format[0].Type = Int32FormatType;
|
|
format[0].u.Int32 = -123;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-123") == 0);
|
|
|
|
format[0].Type = UInt32FormatType;
|
|
format[0].u.UInt32 = -123;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"4294967173") == 0);
|
|
|
|
format[0].Type = Int64FormatType;
|
|
format[0].u.Int64 = -1234567890;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-1234567890") == 0);
|
|
|
|
format[0].Type = UInt64FormatType;
|
|
format[0].u.UInt64 = 12345678901234567890;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"12345678901234567890") == 0);
|
|
|
|
// Bases
|
|
|
|
format[0].Type = UInt64FormatType | FormatUseRadix;
|
|
format[0].u.UInt64 = 12345678901234567890;
|
|
format[0].Radix = 16;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"ab54a98ceb1f0ad2") == 0);
|
|
|
|
format[0].Type = UInt64FormatType | FormatUseRadix | FormatUpperCase;
|
|
format[0].u.UInt64 = 12345678901234567890;
|
|
format[0].Radix = 16;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"AB54A98CEB1F0AD2") == 0);
|
|
|
|
format[0].Type = Int32FormatType | FormatUseRadix;
|
|
format[0].u.Int32 = -1234;
|
|
format[0].Radix = 8;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-2322") == 0);
|
|
|
|
// Prefix sign
|
|
|
|
format[0].Type = Int32FormatType | FormatPrefixSign;
|
|
format[0].u.Int32 = 1234;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"+1234") == 0);
|
|
|
|
format[0].Type = Int32FormatType | FormatPrefixSign;
|
|
format[0].u.Int32 = -1234;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-1234") == 0);
|
|
|
|
// Zero pad
|
|
|
|
format[0].Type = Int32FormatType | FormatPadZeros;
|
|
format[0].Width = 6;
|
|
|
|
format[0].u.Int32 = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"000000") == 0);
|
|
format[0].u.Int32 = 1;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"000001") == 0);
|
|
format[0].u.Int32 = 12345;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"012345") == 0);
|
|
format[0].u.Int32 = 123456;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"123456") == 0);
|
|
format[0].u.Int32 = 1234567890;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"1234567890") == 0);
|
|
format[0].u.Int32 = -1;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-00001") == 0);
|
|
format[0].u.Int32 = -1234;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-01234") == 0);
|
|
format[0].u.Int32 = -12345;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-12345") == 0);
|
|
format[0].u.Int32 = -1234567890;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-1234567890") == 0);
|
|
|
|
// Digit grouping
|
|
|
|
if (!IsThousandSepComma())
|
|
return;
|
|
|
|
format[0].Type = Int32FormatType | FormatGroupDigits;
|
|
|
|
format[0].u.Int32 = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"0") == 0);
|
|
format[0].u.Int32 = 1;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"1") == 0);
|
|
format[0].u.Int32 = 12;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"12") == 0);
|
|
format[0].u.Int32 = 123;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"123") == 0);
|
|
format[0].u.Int32 = 1234;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"1,234") == 0);
|
|
format[0].u.Int32 = 12345;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"12,345") == 0);
|
|
format[0].u.Int32 = 123456;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"123,456") == 0);
|
|
format[0].u.Int32 = -123;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-123") == 0);
|
|
format[0].u.Int32 = -1234;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-1,234") == 0);
|
|
format[0].u.Int32 = -12345;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-12,345") == 0);
|
|
}
|
|
|
|
static VOID Test_float(
|
|
VOID
|
|
)
|
|
{
|
|
BOOLEAN result;
|
|
PH_FORMAT format[1];
|
|
WCHAR buffer[1024];
|
|
|
|
// TODO: Standard and hexadecimal form
|
|
|
|
// Basic
|
|
|
|
format[0].Type = DoubleFormatType;
|
|
format[0].u.Double = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"0.000000") == 0);
|
|
|
|
format[0].Type = DoubleFormatType;
|
|
format[0].u.Double = 1;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"1.000000") == 0);
|
|
|
|
format[0].Type = DoubleFormatType;
|
|
format[0].u.Double = 123456789;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"123456789.000000") == 0);
|
|
|
|
format[0].Type = DoubleFormatType;
|
|
format[0].u.Double = 3.14159265358979;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"3.141593") == 0);
|
|
|
|
// Precision
|
|
|
|
format[0].Type = DoubleFormatType | FormatUsePrecision;
|
|
format[0].u.Double = 0;
|
|
format[0].Precision = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"0") == 0);
|
|
|
|
format[0].Type = DoubleFormatType | FormatUsePrecision;
|
|
format[0].u.Double = 3.14159265358979;
|
|
format[0].Precision = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"3") == 0);
|
|
|
|
format[0].Type = DoubleFormatType | FormatUsePrecision;
|
|
format[0].u.Double = 3.14159265358979;
|
|
format[0].Precision = 1;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"3.1") == 0);
|
|
|
|
format[0].Type = DoubleFormatType | FormatUsePrecision;
|
|
format[0].u.Double = 3.14159265358979;
|
|
format[0].Precision = 4;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"3.1416") == 0);
|
|
|
|
// Crop zeros
|
|
|
|
format[0].Type = DoubleFormatType | FormatUsePrecision | FormatCropZeros;
|
|
format[0].u.Double = 0;
|
|
format[0].Precision = 3;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"0") == 0);
|
|
|
|
format[0].Type = DoubleFormatType | FormatUsePrecision | FormatCropZeros;
|
|
format[0].u.Double = 1.2;
|
|
format[0].Precision = 3;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"1.2") == 0);
|
|
|
|
format[0].Type = DoubleFormatType | FormatUsePrecision | FormatCropZeros;
|
|
format[0].u.Double = 1.21;
|
|
format[0].Precision = 3;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"1.21") == 0);
|
|
|
|
format[0].Type = DoubleFormatType | FormatUsePrecision | FormatCropZeros;
|
|
format[0].u.Double = 1.216;
|
|
format[0].Precision = 3;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"1.216") == 0);
|
|
|
|
format[0].Type = DoubleFormatType | FormatUsePrecision | FormatCropZeros;
|
|
format[0].u.Double = 1.2159;
|
|
format[0].Precision = 3;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"1.216") == 0);
|
|
|
|
// Prefix sign
|
|
|
|
format[0].Type = DoubleFormatType | FormatPrefixSign;
|
|
format[0].u.Double = 1234;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"+1234.000000") == 0);
|
|
|
|
format[0].Type = DoubleFormatType | FormatUsePrecision | FormatPrefixSign;
|
|
format[0].u.Double = 1234;
|
|
format[0].Precision = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"+1234") == 0);
|
|
|
|
format[0].Type = DoubleFormatType | FormatPrefixSign;
|
|
format[0].u.Double = -1234;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-1234.000000") == 0);
|
|
|
|
format[0].Type = DoubleFormatType | FormatPrefixSign;
|
|
format[0].u.Double = -1234.12;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-1234.120000") == 0);
|
|
|
|
// Zero pad
|
|
|
|
format[0].Type = DoubleFormatType | FormatUsePrecision | FormatPadZeros;
|
|
format[0].Width = 6;
|
|
|
|
format[0].u.Double = 0;
|
|
format[0].Precision = 3;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"00.000") == 0);
|
|
format[0].u.Double = 1.23;
|
|
format[0].Precision = 3;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"01.230") == 0);
|
|
format[0].u.Double = 123456;
|
|
format[0].Precision = 3;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"123456.000") == 0);
|
|
format[0].u.Double = -1.23;
|
|
format[0].Precision = 2;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-01.23") == 0);
|
|
format[0].u.Double = -1.23;
|
|
format[0].Precision = 3;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-1.230") == 0);
|
|
|
|
// Digit grouping
|
|
|
|
if (!IsThousandSepComma())
|
|
return;
|
|
|
|
format[0].Type = DoubleFormatType | FormatUsePrecision | FormatGroupDigits;
|
|
|
|
format[0].u.Double = 0;
|
|
format[0].Precision = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"0") == 0);
|
|
format[0].u.Double = 1;
|
|
format[0].Precision = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"1") == 0);
|
|
format[0].u.Double = 12;
|
|
format[0].Precision = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"12") == 0);
|
|
format[0].u.Double = 123;
|
|
format[0].Precision = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"123") == 0);
|
|
format[0].u.Double = 1234;
|
|
format[0].Precision = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"1,234") == 0);
|
|
format[0].u.Double = 12345;
|
|
format[0].Precision = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"12,345") == 0);
|
|
format[0].u.Double = 123456;
|
|
format[0].Precision = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"123,456") == 0);
|
|
format[0].u.Double = -123;
|
|
format[0].Precision = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-123") == 0);
|
|
format[0].u.Double = -1234;
|
|
format[0].Precision = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-1,234") == 0);
|
|
format[0].u.Double = -12345;
|
|
format[0].Precision = 0;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-12,345") == 0);
|
|
format[0].u.Double = -12345;
|
|
format[0].Precision = 2;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-12,345.00") == 0);
|
|
format[0].u.Double = -9876543.21;
|
|
format[0].Precision = 5;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"-9,876,543.21000") == 0);
|
|
}
|
|
|
|
static VOID Test_width(
|
|
VOID
|
|
)
|
|
{
|
|
BOOLEAN result;
|
|
PH_FORMAT format[2];
|
|
WCHAR buffer[1024];
|
|
|
|
PhInitializeStringRef(&format[0].u.String, L"asdf");
|
|
|
|
format[0].Type = StringFormatType;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"asdf") == 0);
|
|
|
|
// Left align
|
|
|
|
format[0].Type = StringFormatType | FormatLeftAlign;
|
|
format[0].Width = 4;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"asdf") == 0);
|
|
|
|
format[0].Type = StringFormatType | FormatLeftAlign;
|
|
format[0].Width = 2;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"asdf") == 0);
|
|
|
|
format[0].Type = StringFormatType | FormatLeftAlign;
|
|
format[0].Width = 5;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"asdf ") == 0);
|
|
|
|
format[0].Type = StringFormatType | FormatLeftAlign;
|
|
format[0].Width = 10;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"asdf ") == 0);
|
|
|
|
format[0].Type = StringFormatType | FormatLeftAlign | FormatUsePad;
|
|
format[0].Width = 6;
|
|
format[0].Pad = '!';
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"asdf!!") == 0);
|
|
|
|
// Right align
|
|
|
|
format[0].Type = StringFormatType | FormatRightAlign;
|
|
format[0].Width = 4;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"asdf") == 0);
|
|
|
|
format[0].Type = StringFormatType | FormatRightAlign;
|
|
format[0].Width = 2;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"asdf") == 0);
|
|
|
|
format[0].Type = StringFormatType | FormatRightAlign;
|
|
format[0].Width = 5;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L" asdf") == 0);
|
|
|
|
format[0].Type = StringFormatType | FormatRightAlign;
|
|
format[0].Width = 10;
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L" asdf") == 0);
|
|
|
|
format[0].Type = StringFormatType | FormatRightAlign | FormatUsePad;
|
|
format[0].Width = 6;
|
|
format[0].Pad = '!';
|
|
result = PhFormatToBuffer(format, 1, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L"!!asdf") == 0);
|
|
|
|
// Multiple
|
|
|
|
format[0].Type = Int32FormatType | FormatRightAlign;
|
|
format[0].u.Int32 = 1234;
|
|
format[0].Width = 7;
|
|
format[1].Type = StringZFormatType | FormatLeftAlign;
|
|
format[1].u.StringZ = L"asdf";
|
|
format[1].Width = 10;
|
|
result = PhFormatToBuffer(format, 2, buffer, sizeof(buffer), NULL);
|
|
assert(result && wcscmp(buffer, L" 1234asdf ") == 0);
|
|
}
|
|
|
|
VOID Test_format(
|
|
VOID
|
|
)
|
|
{
|
|
Test_buffer();
|
|
Test_char();
|
|
Test_string();
|
|
Test_integer();
|
|
Test_float();
|
|
Test_width();
|
|
}
|