Merge tag 'v2021.04-rc4' into next
Prepare v2021.04-rc4
This commit is contained in:
@@ -47,11 +47,15 @@ static const char d3[] = {0xe6, 0xbd, 0x9c, 0xe6, 0xb0, 0xb4, 0xe8, 0x89,
|
||||
/* Three letters translating to two utf-16 word each */
|
||||
static const char d4[] = {0xf0, 0x90, 0x92, 0x8d, 0xf0, 0x90, 0x92, 0x96,
|
||||
0xf0, 0x90, 0x92, 0x87, 0x00};
|
||||
/* Letter not in code page 437 */
|
||||
static const char d5[] = {0xCE, 0x92, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F,
|
||||
0x74, 0x20, 0x42, 0x00};
|
||||
|
||||
/* Illegal utf-8 strings */
|
||||
static const char j1[] = {0x6a, 0x31, 0xa1, 0x6c, 0x00};
|
||||
static const char j2[] = {0x6a, 0x32, 0xc3, 0xc3, 0x6c, 0x00};
|
||||
static const char j3[] = {0x6a, 0x33, 0xf0, 0x90, 0xf0, 0x00};
|
||||
static const char j4[] = {0xa1, 0x00};
|
||||
|
||||
static int unicode_test_u16_strlen(struct unit_test_state *uts)
|
||||
{
|
||||
@@ -165,6 +169,12 @@ static int unicode_test_utf8_get(struct unit_test_state *uts)
|
||||
ut_asserteq(0x0001048d, code);
|
||||
ut_asserteq_ptr(s, d4 + 4);
|
||||
|
||||
/* Check illegal character */
|
||||
s = j4;
|
||||
code = utf8_get((const char **)&s);
|
||||
ut_asserteq(-1, code);
|
||||
ut_asserteq_ptr(j4 + 1, s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
UNICODE_TEST(unicode_test_utf8_get);
|
||||
@@ -595,6 +605,110 @@ static int unicode_test_u16_strsize(struct unit_test_state *uts)
|
||||
}
|
||||
UNICODE_TEST(unicode_test_u16_strsize);
|
||||
|
||||
static int unicode_test_utf_to_cp(struct unit_test_state *uts)
|
||||
{
|
||||
int ret;
|
||||
s32 c;
|
||||
|
||||
c = '\n';
|
||||
ret = utf_to_cp(&c, codepage_437);
|
||||
ut_asserteq(0, ret);
|
||||
ut_asserteq('\n', c);
|
||||
|
||||
c = 'a';
|
||||
ret = utf_to_cp(&c, codepage_437);
|
||||
ut_asserteq(0, ret);
|
||||
ut_asserteq('a', c);
|
||||
|
||||
c = 0x03c4; /* Greek small letter tau */
|
||||
ret = utf_to_cp(&c, codepage_437);
|
||||
ut_asserteq(0, ret);
|
||||
ut_asserteq(0xe7, c);
|
||||
|
||||
c = 0x03a4; /* Greek capital letter tau */
|
||||
ret = utf_to_cp(&c, codepage_437);
|
||||
ut_asserteq(-ENOENT, ret);
|
||||
ut_asserteq('?', c);
|
||||
|
||||
return 0;
|
||||
}
|
||||
UNICODE_TEST(unicode_test_utf_to_cp);
|
||||
|
||||
static void utf8_to_cp437_stream_helper(const char *in, char *out)
|
||||
{
|
||||
char buffer[5];
|
||||
int ret;
|
||||
|
||||
*buffer = 0;
|
||||
for (; *in; ++in) {
|
||||
ret = utf8_to_cp437_stream(*in, buffer);
|
||||
if (ret)
|
||||
*out++ = ret;
|
||||
}
|
||||
*out = 0;
|
||||
}
|
||||
|
||||
static int unicode_test_utf8_to_cp437_stream(struct unit_test_state *uts)
|
||||
{
|
||||
char buf[16];
|
||||
|
||||
utf8_to_cp437_stream_helper(d1, buf);
|
||||
ut_asserteq_str("U-Boot", buf);
|
||||
utf8_to_cp437_stream_helper(d2, buf);
|
||||
ut_asserteq_str("kafb\xa0tur", buf);
|
||||
utf8_to_cp437_stream_helper(d5, buf);
|
||||
ut_asserteq_str("? is not B", buf);
|
||||
utf8_to_cp437_stream_helper(j2, buf);
|
||||
ut_asserteq_str("j2l", buf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
UNICODE_TEST(unicode_test_utf8_to_cp437_stream);
|
||||
|
||||
static void utf8_to_utf32_stream_helper(const char *in, s32 *out)
|
||||
{
|
||||
char buffer[5];
|
||||
int ret;
|
||||
|
||||
*buffer = 0;
|
||||
for (; *in; ++in) {
|
||||
ret = utf8_to_utf32_stream(*in, buffer);
|
||||
if (ret)
|
||||
*out++ = ret;
|
||||
}
|
||||
*out = 0;
|
||||
}
|
||||
|
||||
static int unicode_test_utf8_to_utf32_stream(struct unit_test_state *uts)
|
||||
{
|
||||
s32 buf[16];
|
||||
|
||||
const u32 u1[] = {0x55, 0x2D, 0x42, 0x6F, 0x6F, 0x74, 0x0000};
|
||||
const u32 u2[] = {0x6B, 0x61, 0x66, 0x62, 0xE1, 0x74, 0x75, 0x72, 0x00};
|
||||
const u32 u3[] = {0x0392, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74,
|
||||
0x20, 0x42, 0x00};
|
||||
const u32 u4[] = {0x6A, 0x32, 0x6C, 0x00};
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
utf8_to_utf32_stream_helper(d1, buf);
|
||||
ut_asserteq_mem(u1, buf, sizeof(u1));
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
utf8_to_utf32_stream_helper(d2, buf);
|
||||
ut_asserteq_mem(u2, buf, sizeof(u2));
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
utf8_to_utf32_stream_helper(d5, buf);
|
||||
ut_asserteq_mem(u3, buf, sizeof(u3));
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
utf8_to_utf32_stream_helper(j2, buf);
|
||||
ut_asserteq_mem(u4, buf, sizeof(u4));
|
||||
|
||||
return 0;
|
||||
}
|
||||
UNICODE_TEST(unicode_test_utf8_to_utf32_stream);
|
||||
|
||||
#ifdef CONFIG_EFI_LOADER
|
||||
static int unicode_test_efi_create_indexed_name(struct unit_test_state *uts)
|
||||
{
|
||||
|
Reference in New Issue
Block a user