summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lldb/unittests/Core/UniqueCStringMapTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/llvm/lldb/unittests/Core/UniqueCStringMapTest.cpp')
-rw-r--r--gnu/llvm/lldb/unittests/Core/UniqueCStringMapTest.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/unittests/Core/UniqueCStringMapTest.cpp b/gnu/llvm/lldb/unittests/Core/UniqueCStringMapTest.cpp
new file mode 100644
index 00000000000..26d2b152191
--- /dev/null
+++ b/gnu/llvm/lldb/unittests/Core/UniqueCStringMapTest.cpp
@@ -0,0 +1,53 @@
+//===-- UniqueCStringMapTest.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/Core/UniqueCStringMap.h"
+#include "gmock/gmock.h"
+
+using namespace lldb_private;
+
+namespace {
+struct NoDefault {
+ int x;
+
+ NoDefault(int x) : x(x) {}
+ NoDefault() = delete;
+
+ friend bool operator==(NoDefault lhs, NoDefault rhs) {
+ return lhs.x == rhs.x;
+ }
+
+ friend llvm::raw_ostream &operator<<(llvm::raw_ostream &OS,
+ NoDefault x) {
+ return OS << "NoDefault{" << x.x << "}";
+ }
+};
+} // namespace
+
+TEST(UniqueCStringMap, NoDefaultConstructor) {
+ using MapT = UniqueCStringMap<NoDefault>;
+ using EntryT = MapT::Entry;
+
+ MapT Map;
+ ConstString Foo("foo"), Bar("bar");
+
+ Map.Append(Foo, NoDefault(42));
+ EXPECT_THAT(Map.Find(Foo, NoDefault(47)), NoDefault(42));
+ EXPECT_THAT(Map.Find(Bar, NoDefault(47)), NoDefault(47));
+ EXPECT_THAT(Map.FindFirstValueForName(Foo),
+ testing::Pointee(testing::Field(&EntryT::value, NoDefault(42))));
+ EXPECT_THAT(Map.FindFirstValueForName(Bar), nullptr);
+
+ std::vector<NoDefault> Values;
+ EXPECT_THAT(Map.GetValues(Foo, Values), 1);
+ EXPECT_THAT(Values, testing::ElementsAre(NoDefault(42)));
+
+ Values.clear();
+ EXPECT_THAT(Map.GetValues(Bar, Values), 0);
+ EXPECT_THAT(Values, testing::IsEmpty());
+}