1 //===-- ConstStringTest.cpp -------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "lldb/Utility/ConstString.h" 11 #include "llvm/Support/FormatVariadic.h" 12 #include "gtest/gtest.h" 13 14 using namespace lldb_private; 15 16 TEST(ConstStringTest, format_provider) { 17 EXPECT_EQ("foo", llvm::formatv("{0}", ConstString("foo")).str()); 18 } 19 20 TEST(ConstStringTest, MangledCounterpart) { 21 ConstString uvw("uvw"); 22 ConstString counterpart; 23 EXPECT_FALSE(uvw.GetMangledCounterpart(counterpart)); 24 EXPECT_EQ("", counterpart.GetStringRef()); 25 26 ConstString xyz; 27 xyz.SetStringWithMangledCounterpart("xyz", uvw); 28 EXPECT_EQ("xyz", xyz.GetStringRef()); 29 30 EXPECT_TRUE(xyz.GetMangledCounterpart(counterpart)); 31 EXPECT_EQ("uvw", counterpart.GetStringRef()); 32 33 EXPECT_TRUE(uvw.GetMangledCounterpart(counterpart)); 34 EXPECT_EQ("xyz", counterpart.GetStringRef()); 35 } 36 37 TEST(ConstStringTest, UpdateMangledCounterpart) { 38 { // Add counterpart 39 ConstString some1; 40 some1.SetStringWithMangledCounterpart("some", ConstString("")); 41 } 42 { // Overwrite empty string 43 ConstString some2; 44 some2.SetStringWithMangledCounterpart("some", ConstString("one")); 45 } 46 { // Overwrite with identical value 47 ConstString some2; 48 some2.SetStringWithMangledCounterpart("some", ConstString("one")); 49 } 50 { // Check counterpart is set 51 ConstString counterpart; 52 EXPECT_TRUE(ConstString("some").GetMangledCounterpart(counterpart)); 53 EXPECT_EQ("one", counterpart.GetStringRef()); 54 } 55 } 56 57 TEST(ConstStringTest, FromMidOfBufferStringRef) { 58 // StringRef's into bigger buffer: no null termination 59 const char *buffer = "abcdefghi"; 60 llvm::StringRef foo_ref(buffer, 3); 61 llvm::StringRef bar_ref(buffer + 3, 3); 62 63 ConstString foo(foo_ref); 64 65 ConstString bar; 66 bar.SetStringWithMangledCounterpart(bar_ref, foo); 67 EXPECT_EQ("def", bar.GetStringRef()); 68 69 ConstString counterpart; 70 EXPECT_TRUE(bar.GetMangledCounterpart(counterpart)); 71 EXPECT_EQ("abc", counterpart.GetStringRef()); 72 73 EXPECT_TRUE(foo.GetMangledCounterpart(counterpart)); 74 EXPECT_EQ("def", counterpart.GetStringRef()); 75 } 76 77 TEST(ConstStringTest, NullAndEmptyStates) { 78 ConstString foo("foo"); 79 EXPECT_FALSE(!foo); 80 EXPECT_FALSE(foo.IsEmpty()); 81 EXPECT_FALSE(foo.IsNull()); 82 83 ConstString empty(""); 84 EXPECT_TRUE(!empty); 85 EXPECT_TRUE(empty.IsEmpty()); 86 EXPECT_FALSE(empty.IsNull()); 87 88 ConstString null; 89 EXPECT_TRUE(!null); 90 EXPECT_TRUE(null.IsEmpty()); 91 EXPECT_TRUE(null.IsNull()); 92 } 93