brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · 7018248 Raw
155 lines · cpp
1//===-- ConstStringTest.cpp -----------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "lldb/Utility/ConstString.h"10#include "llvm/Support/FormatVariadic.h"11#include "gtest/gtest.h"12 13using namespace lldb_private;14 15TEST(ConstStringTest, format_provider) {16  EXPECT_EQ("foo", llvm::formatv("{0}", ConstString("foo")).str());17}18 19TEST(ConstStringTest, MangledCounterpart) {20  ConstString uvw("uvw");21  ConstString counterpart;22  EXPECT_FALSE(uvw.GetMangledCounterpart(counterpart));23  EXPECT_EQ("", counterpart.GetStringRef());24 25  ConstString xyz;26  xyz.SetStringWithMangledCounterpart("xyz", uvw);27  EXPECT_EQ("xyz", xyz.GetStringRef());28 29  EXPECT_TRUE(xyz.GetMangledCounterpart(counterpart));30  EXPECT_EQ("uvw", counterpart.GetStringRef());31 32  EXPECT_TRUE(uvw.GetMangledCounterpart(counterpart));33  EXPECT_EQ("xyz", counterpart.GetStringRef());34}35 36TEST(ConstStringTest, UpdateMangledCounterpart) {37  { // Add counterpart38    ConstString some1;39    some1.SetStringWithMangledCounterpart("some", ConstString(""));40  }41  { // Overwrite empty string42    ConstString some2;43    some2.SetStringWithMangledCounterpart("some", ConstString("one"));44  }45  { // Overwrite with identical value46    ConstString some2;47    some2.SetStringWithMangledCounterpart("some", ConstString("one"));48  }49  { // Check counterpart is set50    ConstString counterpart;51    EXPECT_TRUE(ConstString("some").GetMangledCounterpart(counterpart));52    EXPECT_EQ("one", counterpart.GetStringRef());53  }54}55 56TEST(ConstStringTest, FromMidOfBufferStringRef) {57  // StringRef's into bigger buffer: no null termination58  const char *buffer = "abcdefghi";59  llvm::StringRef foo_ref(buffer, 3);60  llvm::StringRef bar_ref(buffer + 3, 3);61 62  ConstString foo(foo_ref);63 64  ConstString bar;65  bar.SetStringWithMangledCounterpart(bar_ref, foo);66  EXPECT_EQ("def", bar.GetStringRef());67 68  ConstString counterpart;69  EXPECT_TRUE(bar.GetMangledCounterpart(counterpart));70  EXPECT_EQ("abc", counterpart.GetStringRef());71 72  EXPECT_TRUE(foo.GetMangledCounterpart(counterpart));73  EXPECT_EQ("def", counterpart.GetStringRef());74}75 76TEST(ConstStringTest, NullAndEmptyStates) {77  ConstString foo("foo");78  EXPECT_FALSE(!foo);79  EXPECT_FALSE(foo.IsEmpty());80  EXPECT_FALSE(foo.IsNull());81 82  ConstString empty("");83  EXPECT_TRUE(!empty);84  EXPECT_TRUE(empty.IsEmpty());85  EXPECT_FALSE(empty.IsNull());86 87  ConstString null;88  EXPECT_TRUE(!null);89  EXPECT_TRUE(null.IsEmpty());90  EXPECT_TRUE(null.IsNull());91  EXPECT_TRUE(null.GetString().empty());92}93 94TEST(ConstStringTest, CompareConstString) {95  ConstString foo("foo");96  ConstString foo2("foo");97  ConstString bar("bar");98 99  EXPECT_TRUE(foo == foo2);100  EXPECT_TRUE(foo2 == foo);101  EXPECT_TRUE(foo == ConstString("foo"));102 103  EXPECT_FALSE(foo == bar);104  EXPECT_FALSE(foo2 == bar);105  EXPECT_FALSE(foo == ConstString("bar"));106  EXPECT_FALSE(foo == ConstString("different"));107  EXPECT_FALSE(foo == ConstString(""));108  EXPECT_FALSE(foo == ConstString());109 110  ConstString empty("");111  EXPECT_FALSE(empty == ConstString("bar"));112  EXPECT_FALSE(empty == ConstString());113  EXPECT_TRUE(empty == ConstString(""));114 115  ConstString null;116  EXPECT_FALSE(null == ConstString("bar"));117  EXPECT_TRUE(null == ConstString());118  EXPECT_FALSE(null == ConstString(""));119}120 121TEST(ConstStringTest, CompareStringRef) {122  ConstString foo("foo");123 124  EXPECT_TRUE(foo == "foo");125  EXPECT_TRUE(foo != "");126  EXPECT_FALSE(foo == static_cast<const char *>(nullptr));127  EXPECT_TRUE(foo != "bar");128 129  ConstString empty("");130  EXPECT_FALSE(empty == "foo");131  EXPECT_FALSE(empty != "");132  EXPECT_FALSE(empty == static_cast<const char *>(nullptr));133  EXPECT_TRUE(empty != "bar");134 135  ConstString null;136  EXPECT_FALSE(null == "foo");137  EXPECT_TRUE(null != "");138  EXPECT_TRUE(null == static_cast<const char *>(nullptr));139  EXPECT_TRUE(null != "bar");140}141 142TEST(ConstStringTest, StringConversions) {143  ConstString foo("foo");144 145  // Member functions.146  EXPECT_EQ(llvm::StringRef("foo"), foo.GetStringRef());147  EXPECT_EQ(std::string("foo"), foo.GetString());148  EXPECT_STREQ("foo", foo.AsCString());149 150  // Conversion operators.151  EXPECT_EQ(llvm::StringRef("foo"), llvm::StringRef(foo));152  EXPECT_EQ(std::string("foo"), std::string_view(foo));153  EXPECT_EQ(std::string("foo"), std::string(foo));154}155