//===-- ConstStringTest.cpp -------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "lldb/Utility/ConstString.h" #include "llvm/Support/FormatVariadic.h" #include "gtest/gtest.h" 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()); }