summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/containers
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2018-08-22 04:28:43 +0000
committerMarshall Clow <mclow.lists@gmail.com>2018-08-22 04:28:43 +0000
commit934e9a3976db9d3535c9443e8dbbf96eca06c9a7 (patch)
tree57121829062be8851d181623c317f70f7479ea56 /libcxx/test/std/containers
parentfdd73b5037c6e5e5b0523ccf891d4023ca4a26fd (diff)
downloadbcm5719-llvm-934e9a3976db9d3535c9443e8dbbf96eca06c9a7.tar.gz
bcm5719-llvm-934e9a3976db9d3535c9443e8dbbf96eca06c9a7.zip
Fix Bug 38644: multimap::clear() missing exception specifier. Add noexcept tests for all the containers that have clear().
llvm-svn: 340385
Diffstat (limited to 'libcxx/test/std/containers')
-rw-r--r--libcxx/test/std/containers/associative/map/map.modifiers/clear.pass.cpp5
-rw-r--r--libcxx/test/std/containers/associative/multimap/multimap.modifiers/clear.pass.cpp5
-rw-r--r--libcxx/test/std/containers/associative/multiset/clear.pass.cpp5
-rw-r--r--libcxx/test/std/containers/associative/set/clear.pass.cpp5
-rw-r--r--libcxx/test/std/containers/sequences/deque/deque.modifiers/clear.pass.cpp67
-rw-r--r--libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/clear.pass.cpp7
-rw-r--r--libcxx/test/std/containers/sequences/list/list.modifiers/clear.pass.cpp5
-rw-r--r--libcxx/test/std/containers/sequences/vector/vector.modifiers/clear.pass.cpp5
-rw-r--r--libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/clear.pass.cpp5
-rw-r--r--libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/clear.pass.cpp5
-rw-r--r--libcxx/test/std/containers/unord/unord.multiset/clear.pass.cpp5
-rw-r--r--libcxx/test/std/containers/unord/unord.set/clear.pass.cpp5
12 files changed, 113 insertions, 11 deletions
diff --git a/libcxx/test/std/containers/associative/map/map.modifiers/clear.pass.cpp b/libcxx/test/std/containers/associative/map/map.modifiers/clear.pass.cpp
index 1f36a6f10cb..ab4642fa88e 100644
--- a/libcxx/test/std/containers/associative/map/map.modifiers/clear.pass.cpp
+++ b/libcxx/test/std/containers/associative/map/map.modifiers/clear.pass.cpp
@@ -11,11 +11,12 @@
// class map
-// void clear();
+// void clear() noexcept;
#include <map>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
int main()
@@ -36,6 +37,7 @@ int main()
};
M m(ar, ar + sizeof(ar)/sizeof(ar[0]));
assert(m.size() == 8);
+ ASSERT_NOEXCEPT(m.clear());
m.clear();
assert(m.size() == 0);
}
@@ -56,6 +58,7 @@ int main()
};
M m(ar, ar + sizeof(ar)/sizeof(ar[0]));
assert(m.size() == 8);
+ ASSERT_NOEXCEPT(m.clear());
m.clear();
assert(m.size() == 0);
}
diff --git a/libcxx/test/std/containers/associative/multimap/multimap.modifiers/clear.pass.cpp b/libcxx/test/std/containers/associative/multimap/multimap.modifiers/clear.pass.cpp
index 321f4d0bd00..546a406fe1b 100644
--- a/libcxx/test/std/containers/associative/multimap/multimap.modifiers/clear.pass.cpp
+++ b/libcxx/test/std/containers/associative/multimap/multimap.modifiers/clear.pass.cpp
@@ -11,11 +11,12 @@
// class multimap
-// void clear();
+// void clear() noexcept;
#include <map>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
int main()
@@ -36,6 +37,7 @@ int main()
};
M m(ar, ar + sizeof(ar)/sizeof(ar[0]));
assert(m.size() == 8);
+ ASSERT_NOEXCEPT(m.clear());
m.clear();
assert(m.size() == 0);
}
@@ -56,6 +58,7 @@ int main()
};
M m(ar, ar + sizeof(ar)/sizeof(ar[0]));
assert(m.size() == 8);
+ ASSERT_NOEXCEPT(m.clear());
m.clear();
assert(m.size() == 0);
}
diff --git a/libcxx/test/std/containers/associative/multiset/clear.pass.cpp b/libcxx/test/std/containers/associative/multiset/clear.pass.cpp
index f762ef7d350..59ee02ece1d 100644
--- a/libcxx/test/std/containers/associative/multiset/clear.pass.cpp
+++ b/libcxx/test/std/containers/associative/multiset/clear.pass.cpp
@@ -11,11 +11,12 @@
// class multiset
-// void clear();
+// void clear() noexcept;
#include <set>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
int main()
@@ -36,6 +37,7 @@ int main()
};
M m(ar, ar + sizeof(ar)/sizeof(ar[0]));
assert(m.size() == 8);
+ ASSERT_NOEXCEPT(m.clear());
m.clear();
assert(m.size() == 0);
}
@@ -56,6 +58,7 @@ int main()
};
M m(ar, ar + sizeof(ar)/sizeof(ar[0]));
assert(m.size() == 8);
+ ASSERT_NOEXCEPT(m.clear());
m.clear();
assert(m.size() == 0);
}
diff --git a/libcxx/test/std/containers/associative/set/clear.pass.cpp b/libcxx/test/std/containers/associative/set/clear.pass.cpp
index 7a5bf4b14a7..1be3ed2b887 100644
--- a/libcxx/test/std/containers/associative/set/clear.pass.cpp
+++ b/libcxx/test/std/containers/associative/set/clear.pass.cpp
@@ -11,11 +11,12 @@
// class set
-// void clear();
+// void clear() noexcept;
#include <set>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
int main()
@@ -36,6 +37,7 @@ int main()
};
M m(ar, ar + sizeof(ar)/sizeof(ar[0]));
assert(m.size() == 8);
+ ASSERT_NOEXCEPT(m.clear());
m.clear();
assert(m.size() == 0);
}
@@ -56,6 +58,7 @@ int main()
};
M m(ar, ar + sizeof(ar)/sizeof(ar[0]));
assert(m.size() == 8);
+ ASSERT_NOEXCEPT(m.clear());
m.clear();
assert(m.size() == 0);
}
diff --git a/libcxx/test/std/containers/sequences/deque/deque.modifiers/clear.pass.cpp b/libcxx/test/std/containers/sequences/deque/deque.modifiers/clear.pass.cpp
new file mode 100644
index 00000000000..943b6e8e11c
--- /dev/null
+++ b/libcxx/test/std/containers/sequences/deque/deque.modifiers/clear.pass.cpp
@@ -0,0 +1,67 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <deque>
+
+// void clear() noexcept;
+
+#include <deque>
+#include <cassert>
+
+#include "test_macros.h"
+#include "../../../NotConstructible.h"
+#include "min_allocator.h"
+
+int main()
+{
+ {
+ typedef NotConstructible T;
+ typedef std::deque<T> C;
+ C c;
+ ASSERT_NOEXCEPT(c.clear());
+ c.clear();
+ assert(distance(c.begin(), c.end()) == 0);
+ }
+ {
+ typedef int T;
+ typedef std::deque<T> C;
+ const T t[] = {0, 1, 2, 3, 4};
+ C c(std::begin(t), std::end(t));
+
+ ASSERT_NOEXCEPT(c.clear());
+ c.clear();
+ assert(distance(c.begin(), c.end()) == 0);
+
+ c.clear();
+ assert(distance(c.begin(), c.end()) == 0);
+ }
+#if TEST_STD_VER >= 11
+ {
+ typedef NotConstructible T;
+ typedef std::deque<T, min_allocator<T>> C;
+ C c;
+ ASSERT_NOEXCEPT(c.clear());
+ c.clear();
+ assert(distance(c.begin(), c.end()) == 0);
+ }
+ {
+ typedef int T;
+ typedef std::deque<T, min_allocator<T>> C;
+ const T t[] = {0, 1, 2, 3, 4};
+ C c(std::begin(t), std::end(t));
+
+ ASSERT_NOEXCEPT(c.clear());
+ c.clear();
+ assert(distance(c.begin(), c.end()) == 0);
+
+ c.clear();
+ assert(distance(c.begin(), c.end()) == 0);
+ }
+#endif
+}
diff --git a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/clear.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/clear.pass.cpp
index 0e625ac76a0..6cdf8d57ace 100644
--- a/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/clear.pass.cpp
+++ b/libcxx/test/std/containers/sequences/forwardlist/forwardlist.modifiers/clear.pass.cpp
@@ -9,11 +9,12 @@
// <forward_list>
-// void clear();
+// void clear() noexcept;
#include <forward_list>
#include <cassert>
+#include "test_macros.h"
#include "../../../NotConstructible.h"
#include "min_allocator.h"
@@ -23,6 +24,7 @@ int main()
typedef NotConstructible T;
typedef std::forward_list<T> C;
C c;
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(distance(c.begin(), c.end()) == 0);
}
@@ -32,6 +34,7 @@ int main()
const T t[] = {0, 1, 2, 3, 4};
C c(std::begin(t), std::end(t));
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(distance(c.begin(), c.end()) == 0);
@@ -43,6 +46,7 @@ int main()
typedef NotConstructible T;
typedef std::forward_list<T, min_allocator<T>> C;
C c;
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(distance(c.begin(), c.end()) == 0);
}
@@ -52,6 +56,7 @@ int main()
const T t[] = {0, 1, 2, 3, 4};
C c(std::begin(t), std::end(t));
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(distance(c.begin(), c.end()) == 0);
diff --git a/libcxx/test/std/containers/sequences/list/list.modifiers/clear.pass.cpp b/libcxx/test/std/containers/sequences/list/list.modifiers/clear.pass.cpp
index 5d8c41fa197..1d7cb80eb65 100644
--- a/libcxx/test/std/containers/sequences/list/list.modifiers/clear.pass.cpp
+++ b/libcxx/test/std/containers/sequences/list/list.modifiers/clear.pass.cpp
@@ -9,11 +9,12 @@
// <list>
-// void clear();
+// void clear() noexcept;
#include <list>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
int main()
@@ -21,6 +22,7 @@ int main()
{
int a[] = {1, 2, 3};
std::list<int> c(a, a+3);
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(c.empty());
}
@@ -28,6 +30,7 @@ int main()
{
int a[] = {1, 2, 3};
std::list<int, min_allocator<int>> c(a, a+3);
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(c.empty());
}
diff --git a/libcxx/test/std/containers/sequences/vector/vector.modifiers/clear.pass.cpp b/libcxx/test/std/containers/sequences/vector/vector.modifiers/clear.pass.cpp
index 5f053eb8565..5357ba4cb28 100644
--- a/libcxx/test/std/containers/sequences/vector/vector.modifiers/clear.pass.cpp
+++ b/libcxx/test/std/containers/sequences/vector/vector.modifiers/clear.pass.cpp
@@ -9,11 +9,12 @@
// <vector>
-// void clear();
+// void clear() noexcept;
#include <vector>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
#include "asan_testing.h"
@@ -22,6 +23,7 @@ int main()
{
int a[] = {1, 2, 3};
std::vector<int> c(a, a+3);
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(c.empty());
LIBCPP_ASSERT(c.__invariants());
@@ -31,6 +33,7 @@ int main()
{
int a[] = {1, 2, 3};
std::vector<int, min_allocator<int>> c(a, a+3);
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(c.empty());
LIBCPP_ASSERT(c.__invariants());
diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/clear.pass.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/clear.pass.cpp
index 106423ebfbe..9212a5e3def 100644
--- a/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/clear.pass.cpp
+++ b/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/clear.pass.cpp
@@ -13,12 +13,13 @@
// class Alloc = allocator<pair<const Key, T>>>
// class unordered_map
-// void clear()
+// void clear() noexcept;
#include <unordered_map>
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
int main()
@@ -36,6 +37,7 @@ int main()
P(2, "four"),
};
C c(a, a + sizeof(a)/sizeof(a[0]));
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(c.size() == 0);
}
@@ -54,6 +56,7 @@ int main()
P(2, "four"),
};
C c(a, a + sizeof(a)/sizeof(a[0]));
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(c.size() == 0);
}
diff --git a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/clear.pass.cpp b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/clear.pass.cpp
index 891d44911eb..15c78208a61 100644
--- a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/clear.pass.cpp
+++ b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/clear.pass.cpp
@@ -13,12 +13,13 @@
// class Alloc = allocator<pair<const Key, T>>>
// class unordered_multimap
-// void clear()
+// void clear() noexcept;
#include <unordered_map>
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
int main()
@@ -36,6 +37,7 @@ int main()
P(2, "four"),
};
C c(a, a + sizeof(a)/sizeof(a[0]));
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(c.size() == 0);
}
@@ -54,6 +56,7 @@ int main()
P(2, "four"),
};
C c(a, a + sizeof(a)/sizeof(a[0]));
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(c.size() == 0);
}
diff --git a/libcxx/test/std/containers/unord/unord.multiset/clear.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/clear.pass.cpp
index 57dbb8b1faa..b699d0624dd 100644
--- a/libcxx/test/std/containers/unord/unord.multiset/clear.pass.cpp
+++ b/libcxx/test/std/containers/unord/unord.multiset/clear.pass.cpp
@@ -13,11 +13,12 @@
// class Alloc = allocator<Value>>
// class unordered_multiset
-// void clear()
+// void clear() noexcept;
#include <unordered_set>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
int main()
@@ -35,6 +36,7 @@ int main()
P(2)
};
C c(a, a + sizeof(a)/sizeof(a[0]));
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(c.size() == 0);
}
@@ -53,6 +55,7 @@ int main()
P(2)
};
C c(a, a + sizeof(a)/sizeof(a[0]));
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(c.size() == 0);
}
diff --git a/libcxx/test/std/containers/unord/unord.set/clear.pass.cpp b/libcxx/test/std/containers/unord/unord.set/clear.pass.cpp
index 8ebf748eb8d..2f22391297c 100644
--- a/libcxx/test/std/containers/unord/unord.set/clear.pass.cpp
+++ b/libcxx/test/std/containers/unord/unord.set/clear.pass.cpp
@@ -13,11 +13,12 @@
// class Alloc = allocator<Value>>
// class unordered_set
-// void clear()
+// void clear() noexcept;
#include <unordered_set>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
int main()
@@ -35,6 +36,7 @@ int main()
P(2)
};
C c(a, a + sizeof(a)/sizeof(a[0]));
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(c.size() == 0);
}
@@ -52,6 +54,7 @@ int main()
P(2)
};
C c(a, a + sizeof(a)/sizeof(a[0]));
+ ASSERT_NOEXCEPT(c.clear());
c.clear();
assert(c.size() == 0);
}
OpenPOWER on IntegriCloud