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 foo("foo");
22   ConstString counterpart;
23   EXPECT_FALSE(foo.GetMangledCounterpart(counterpart));
24   EXPECT_EQ("", counterpart.GetStringRef());
25 
26   ConstString bar;
27   bar.SetStringWithMangledCounterpart("bar", foo);
28   EXPECT_EQ("bar", bar.GetStringRef());
29 
30   EXPECT_TRUE(bar.GetMangledCounterpart(counterpart));
31   EXPECT_EQ("foo", counterpart.GetStringRef());
32 
33   EXPECT_TRUE(foo.GetMangledCounterpart(counterpart));
34   EXPECT_EQ("bar", counterpart.GetStringRef());
35 }
36 
37 TEST(ConstStringTest, FromMidOfBufferStringRef) {
38   // StringRef's into bigger buffer: no null termination
39   const char *buffer = "foobarbaz";
40   llvm::StringRef foo_ref(buffer, 3);
41   llvm::StringRef bar_ref(buffer + 3, 3);
42 
43   ConstString foo(foo_ref);
44 
45   ConstString bar;
46   bar.SetStringWithMangledCounterpart(bar_ref, foo);
47   EXPECT_EQ("bar", bar.GetStringRef());
48 
49   ConstString counterpart;
50   EXPECT_TRUE(bar.GetMangledCounterpart(counterpart));
51   EXPECT_EQ("foo", counterpart.GetStringRef());
52 
53   EXPECT_TRUE(foo.GetMangledCounterpart(counterpart));
54   EXPECT_EQ("bar", counterpart.GetStringRef());
55 }
56 
57 TEST(ConstStringTest, NullAndEmptyStates) {
58   ConstString foo("foo");
59   EXPECT_FALSE(!foo);
60   EXPECT_FALSE(foo.IsEmpty());
61   EXPECT_FALSE(foo.IsNull());
62 
63   ConstString empty("");
64   EXPECT_TRUE(!empty);
65   EXPECT_TRUE(empty.IsEmpty());
66   EXPECT_FALSE(empty.IsNull());
67 
68   ConstString null;
69   EXPECT_TRUE(!null);
70   EXPECT_TRUE(null.IsEmpty());
71   EXPECT_TRUE(null.IsNull());
72 }
73