diff options
author | 2020-08-03 14:33:06 +0000 | |
---|---|---|
committer | 2020-08-03 14:33:06 +0000 | |
commit | 061da546b983eb767bad15e67af1174fb0bcf31c (patch) | |
tree | 83c78b820819d70aa40c36d90447978b300078c5 /gnu/llvm/lldb/unittests/Utility/ConstStringTest.cpp | |
parent | Import LLVM 10.0.0 release including clang, lld and lldb. (diff) | |
download | wireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.tar.xz wireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.zip |
Import LLVM 10.0.0 release including clang, lld and lldb.
ok hackroom
tested by plenty
Diffstat (limited to 'gnu/llvm/lldb/unittests/Utility/ConstStringTest.cpp')
-rw-r--r-- | gnu/llvm/lldb/unittests/Utility/ConstStringTest.cpp | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/unittests/Utility/ConstStringTest.cpp b/gnu/llvm/lldb/unittests/Utility/ConstStringTest.cpp new file mode 100644 index 00000000000..74753b90317 --- /dev/null +++ b/gnu/llvm/lldb/unittests/Utility/ConstStringTest.cpp @@ -0,0 +1,139 @@ +//===-- ConstStringTest.cpp -------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#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()); +} + +TEST(ConstStringTest, CompareConstString) { + ConstString foo("foo"); + ConstString foo2("foo"); + ConstString bar("bar"); + + EXPECT_TRUE(foo == foo2); + EXPECT_TRUE(foo2 == foo); + EXPECT_TRUE(foo == ConstString("foo")); + + EXPECT_FALSE(foo == bar); + EXPECT_FALSE(foo2 == bar); + EXPECT_FALSE(foo == ConstString("bar")); + EXPECT_FALSE(foo == ConstString("different")); + EXPECT_FALSE(foo == ConstString("")); + EXPECT_FALSE(foo == ConstString()); + + ConstString empty(""); + EXPECT_FALSE(empty == ConstString("bar")); + EXPECT_FALSE(empty == ConstString()); + EXPECT_TRUE(empty == ConstString("")); + + ConstString null; + EXPECT_FALSE(null == ConstString("bar")); + EXPECT_TRUE(null == ConstString()); + EXPECT_FALSE(null == ConstString("")); +} + +TEST(ConstStringTest, CompareStringRef) { + ConstString foo("foo"); + + EXPECT_TRUE(foo == "foo"); + EXPECT_TRUE(foo != ""); + EXPECT_FALSE(foo == static_cast<const char *>(nullptr)); + EXPECT_TRUE(foo != "bar"); + + ConstString empty(""); + EXPECT_FALSE(empty == "foo"); + EXPECT_FALSE(empty != ""); + EXPECT_FALSE(empty == static_cast<const char *>(nullptr)); + EXPECT_TRUE(empty != "bar"); + + ConstString null; + EXPECT_FALSE(null == "foo"); + EXPECT_TRUE(null != ""); + EXPECT_TRUE(null == static_cast<const char *>(nullptr)); + EXPECT_TRUE(null != "bar"); +} |