diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2019-01-19 10:06:29 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2019-01-19 10:06:29 +0000 |
commit | 94994d372d014ce4c8758b9605d63fae651bd8aa (patch) | |
tree | 51c0b708bd59f205d6b35cb2a8c24d62f0c33d77 /unittests/Utility/ConstStringTest.cpp | |
parent | 39be7ce23363d12ae3e49aeb1fdb2bfeb892e836 (diff) |
Notes
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()); +} |