Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
**==========================================================================*/

#include <palsuite.h>
#include <minipal/utf8.h>

PALTEST(locale_info_MultiByteToWideChar_test4_paltest_multibytetowidechar_test4, "locale_info/MultiByteToWideChar/test4/paltest_multibytetowidechar_test4")
{
Expand Down Expand Up @@ -222,6 +223,41 @@ PALTEST(locale_info_MultiByteToWideChar_test4_paltest_multibytetowidechar_test4,

free(wideBuffer);
}

#if BIGENDIAN
{
const char* ascii = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456";
const size_t asciiLengthWithTerminator = strlen(ascii) + 1;
const unsigned int flags = MINIPAL_TREAT_AS_LITTLE_ENDIAN;

size_t requiredLength = minipal_get_length_utf8_to_utf16(ascii, asciiLengthWithTerminator, flags);
if (requiredLength != asciiLengthWithTerminator)
{
Fail("minipal_get_length_utf8_to_utf16 with MINIPAL_TREAT_AS_LITTLE_ENDIAN returned %zu, expected %zu\n",
requiredLength, asciiLengthWithTerminator);
}

WCHAR wideBuffer[64];
size_t convertedLength = minipal_convert_utf8_to_utf16(ascii, asciiLengthWithTerminator,
(CHAR16_T*)wideBuffer, sizeof(wideBuffer) / sizeof(wideBuffer[0]), flags);

if (convertedLength != asciiLengthWithTerminator)
{
Fail("minipal_convert_utf8_to_utf16 with MINIPAL_TREAT_AS_LITTLE_ENDIAN returned %zu, expected %zu\n",
convertedLength, asciiLengthWithTerminator);
}

for (size_t i = 0; i < asciiLengthWithTerminator; i++)
{
WCHAR expected = (WCHAR)(((unsigned char)ascii[i]) << 8);
if (wideBuffer[i] != expected)
{
Fail("minipal_convert_utf8_to_utf16 with MINIPAL_TREAT_AS_LITTLE_ENDIAN mismatch at %zu: got 0x%04x expected 0x%04x\n",
i, wideBuffer[i], expected);
}
}
}
#endif

PAL_Terminate();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
**==========================================================================*/

#include <palsuite.h>
#include <minipal/utf8.h>

PALTEST(locale_info_WideCharToMultiByte_test5_paltest_widechartomultibyte_test5, "locale_info/WideCharToMultiByte/test5/paltest_widechartomultibyte_test5")
{
Expand Down Expand Up @@ -146,6 +147,42 @@ PALTEST(locale_info_WideCharToMultiByte_test5_paltest_widechartomultibyte_test5,

free(utf8Buffer);
}

#if BIGENDIAN
{
const char* expected = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456";
const size_t expectedLengthWithTerminator = strlen(expected) + 1;
const unsigned int flags = MINIPAL_TREAT_AS_LITTLE_ENDIAN;

WCHAR littleEndianWide[64];
for (size_t i = 0; i < expectedLengthWithTerminator; i++)
{
littleEndianWide[i] = (WCHAR)(((unsigned char)expected[i]) << 8);
}

size_t requiredLength = minipal_get_length_utf16_to_utf8((const CHAR16_T*)littleEndianWide,
expectedLengthWithTerminator, flags);
if (requiredLength != expectedLengthWithTerminator)
{
Fail("minipal_get_length_utf16_to_utf8 with MINIPAL_TREAT_AS_LITTLE_ENDIAN returned %zu, expected %zu\n",
requiredLength, expectedLengthWithTerminator);
}

CHAR utf8Buffer[64];
size_t convertedLength = minipal_convert_utf16_to_utf8((const CHAR16_T*)littleEndianWide,
expectedLengthWithTerminator, utf8Buffer, sizeof(utf8Buffer), flags);
if (convertedLength != expectedLengthWithTerminator)
{
Fail("minipal_convert_utf16_to_utf8 with MINIPAL_TREAT_AS_LITTLE_ENDIAN returned %zu, expected %zu\n",
convertedLength, expectedLengthWithTerminator);
}

if (memcmp(utf8Buffer, expected, expectedLengthWithTerminator) != 0)
{
Fail("minipal_convert_utf16_to_utf8 with MINIPAL_TREAT_AS_LITTLE_ENDIAN produced unexpected bytes\n");
}
}
#endif

PAL_Terminate();

Expand Down
Loading
Loading