summaryrefslogtreecommitdiff
path: root/unittests/Utility/ConstStringTest.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2019-01-19 10:06:29 +0000
committerDimitry Andric <dim@FreeBSD.org>2019-01-19 10:06:29 +0000
commit94994d372d014ce4c8758b9605d63fae651bd8aa (patch)
tree51c0b708bd59f205d6b35cb2a8c24d62f0c33d77 /unittests/Utility/ConstStringTest.cpp
parent39be7ce23363d12ae3e49aeb1fdb2bfeb892e836 (diff)
Notes
Diffstat (limited to 'unittests/Utility/ConstStringTest.cpp')
-rw-r--r--unittests/Utility/ConstStringTest.cpp74
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());
+}