summaryrefslogtreecommitdiffstats
path: root/libcxx
diff options
context:
space:
mode:
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.h45
-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<> >();
}
OpenPOWER on IntegriCloud