From 6bcbeeafba41ff55e400464be199c4871223fc45 Mon Sep 17 00:00:00 2001 From: Devin Moore Date: Wed, 21 Oct 2020 17:25:42 -0700 Subject: [PATCH] libutils: add unit tests for invalid utf-8 and utf-16 strings Characters get dropped during the conversionis between 8 and 16. Test: atest libutils_test Change-Id: Ie76dd38e97968137555ba2ab7ce188c9122ed06e --- libutils/String16_test.cpp | 12 ++++++++++++ libutils/String8_test.cpp | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/libutils/String16_test.cpp b/libutils/String16_test.cpp index f1f24c394..2505f445d 100644 --- a/libutils/String16_test.cpp +++ b/libutils/String16_test.cpp @@ -215,4 +215,16 @@ TEST(String16Test, EmptyStringIsStatic) { EXPECT_TRUE(tmp.isStaticString()); } +TEST(String16Test, OverreadUtf8Conversion) { + char tmp[] = {'a', static_cast(0xe0), '\0'}; + String16 another(tmp); + EXPECT_TRUE(another.size() == 0); +} + +TEST(String16Test, ValidUtf8Conversion) { + String16 another("abcdef"); + EXPECT_EQ(6U, another.size()); + EXPECT_STR16EQ(another, u"abcdef"); +} + } // namespace android diff --git a/libutils/String8_test.cpp b/libutils/String8_test.cpp index 3947a5fb9..9efcc6fa4 100644 --- a/libutils/String8_test.cpp +++ b/libutils/String8_test.cpp @@ -96,4 +96,9 @@ TEST_F(String8Test, CheckUtf32Conversion) { EXPECT_EQ(10U, string8.length()); } +TEST_F(String8Test, ValidUtf16Conversion) { + char16_t tmp[] = u"abcdef"; + String8 valid = String8(String16(tmp)); + EXPECT_STREQ(valid, "abcdef"); +} }