diff options
Diffstat (limited to 'unittests/Utility/ConstStringTest.cpp')
-rw-r--r-- | unittests/Utility/ConstStringTest.cpp | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/unittests/Utility/ConstStringTest.cpp b/unittests/Utility/ConstStringTest.cpp index 454f656760ca..2bae896002bc 100644 --- a/unittests/Utility/ConstStringTest.cpp +++ b/unittests/Utility/ConstStringTest.cpp @@ -16,3 +16,77 @@ using namespace lldb_private; TEST(ConstStringTest, format_provider) { EXPECT_EQ("foo", llvm::formatv("{0}", ConstString("foo")).str()); } + +TEST(ConstStringTest, MangledCounterpart) { + ConstString uvw("uvw"); + ConstString counterpart; + EXPECT_FALSE(uvw.GetMangledCounterpart(counterpart)); + EXPECT_EQ("", counterpart.GetStringRef()); + + ConstString xyz; + xyz.SetStringWithMangledCounterpart("xyz", uvw); + EXPECT_EQ("xyz", xyz.GetStringRef()); + + EXPECT_TRUE(xyz.GetMangledCounterpart(counterpart)); + EXPECT_EQ("uvw", counterpart.GetStringRef()); + + EXPECT_TRUE(uvw.GetMangledCounterpart(counterpart)); + EXPECT_EQ("xyz", counterpart.GetStringRef()); +} + +TEST(ConstStringTest, UpdateMangledCounterpart) { + { // Add counterpart + ConstString some1; + some1.SetStringWithMangledCounterpart("some", ConstString("")); + } + { // Overwrite empty string + ConstString some2; + some2.SetStringWithMangledCounterpart("some", ConstString("one")); + } + { // Overwrite with identical value + ConstString some2; + some2.SetStringWithMangledCounterpart("some", ConstString("one")); + } + { // Check counterpart is set + ConstString counterpart; + EXPECT_TRUE(ConstString("some").GetMangledCounterpart(counterpart)); + EXPECT_EQ("one", counterpart.GetStringRef()); + } +} + +TEST(ConstStringTest, FromMidOfBufferStringRef) { + // StringRef's into bigger buffer: no null termination + const char *buffer = "abcdefghi"; + llvm::StringRef foo_ref(buffer, 3); + llvm::StringRef bar_ref(buffer + 3, 3); + + ConstString foo(foo_ref); + + ConstString bar; + bar.SetStringWithMangledCounterpart(bar_ref, foo); + EXPECT_EQ("def", bar.GetStringRef()); + + ConstString counterpart; + EXPECT_TRUE(bar.GetMangledCounterpart(counterpart)); + EXPECT_EQ("abc", counterpart.GetStringRef()); + + EXPECT_TRUE(foo.GetMangledCounterpart(counterpart)); + EXPECT_EQ("def", counterpart.GetStringRef()); +} + +TEST(ConstStringTest, NullAndEmptyStates) { + ConstString foo("foo"); + EXPECT_FALSE(!foo); + EXPECT_FALSE(foo.IsEmpty()); + EXPECT_FALSE(foo.IsNull()); + + ConstString empty(""); + EXPECT_TRUE(!empty); + EXPECT_TRUE(empty.IsEmpty()); + EXPECT_FALSE(empty.IsNull()); + + ConstString null; + EXPECT_TRUE(!null); + EXPECT_TRUE(null.IsEmpty()); + EXPECT_TRUE(null.IsNull()); +} |