diff options
author | Ramkumar Ramachandra <ramkumar.ramachandra@codasip.com> | 2025-05-08 11:22:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-08 11:22:10 +0100 |
commit | 358ebddeb836d1c0ac665a8a2faa2e07fd89da63 (patch) | |
tree | 9efd808945c4637100d1899292a8517f47d41f31 /llvm/unittests/ADT/DenseMapTest.cpp | |
parent | e40200901cf1af860db9ded5c03b7b104396e429 (diff) | |
download | llvm-358ebddeb836d1c0ac665a8a2faa2e07fd89da63.zip llvm-358ebddeb836d1c0ac665a8a2faa2e07fd89da63.tar.gz llvm-358ebddeb836d1c0ac665a8a2faa2e07fd89da63.tar.bz2 |
[DenseMap] Introduce lookup_or (#138887)
Introduce lookup_or, a variant of lookup, for non-default-constructible
values.
Diffstat (limited to 'llvm/unittests/ADT/DenseMapTest.cpp')
-rw-r--r-- | llvm/unittests/ADT/DenseMapTest.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/DenseMapTest.cpp b/llvm/unittests/ADT/DenseMapTest.cpp index b9d519a..2bf0f90 100644 --- a/llvm/unittests/ADT/DenseMapTest.cpp +++ b/llvm/unittests/ADT/DenseMapTest.cpp @@ -616,6 +616,26 @@ TEST(DenseMapCustomTest, StringRefTest) { EXPECT_EQ(42, M.lookup(StringRef("a", 0))); } +struct NonDefaultConstructible { + unsigned V; + NonDefaultConstructible(unsigned V) : V(V) {}; + bool operator==(const NonDefaultConstructible &Other) const { + return V == Other.V; + } +}; + +TEST(DenseMapCustomTest, LookupOr) { + DenseMap<int, NonDefaultConstructible> M; + + M.insert_or_assign(0, 3u); + M.insert_or_assign(1, 2u); + M.insert_or_assign(1, 0u); + + EXPECT_EQ(M.lookup_or(0, 4u), 3u); + EXPECT_EQ(M.lookup_or(1, 4u), 0u); + EXPECT_EQ(M.lookup_or(2, 4u), 4u); +} + // Key traits that allows lookup with either an unsigned or char* key; // In the latter case, "a" == 0, "b" == 1 and so on. struct TestDenseMapInfo { |