diff options
Diffstat (limited to 'libcxx')
-rw-r--r-- | libcxx/test/std/containers/associative/multiset/insert_emplace_allocator_requirements.pass.cpp (renamed from libcxx/test/std/containers/associative/multiset/insert_allocator_requirements.pass.cpp) | 1 | ||||
-rw-r--r-- | libcxx/test/std/containers/set_allocator_requirement_test_templates.h | 45 | ||||
-rw-r--r-- | libcxx/test/std/containers/unord/unord.multiset/insert_emplace_allocator_requirements.pass.cpp (renamed from libcxx/test/std/containers/unord/unord.multiset/insert_allocator_requirements.pass.cpp) | 1 |
3 files changed, 46 insertions, 1 deletions
diff --git a/libcxx/test/std/containers/associative/multiset/insert_allocator_requirements.pass.cpp b/libcxx/test/std/containers/associative/multiset/insert_emplace_allocator_requirements.pass.cpp index a280d10d5ab..4bd2c88f8a3 100644 --- a/libcxx/test/std/containers/associative/multiset/insert_allocator_requirements.pass.cpp +++ b/libcxx/test/std/containers/associative/multiset/insert_emplace_allocator_requirements.pass.cpp @@ -23,4 +23,5 @@ int main() { testMultisetInsert<TCT::multiset<> >(); + testMultisetEmplace<TCT::multiset<> >(); } diff --git a/libcxx/test/std/containers/set_allocator_requirement_test_templates.h b/libcxx/test/std/containers/set_allocator_requirement_test_templates.h index 2e3346f47e2..f82ca7dc8c6 100644 --- a/libcxx/test/std/containers/set_allocator_requirement_test_templates.h +++ b/libcxx/test/std/containers/set_allocator_requirement_test_templates.h @@ -344,11 +344,54 @@ void testMultisetInsert() { CHECKPOINT("Testing C::insert(Iter, Iter) for *Iter = value_type&"); Container c; - ValueTp ValueList[] = { ValueTp(1), ValueTp(2) , ValueTp(3) }; + ValueTp ValueList[] = { ValueTp(1), ValueTp(2) , ValueTp(1) }; cc->expect<ValueTp&>(3); c.insert(std::begin(ValueList), std::end(ValueList)); assert(!cc->unchecked()); } } + +template <class Container> +void testMultisetEmplace() +{ + typedef typename Container::value_type ValueTp; + typedef Container C; + typedef std::pair<typename C::iterator, bool> R; + ConstructController* cc = getConstructController(); + cc->reset(); + { + CHECKPOINT("Testing C::emplace(const value_type&)"); + Container c; + const ValueTp v(42); + cc->expect<const ValueTp&>(); + c.emplace(v); + assert(!cc->unchecked()); + } + { + CHECKPOINT("Testing C::emplace(value_type&)"); + Container c; + ValueTp v(42); + cc->expect<ValueTp&>(); + c.emplace(v); + assert(!cc->unchecked()); + } + { + CHECKPOINT("Testing C::emplace(value_type&&)"); + Container c; + ValueTp v(42); + cc->expect<ValueTp&&>(); + c.emplace(std::move(v)); + assert(!cc->unchecked()); + } + { + CHECKPOINT("Testing C::emplace(const value_type&&)"); + Container c; + const ValueTp v(42); + cc->expect<const ValueTp&&>(); + c.emplace(std::move(v)); + assert(!cc->unchecked()); + } +} + #endif diff --git a/libcxx/test/std/containers/unord/unord.multiset/insert_allocator_requirements.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/insert_emplace_allocator_requirements.pass.cpp index ad7bc043a5b..4b6e2f76972 100644 --- a/libcxx/test/std/containers/unord/unord.multiset/insert_allocator_requirements.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multiset/insert_emplace_allocator_requirements.pass.cpp @@ -22,4 +22,5 @@ int main() { testMultisetInsert<TCT::unordered_multiset<> >(); + testMultisetEmplace<TCT::unordered_multiset<> >(); } |