[libc] Added isValidState to CharacterConverter class to ensure a provided mbstate is valid (#145564)
Added isValidState to CharacterConverter class to ensure a provided mbstate is valid
This commit is contained in:
@@ -186,3 +186,45 @@ TEST(LlvmLibcCharacterConverterUTF32To8Test, CantPushMidConversion) {
|
||||
int err = cr.push(utf32);
|
||||
ASSERT_EQ(err, -1);
|
||||
}
|
||||
|
||||
TEST(LlvmLibcCharacterConverterUTF32To8Test, InvalidState) {
|
||||
LIBC_NAMESPACE::internal::mbstate s1;
|
||||
LIBC_NAMESPACE::internal::CharacterConverter c1(&s1);
|
||||
ASSERT_TRUE(c1.isValidState());
|
||||
|
||||
LIBC_NAMESPACE::internal::mbstate s2{0, 2, 0};
|
||||
LIBC_NAMESPACE::internal::CharacterConverter c2(&s2);
|
||||
ASSERT_FALSE(c2.isValidState());
|
||||
|
||||
LIBC_NAMESPACE::internal::mbstate s3{0x7f, 1, 1};
|
||||
LIBC_NAMESPACE::internal::CharacterConverter c3(&s3);
|
||||
ASSERT_TRUE(c3.isValidState());
|
||||
LIBC_NAMESPACE::internal::mbstate s4{0x80, 1, 1};
|
||||
LIBC_NAMESPACE::internal::CharacterConverter c4(&s4);
|
||||
ASSERT_FALSE(c4.isValidState());
|
||||
|
||||
LIBC_NAMESPACE::internal::mbstate s5{0x7ff, 1, 2};
|
||||
LIBC_NAMESPACE::internal::CharacterConverter c5(&s5);
|
||||
ASSERT_TRUE(c5.isValidState());
|
||||
LIBC_NAMESPACE::internal::mbstate s6{0x800, 1, 2};
|
||||
LIBC_NAMESPACE::internal::CharacterConverter c6(&s6);
|
||||
ASSERT_FALSE(c6.isValidState());
|
||||
|
||||
LIBC_NAMESPACE::internal::mbstate s7{0xffff, 1, 3};
|
||||
LIBC_NAMESPACE::internal::CharacterConverter c7(&s7);
|
||||
ASSERT_TRUE(c7.isValidState());
|
||||
LIBC_NAMESPACE::internal::mbstate s8{0x10000, 1, 3};
|
||||
LIBC_NAMESPACE::internal::CharacterConverter c8(&s8);
|
||||
ASSERT_FALSE(c8.isValidState());
|
||||
|
||||
LIBC_NAMESPACE::internal::mbstate s9{0x10ffff, 1, 4};
|
||||
LIBC_NAMESPACE::internal::CharacterConverter c9(&s9);
|
||||
ASSERT_TRUE(c9.isValidState());
|
||||
LIBC_NAMESPACE::internal::mbstate s10{0x110000, 1, 2};
|
||||
LIBC_NAMESPACE::internal::CharacterConverter c10(&s10);
|
||||
ASSERT_FALSE(c10.isValidState());
|
||||
|
||||
LIBC_NAMESPACE::internal::mbstate s11{0, 0, 5};
|
||||
LIBC_NAMESPACE::internal::CharacterConverter c11(&s11);
|
||||
ASSERT_FALSE(c11.isValidState());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user