diff options
| author | 2017-01-24 08:32:59 +0000 | |
|---|---|---|
| committer | 2017-01-24 08:32:59 +0000 | |
| commit | 53d771aafdbe5b919f264f53cba3788e2c4cffd2 (patch) | |
| tree | 7eca39498be0ff1e3a6daf583cd9ca5886bb2636 /gnu/llvm/unittests/ADT/DenseMapTest.cpp | |
| parent | In preparation of compiling our kernels with -ffreestanding, explicitly map (diff) | |
| download | wireguard-openbsd-53d771aafdbe5b919f264f53cba3788e2c4cffd2.tar.xz wireguard-openbsd-53d771aafdbe5b919f264f53cba3788e2c4cffd2.zip | |
Import LLVM 4.0.0 rc1 including clang and lld to help the current
development effort on OpenBSD/arm64.
Diffstat (limited to 'gnu/llvm/unittests/ADT/DenseMapTest.cpp')
| -rw-r--r-- | gnu/llvm/unittests/ADT/DenseMapTest.cpp | 59 |
1 files changed, 10 insertions, 49 deletions
diff --git a/gnu/llvm/unittests/ADT/DenseMapTest.cpp b/gnu/llvm/unittests/ADT/DenseMapTest.cpp index db00f8cf8e5..80f0462bc8f 100644 --- a/gnu/llvm/unittests/ADT/DenseMapTest.cpp +++ b/gnu/llvm/unittests/ADT/DenseMapTest.cpp @@ -496,55 +496,6 @@ TEST(DenseMapCustomTest, StringRefTest) { EXPECT_EQ(42, M.lookup(StringRef("a", 0))); } -struct CachedHashTest { - unsigned Val; - unsigned *Counter = nullptr; - CachedHashTest(unsigned Val) : Val(Val) {} - CachedHashTest(unsigned Val, unsigned *Counter) - : Val(Val), Counter(Counter) {} -}; -} -namespace llvm { -template <> struct DenseMapInfo<CachedHashTest> { - static CachedHashTest getEmptyKey() { return ~0; } - static CachedHashTest getTombstoneKey() { return ~0U - 1; } - static unsigned getHashValue(const CachedHashTest &X) { - ++*X.Counter; - return X.Val; - } - static bool isEqual(const CachedHashTest &LHS, const CachedHashTest &RHS) { - return LHS.Val == RHS.Val; - } -}; -} -namespace { - -TEST(DenseMapCustomTest, CachedHashTest) { - unsigned Counter = 0; - CachedHashTest Val(0, &Counter); - DenseMap<CachedHashTest, int> Map; - - Map[Val] = 0; - ASSERT_EQ(1u, Counter); - - Map.reserve(64); - ASSERT_EQ(2u, Counter); -} - -// Like above, but now cache the hash. -TEST(DenseMapCustomTest, CachedHashTest2) { - unsigned Counter = 0; - CachedHashTest Val(0, &Counter); - typedef CachedHash<CachedHashTest> Cached; - DenseMap<Cached, int> Map; - - Map[Val] = 0; - ASSERT_EQ(1u, Counter); - - Map.reserve(64); - ASSERT_EQ(1u, Counter); -} - // 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 { @@ -619,4 +570,14 @@ TEST(DenseMapCustomTest, SmallDenseMapGrowTest) { EXPECT_TRUE(map.find(32) == map.end()); } +TEST(DenseMapCustomTest, TryEmplaceTest) { + DenseMap<int, std::unique_ptr<int>> Map; + std::unique_ptr<int> P(new int(2)); + auto Try1 = Map.try_emplace(0, new int(1)); + EXPECT_TRUE(Try1.second); + auto Try2 = Map.try_emplace(0, std::move(P)); + EXPECT_FALSE(Try2.second); + EXPECT_EQ(Try1.first, Try2.first); + EXPECT_NE(nullptr, P); +} } |
