diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-11-14 00:41:46 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-11-14 00:41:46 +0000 |
commit | 259b1a4ca3ff8cefe819c67d8036412ebf195b1e (patch) | |
tree | f3b7fb0991b5a6cb578ea0afc1a23b3093399dd9 /llvm/unittests/ADT/StringMapTest.cpp | |
parent | a92765ca3249089cced6e54b5090b28ea43ceec8 (diff) | |
download | llvm-259b1a4ca3ff8cefe819c67d8036412ebf195b1e.zip llvm-259b1a4ca3ff8cefe819c67d8036412ebf195b1e.tar.gz llvm-259b1a4ca3ff8cefe819c67d8036412ebf195b1e.tar.bz2 |
StringMap: Test and finish off supporting perfectly forwarded values in StringMap operations.
Followup to r221946.
llvm-svn: 221958
Diffstat (limited to 'llvm/unittests/ADT/StringMapTest.cpp')
-rw-r--r-- | llvm/unittests/ADT/StringMapTest.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/llvm/unittests/ADT/StringMapTest.cpp b/llvm/unittests/ADT/StringMapTest.cpp index 028375d..af9b611 100644 --- a/llvm/unittests/ADT/StringMapTest.cpp +++ b/llvm/unittests/ADT/StringMapTest.cpp @@ -256,9 +256,15 @@ TEST_F(StringMapTest, NonDefaultConstructable) { ASSERT_EQ(iter->second.i, 123); } +struct Immovable { + Immovable() {} + Immovable(Immovable&&) LLVM_DELETED_FUNCTION; // will disable the other special members +}; + struct MoveOnly { int i; MoveOnly(int i) : i(i) {} + MoveOnly(const Immovable&) : i(0) {} MoveOnly(MoveOnly &&RHS) : i(RHS.i) {} MoveOnly &operator=(MoveOnly &&RHS) { i = RHS.i; @@ -270,7 +276,7 @@ private: MoveOnly &operator=(const MoveOnly &) LLVM_DELETED_FUNCTION; }; -TEST_F(StringMapTest, MoveOnlyKey) { +TEST_F(StringMapTest, MoveOnly) { StringMap<MoveOnly> t; t.GetOrCreateValue("Test", MoveOnly(42)); StringRef Key = "Test"; @@ -278,6 +284,14 @@ TEST_F(StringMapTest, MoveOnlyKey) { ->Destroy(); } +TEST_F(StringMapTest, CtorArg) { + StringMap<MoveOnly> t; + t.GetOrCreateValue("Test", Immovable()); + StringRef Key = "Test"; + StringMapEntry<MoveOnly>::Create(Key, Immovable()) + ->Destroy(); +} + TEST_F(StringMapTest, MoveConstruct) { StringMap<int> A; A.GetOrCreateValue("x", 42); |