diff --git a/libcxx/test/libcxx/containers/sequences/deque/pop_back_empty.pass.cpp b/libcxx/test/libcxx/containers/sequences/deque/pop_back_empty.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/deque/pop_back_empty.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/deque/pop_back_empty.pass.cpp @@ -10,20 +10,20 @@ // pop_back() more than the number of elements in a deque -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) +// UNSUPPORTED: libcxx-no-debug-mode + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#include #include #include "test_macros.h" - +#include "debug_macros.h" int main(int, char**) { std::deque q; q.push_back(0); q.pop_back(); - q.pop_back(); - std::exit(1); + TEST_LIBCPP_ASSERT_FAILURE(q.pop_back(), "deque::pop_back called on an empty deque"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp @@ -13,13 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { @@ -27,8 +25,7 @@ l1.push_back(1); l1.push_back(2); l1.push_back(3); std::list::iterator i = l1.begin(); std::list l2 = l1; - l2.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l2.erase(i), "list::erase(iterator) called with an iterator not referring to this list"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/emplace_db1.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/emplace_db1.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/emplace_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/emplace_db1.pass.cpp @@ -14,35 +14,25 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" -class A -{ - int i_; - double d_; - - A(const A&); - A& operator=(const A&); -public: - A(int i, double d) - : i_(i), d_(d) {} - - int geti() const {return i_;} - double getd() const {return d_;} +struct A { + explicit A(int i, double d) { + (void)i; + (void)d; + } }; int main(int, char**) { std::list c1; std::list c2; - std::list::iterator i = c1.emplace(c2.cbegin(), 2, 3.5); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c1.emplace(c2.cbegin(), 2, 3.5), + "list::emplace(iterator, args...) called with an iterator not referring to this list"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db1.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db1.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db1.pass.cpp @@ -13,21 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::list l1(a1, a1+3); std::list::const_iterator i = l1.end(); - l1.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(i), "list::erase(iterator) called with a non-dereferenceable iterator"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db2.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db2.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db2.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db2.pass.cpp @@ -13,13 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { @@ -27,8 +25,7 @@ std::list l1(a1, a1+3); std::list l2(a1, a1+3); std::list::const_iterator i = l2.begin(); - l1.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(i), "list::erase(iterator) called with an iterator not referring to this list"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db1.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db1.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db1.pass.cpp @@ -13,21 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::list l1(a1, a1+3); std::list l2(a1, a1+3); - std::list::iterator i = l1.erase(l2.cbegin(), next(l1.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l2.cbegin(), std::next(l1.cbegin())), + "list::erase(iterator, iterator) called with an iterator not referring to this list"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db2.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db2.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db2.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db2.pass.cpp @@ -13,21 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::list l1(a1, a1+3); std::list l2(a1, a1+3); - std::list::iterator i = l1.erase(l1.cbegin(), next(l2.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l1.cbegin(), std::next(l2.cbegin())), + "list::erase(iterator, iterator) called with an iterator not referring to this list"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db3.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db3.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db3.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db3.pass.cpp @@ -13,21 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::list l1(a1, a1+3); std::list l2(a1, a1+3); - std::list::iterator i = l1.erase(l2.cbegin(), next(l2.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l2.cbegin(), std::next(l2.cbegin())), + "list::erase(iterator, iterator) called with an iterator not referring to this list"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db4.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db4.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db4.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db4.pass.cpp @@ -13,20 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::list l1(a1, a1+3); - std::list::iterator i = l1.erase(next(l1.cbegin()), l1.cbegin()); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(std::next(l1.cbegin()), l1.cbegin()), + "Attempted to increment a non-incrementable list::const_iterator"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_iter_iter_db1.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_iter_iter_db1.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_iter_iter_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_iter_iter_db1.pass.cpp @@ -14,13 +14,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include + #include "test_macros.h" -#include "test_iterators.h" +#include "debug_macros.h" int main(int, char**) { @@ -28,11 +26,8 @@ std::list v(100); std::list v2(100); int a[] = {1, 2, 3, 4, 5}; - const int N = sizeof(a)/sizeof(a[0]); - std::list::iterator i = v.insert(next(v2.cbegin(), 10), - cpp17_input_iterator(a), - cpp17_input_iterator(a+N)); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(v.insert(v2.cbegin(), a, a + 5), + "list::insert(iterator, range) called with an iterator not referring to this list"); } return 0; diff --git a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_rvalue_db1.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_rvalue_db1.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_rvalue_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_rvalue_db1.pass.cpp @@ -13,20 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::list v1(3); std::list v2(3); - v1.insert(v2.begin(), 4); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(v1.insert(v2.begin(), 4), + "list::insert(iterator, x) called with an iterator not referring to this list"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_size_value_db1.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_size_value_db1.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_size_value_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_size_value_db1.pass.cpp @@ -13,20 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::list c1(100); std::list c2; - std::list::iterator i = c1.insert(next(c2.cbegin(), 10), 5, 1); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c1.insert(c2.cbegin(), 5, 1), + "list::insert(iterator, n, x) called with an iterator not referring to this list"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_value_db1.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_value_db1.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_value_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_value_db1.pass.cpp @@ -13,22 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" - +#include "debug_macros.h" int main(int, char**) { std::list v1(3); std::list v2(3); int i = 4; - v1.insert(v2.begin(), i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(v1.insert(v2.begin(), i), + "list::insert(iterator, x) called with an iterator not referring to this list"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/pop_back_db1.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/pop_back_db1.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.modifiers/pop_back_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.modifiers/pop_back_db1.pass.cpp @@ -13,13 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { @@ -31,8 +30,7 @@ assert(c == std::list(a, a+1)); c.pop_back(); assert(c.empty()); - c.pop_back(); // operation under test - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.pop_back(), "list::pop_back() called on an empty list"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp @@ -13,21 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { { std::list v1(3); std::list v2(3); - v1.splice(v2.begin(), v2); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(v1.splice(v2.begin(), v2), + "list::splice(iterator, list) called with an iterator not referring to this list"); } return 0; diff --git a/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp @@ -13,21 +13,20 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { { std::list v1(3); std::list v2(3); - v1.splice(v1.begin(), v2, v1.begin()); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + v1.splice(v1.begin(), v2, v1.begin()), + "list::splice(iterator, list, iterator) called with the second iterator not referring to the list argument"); } return 0; diff --git a/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp @@ -13,21 +13,20 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { { - std::list v1(3); - std::list v2(3); - v1.splice(v1.begin(), v2, v2.begin(), v1.end()); - assert(false); + std::list v1(3); + std::list v2(3); + TEST_LIBCPP_ASSERT_FAILURE( + v1.splice(v1.begin(), v2, v2.begin(), v1.end()), + "list::splice(iterator, list, iterator, iterator) called with third iterator not referring to the list argument"); } return 0; diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_back.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_back.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_back.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_back.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; @@ -29,8 +26,7 @@ C c(1); assert(c.back() == 0); c.clear(); - assert(c.back() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.back(), "back() called on an empty vector"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_back_2.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_back_2.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_back_2.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_back_2.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -30,8 +27,7 @@ C c(1); assert(c.back() == 0); c.clear(); - assert(c.back() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.back(), "back() called on an empty vector"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_cback.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_cback.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_cback.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_cback.pass.cpp @@ -13,22 +13,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; typedef std::vector C; const C c; - assert(c.back() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.back(), "back() called on an empty vector"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_cback_2.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_cback_2.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_cback_2.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_cback_2.pass.cpp @@ -13,14 +13,10 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include +#include "debug_macros.h" #include "test_macros.h" #include "min_allocator.h" @@ -28,8 +24,7 @@ typedef int T; typedef std::vector > C; const C c; - assert(c.back() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.back(), "back() called on an empty vector"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_cfront.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_cfront.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_cfront.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_cfront.pass.cpp @@ -13,22 +13,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; typedef std::vector C; const C c; - assert(c.front() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.front(), "front() called on an empty vector"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_cfront_2.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_cfront_2.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_cfront_2.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_cfront_2.pass.cpp @@ -13,14 +13,10 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include +#include "debug_macros.h" #include "test_macros.h" #include "min_allocator.h" @@ -28,8 +24,7 @@ typedef int T; typedef std::vector > C; const C c; - assert(c.front() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.front(), "front() called on an empty vector"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_cindex.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_cindex.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_cindex.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_cindex.pass.cpp @@ -13,14 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include +#include "debug_macros.h" #include "test_macros.h" int main(int, char**) @@ -29,8 +26,7 @@ typedef std::vector C; const C c(1); assert(c[0] == 0); - assert(c[1] == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c[1], "vector[] index out of bounds"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_cindex_2.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_cindex_2.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_cindex_2.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_cindex_2.pass.cpp @@ -13,11 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include +#include "debug_macros.h" #include "test_macros.h" #include "min_allocator.h" @@ -26,8 +26,7 @@ typedef std::vector > C; const C c(1); assert(c[0] == 0); - assert(c[1] == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c[1], "vector[] index out of bounds"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_front.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_front.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_front.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_front.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; @@ -29,8 +26,7 @@ C c(1); assert(c.front() == 0); c.clear(); - assert(c.front() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.front(), "front() called on an empty vector"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_front_2.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_front_2.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_front_2.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_front_2.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -30,8 +27,7 @@ C c(1); assert(c.front() == 0); c.clear(); - assert(c.front() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.front(), "front() called on an empty vector"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_index.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_index.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_index.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_index.pass.cpp @@ -13,24 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; typedef std::vector C; C c(1); assert(c[0] == 0); - c.clear(); - assert(c[0] == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c[1], "vector[] index out of bounds"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_index_2.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_index_2.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_index_2.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_index_2.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -29,9 +26,7 @@ typedef std::vector > C; C c(1); assert(c[0] == 0); - c.clear(); - assert(c[0] == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c[1], "vector[] index out of bounds"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_10.pass.cpp @@ -13,15 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -29,9 +25,7 @@ typedef std::vector > C; C c1; C c2; - int i = c1.begin() - c2.begin(); - (void)i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c1.begin() - c2.begin(), "Attempted to subtract incompatible iterators"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_11.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_11.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_11.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_11.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -30,8 +27,7 @@ C c(1); C::iterator i = c.begin(); assert(i[0] == 0); - assert(i[1] == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(i[1], "Attempted to subscript an iterator outside its valid range"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_12.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_12.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_12.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_12.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -32,8 +29,7 @@ i += 1; assert(i == c.end()); i = c.begin(); - i += 2; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(i + 2, "Attempted to add/subtract an iterator outside its valid range"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_13.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_13.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_13.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_13.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -31,8 +28,7 @@ C::iterator i = c.end(); --i; assert(i == c.begin()); - --i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(--i, "Attempted to decrement a non-decrementable iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_14.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_14.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_14.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_14.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -31,8 +28,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_15.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_15.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_15.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_15.pass.cpp @@ -13,15 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -29,9 +25,7 @@ typedef std::vector > C; C c(1); C::iterator i = c.end(); - T j = *i; - (void)j; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_2.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_2.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_2.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_2.pass.cpp @@ -13,24 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; typedef std::vector C; C c1; C c2; - bool b = c1.begin() < c2.begin(); - (void)b; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c1.begin() < c2.begin(), "Attempted to compare incomparable iterators"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_3.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_3.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_3.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_3.pass.cpp @@ -13,24 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; typedef std::vector C; C c1; C c2; - int i = c1.begin() - c2.begin(); - (void)i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c1.begin() - c2.begin(), "Attempted to subtract incompatible iterators"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_4.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_4.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_4.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_4.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; @@ -29,8 +26,7 @@ C c(1); C::iterator i = c.begin(); assert(i[0] == 0); - assert(i[1] == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(i[1], "Attempted to subscript an iterator outside its valid range"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_5.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_5.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_5.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_5.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; @@ -31,8 +28,7 @@ i += 1; assert(i == c.end()); i = c.begin(); - i += 2; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(i + 2, "Attempted to add/subtract an iterator outside its valid range"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_6.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_6.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_6.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_6.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; @@ -30,8 +27,7 @@ C::iterator i = c.end(); --i; assert(i == c.begin()); - --i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(--i, "Attempted to decrement a non-decrementable iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_7.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; @@ -30,8 +27,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_8.pass.cpp @@ -13,24 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; typedef std::vector C; C c(1); C::iterator i = c.end(); - T j = *i; - (void)j; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_9.pass.cpp @@ -13,15 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -29,9 +25,7 @@ typedef std::vector > C; C c1; C c2; - bool b = c1.begin() < c2.begin(); - (void)b; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c1.begin() < c2.begin(), "Attempted to compare incomparable iterators"); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/pop_back_empty.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/pop_back_empty.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/pop_back_empty.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/pop_back_empty.pass.cpp @@ -13,20 +13,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) -#include #include #include "test_macros.h" - +#include "debug_macros.h" int main(int, char**) { std::vector v; v.push_back(0); v.pop_back(); - v.pop_back(); - std::exit(1); + TEST_LIBCPP_ASSERT_FAILURE(v.pop_back(), "vector::pop_back called on an empty vector"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/bucket_size.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/bucket_size.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/bucket_size.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/bucket_size.pass.cpp @@ -17,19 +17,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_map C; C c; - (void) c.bucket_size(3); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.bucket_size(3), "unordered container::bucket_size(n) called with n >= bucket_count()"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_bucket.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_bucket.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_bucket.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_bucket.pass.cpp @@ -13,19 +13,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_map C; C c; - (void) c.bucket(3); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.bucket(3), "unordered container::bucket(key) called when bucket_count() == 0"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_const_lvalue.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_const_lvalue.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_const_lvalue.pass.cpp @@ -13,23 +13,28 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_map C; - typedef C::iterator R; typedef C::value_type P; C c; C c2; C::const_iterator e = c2.end(); P v(3.5, 3); - R r = c.insert(e, v); - assert(false); +#if TEST_STD_VER < 11 + TEST_LIBCPP_ASSERT_FAILURE( + c.insert(e, v), + "unordered_map::insert(const_iterator, const value_type&) called with an iterator not referring to this unordered_map"); +#else + TEST_LIBCPP_ASSERT_FAILURE( + c.insert(e, v), + "unordered_map::insert(const_iterator, value_type&&) called with an iterator not referring to this unordered_map"); +#endif return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_rvalue.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_rvalue.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_rvalue.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_rvalue.pass.cpp @@ -17,22 +17,21 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_map C; - typedef C::iterator R; typedef C::value_type P; C c; C c2; C::const_iterator e = c2.end(); - R r = c.insert(e, P(3.5, 3)); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + c.insert(e, P(3.5, 3)), + "unordered_map::insert(const_iterator, const value_type&) called with an iterator not referring to this unordered_map"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_10.pass.cpp @@ -14,15 +14,12 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -31,8 +28,7 @@ C c; c.insert(std::make_pair(1, "one")); C::iterator i = c.end(); - C::value_type j = *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable unordered container iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_7.pass.cpp @@ -13,14 +13,13 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_map C; @@ -29,8 +28,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable unordered container iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_8.pass.cpp @@ -13,22 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_map C; C c; c.insert(std::make_pair(1, "one")); C::iterator i = c.end(); - C::value_type j = *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable unordered container iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_9.pass.cpp @@ -14,15 +14,13 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -33,8 +31,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable unordered container iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_10.pass.cpp @@ -14,14 +14,12 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -29,8 +27,7 @@ min_allocator>> C; C c(1); C::local_iterator i = c.end(0); - C::value_type j = *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable unordered container local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_7.pass.cpp @@ -13,13 +13,13 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include #include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_map C; @@ -30,8 +30,7 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable unordered container local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_8.pass.cpp @@ -13,20 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_map C; C c(1); C::local_iterator i = c.end(0); - C::value_type j = *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable unordered container local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_9.pass.cpp @@ -14,14 +14,13 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include +#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -33,8 +32,7 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable unordered container local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_swap_1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_swap_1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_swap_1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_swap_1.pass.cpp @@ -17,12 +17,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::pair P; @@ -34,10 +33,8 @@ std::unordered_map::iterator i2 = c2.begin(); swap(c1, c2); c1.erase(i2); - c2.erase(i1); - std::unordered_map::iterator j = i1; - c1.erase(i1); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + c1.erase(i1), "unordered container erase(iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/max_load_factor.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/max_load_factor.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/max_load_factor.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/max_load_factor.pass.cpp @@ -18,19 +18,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_map C; C c; - c.max_load_factor(0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.max_load_factor(0), "unordered container::max_load_factor(lf) called with lf <= 0"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_db1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_db1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_db1.pass.cpp @@ -13,21 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::pair P; P a1[] = {P(1, 1), P(2, 2), P(3, 3)}; std::unordered_map l1(a1, a1+3); std::unordered_map::const_iterator i = l1.end(); - l1.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(i), + "unordered container erase(iterator) called with a non-dereferenceable iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_db2.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_db2.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_db2.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_db2.pass.cpp @@ -13,13 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::pair P; @@ -27,8 +25,8 @@ std::unordered_map l1(a1, a1+3); std::unordered_map l2(a1, a1+3); std::unordered_map::const_iterator i = l2.begin(); - l1.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(i), "unordered container erase(iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db1.pass.cpp @@ -13,21 +13,20 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::pair P; P a1[] = {P(1, 1), P(2, 2), P(3, 3)}; std::unordered_map l1(a1, a1+3); std::unordered_map l2(a1, a1+3); - std::unordered_map::iterator i = l1.erase(l2.cbegin(), next(l1.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l2.cbegin(), std::next(l1.cbegin())), + "unordered container::erase(iterator, iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db2.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db2.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db2.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db2.pass.cpp @@ -13,21 +13,20 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::pair P; P a1[] = {P(1, 1), P(2, 2), P(3, 3)}; std::unordered_map l1(a1, a1+3); std::unordered_map l2(a1, a1+3); - std::unordered_map::iterator i = l1.erase(l1.cbegin(), next(l2.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l1.cbegin(), std::next(l2.cbegin())), + "unordered container::erase(iterator, iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db3.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db3.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db3.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db3.pass.cpp @@ -13,21 +13,20 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::pair P; P a1[] = {P(1, 1), P(2, 2), P(3, 3)}; std::unordered_map l1(a1, a1+3); std::unordered_map l2(a1, a1+3); - std::unordered_map::iterator i = l1.erase(l2.cbegin(), next(l2.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l2.cbegin(), std::next(l2.cbegin())), + "unordered container::erase(iterator, iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db4.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db4.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db4.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/unord.map.modifiers/erase_iter_iter_db4.pass.cpp @@ -13,20 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::pair P; P a1[] = {P(1, 1), P(2, 2), P(3, 3)}; std::unordered_map l1(a1, a1+3); - std::unordered_map::iterator i = l1.erase(next(l1.cbegin()), l1.cbegin()); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(std::next(l1.cbegin()), l1.cbegin()), + "Attempted to increment a non-incrementable unordered container const_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/bucket.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/bucket.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/bucket.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/bucket.pass.cpp @@ -17,19 +17,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_multimap C; C c; - (void) c.bucket(3); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.bucket(3), "unordered container::bucket(key) called when bucket_count() == 0"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/bucket_size.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/bucket_size.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/bucket_size.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/bucket_size.pass.cpp @@ -17,19 +17,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_multimap C; C c; - (void) c.bucket_size(3); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.bucket_size(3), "unordered container::bucket_size(n) called with n >= bucket_count()"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_const_lvalue.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_const_lvalue.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_const_lvalue.pass.cpp @@ -13,23 +13,22 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_multimap C; - typedef C::iterator R; typedef C::value_type P; C c; C c2; C::const_iterator e = c2.end(); P v(3.5, 3); - R r = c.insert(e, v); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + c.insert(e, v), + "unordered container::emplace_hint(const_iterator, args...) called with an iterator not referring to this unordered container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_rvalue.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_rvalue.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_rvalue.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_rvalue.pass.cpp @@ -17,22 +17,21 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_multimap C; - typedef C::iterator R; typedef C::value_type P; C c; C c2; C::const_iterator e = c2.end(); - R r = c.insert(e, P(3.5, 3)); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + c.insert(e, P(3.5, 3)), + "unordered container::emplace_hint(const_iterator, args...) called with an iterator not referring to this unordered container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_10.pass.cpp @@ -14,15 +14,12 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) -#include -#include #include #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -31,8 +28,7 @@ C c; c.insert(std::make_pair(1, "one")); C::iterator i = c.end(); - C::value_type j = *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable unordered container iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_7.pass.cpp @@ -13,14 +13,13 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_multimap C; @@ -29,8 +28,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable unordered container iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_8.pass.cpp @@ -13,22 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) -#include #include #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_multimap C; C c; c.insert(std::make_pair(1, "one")); C::iterator i = c.end(); - C::value_type j = *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable unordered container iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_9.pass.cpp @@ -14,15 +14,13 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -33,8 +31,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable unordered container iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_10.pass.cpp @@ -14,15 +14,12 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -30,8 +27,7 @@ min_allocator>> C; C c(1); C::local_iterator i = c.end(0); - C::value_type j = *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable unordered container local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_7.pass.cpp @@ -13,13 +13,13 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include #include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_multimap C; @@ -30,8 +30,7 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable unordered container local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_8.pass.cpp @@ -13,20 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_multimap C; C c(1); C::local_iterator i = c.end(0); - C::value_type j = *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable unordered container local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_9.pass.cpp @@ -14,15 +14,13 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -35,8 +33,7 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable unordered container local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_swap_1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_swap_1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_swap_1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_swap_1.pass.cpp @@ -17,13 +17,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { @@ -36,10 +34,8 @@ std::unordered_multimap::iterator i2 = c2.begin(); swap(c1, c2); c1.erase(i2); - c2.erase(i1); - std::unordered_multimap::iterator j = i1; - c1.erase(i1); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + c1.erase(i1), "unordered container erase(iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/max_load_factor.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/max_load_factor.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/max_load_factor.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/max_load_factor.pass.cpp @@ -18,19 +18,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_multimap C; C c; - c.max_load_factor(0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.max_load_factor(0), "unordered container::max_load_factor(lf) called with lf <= 0"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_db1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_db1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_db1.pass.cpp @@ -13,21 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::pair P; P a1[] = {P(1, 1), P(2, 2), P(3, 3)}; std::unordered_multimap l1(a1, a1+3); std::unordered_multimap::const_iterator i = l1.end(); - l1.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(i), + "unordered container erase(iterator) called with a non-dereferenceable iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_db2.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_db2.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_db2.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_db2.pass.cpp @@ -13,13 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::pair P; @@ -27,8 +25,8 @@ std::unordered_multimap l1(a1, a1+3); std::unordered_multimap l2(a1, a1+3); std::unordered_multimap::const_iterator i = l2.begin(); - l1.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(i), "unordered container erase(iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db1.pass.cpp @@ -13,21 +13,20 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::pair P; P a1[] = {P(1, 1), P(2, 2), P(3, 3)}; std::unordered_multimap l1(a1, a1+3); std::unordered_multimap l2(a1, a1+3); - std::unordered_multimap::iterator i = l1.erase(l2.cbegin(), next(l1.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l2.cbegin(), std::next(l1.cbegin())), + "unordered container::erase(iterator, iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db2.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db2.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db2.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db2.pass.cpp @@ -13,21 +13,20 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::pair P; P a1[] = {P(1, 1), P(2, 2), P(3, 3)}; std::unordered_multimap l1(a1, a1+3); std::unordered_multimap l2(a1, a1+3); - std::unordered_multimap::iterator i = l1.erase(l1.cbegin(), next(l2.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l1.cbegin(), std::next(l2.cbegin())), + "unordered container::erase(iterator, iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db3.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db3.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db3.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db3.pass.cpp @@ -13,21 +13,20 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::pair P; P a1[] = {P(1, 1), P(2, 2), P(3, 3)}; std::unordered_multimap l1(a1, a1+3); std::unordered_multimap l2(a1, a1+3); - std::unordered_multimap::iterator i = l1.erase(l2.cbegin(), next(l2.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l2.cbegin(), std::next(l2.cbegin())), + "unordered container::erase(iterator, iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db4.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db4.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db4.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/unord.multimap.modifiers/erase_iter_iter_db4.pass.cpp @@ -13,20 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::pair P; P a1[] = {P(1, 1), P(2, 2), P(3, 3)}; std::unordered_multimap l1(a1, a1+3); - std::unordered_multimap::iterator i = l1.erase(next(l1.cbegin()), l1.cbegin()); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(std::next(l1.cbegin()), l1.cbegin()), + "Attempted to increment a non-incrementable unordered container const_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/bucket.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/bucket.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/bucket.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/bucket.pass.cpp @@ -17,18 +17,16 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_multiset C; C c; - (void) c.bucket(3); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.bucket(3), "unordered container::bucket(key) called when bucket_count() == 0"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/bucket_size.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/bucket_size.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/bucket_size.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/bucket_size.pass.cpp @@ -17,18 +17,16 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_multiset C; C c; - (void) c.bucket_size(3); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.bucket_size(3), "unordered container::bucket_size(n) called with n >= bucket_count()"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_insert_hint_const_lvalue.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_insert_hint_const_lvalue.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_insert_hint_const_lvalue.pass.cpp @@ -13,23 +13,22 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_multiset C; - typedef C::iterator R; typedef C::value_type P; C c; C c2; C::const_iterator e = c2.end(); P v(3.5); - R r = c.insert(e, v); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + c.insert(e, v), + "unordered container::emplace_hint(const_iterator, args...) called with an iterator not referring to this unordered container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_10.pass.cpp @@ -14,13 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -28,8 +26,7 @@ typedef std::unordered_multiset, std::equal_to, min_allocator> C; C c(1); C::iterator i = c.end(); - (void) *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable unordered container const_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_7.pass.cpp @@ -13,12 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; @@ -29,8 +29,7 @@ assert(i != c.end()); ++i; assert(i == c.end()); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable unordered container const_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_8.pass.cpp @@ -13,20 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; typedef std::unordered_multiset C; C c(1); C::iterator i = c.end(); - (void) *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable unordered container const_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_9.pass.cpp @@ -14,13 +14,12 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -31,8 +30,7 @@ assert(i != c.end()); ++i; assert(i == c.end()); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable unordered container const_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_10.pass.cpp @@ -14,13 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -28,8 +26,8 @@ typedef std::unordered_multiset, std::equal_to, min_allocator> C; C c(1); C::local_iterator i = c.end(0); - (void) *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + *i, "Attempted to dereference a non-dereferenceable unordered container const_local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_7.pass.cpp @@ -13,12 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; @@ -30,8 +30,8 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, + "Attempted to increment a non-incrementable unordered container const_local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_8.pass.cpp @@ -13,20 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; typedef std::unordered_multiset C; C c(1); C::local_iterator i = c.end(0); - (void) *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + *i, "Attempted to dereference a non-dereferenceable unordered container const_local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_9.pass.cpp @@ -14,13 +14,12 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -32,8 +31,8 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, + "Attempted to increment a non-incrementable unordered container const_local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_swap_1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_swap_1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_swap_1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_swap_1.pass.cpp @@ -17,12 +17,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 3, 7, 9, 10}; @@ -33,10 +32,8 @@ std::unordered_multiset::iterator i2 = c2.begin(); swap(c1, c2); c1.erase(i2); - c2.erase(i1); - std::unordered_multiset::iterator j = i1; - c1.erase(i1); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + c1.erase(i1), "unordered container erase(iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_db1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_db1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_db1.pass.cpp @@ -13,19 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::unordered_multiset l1(a1, a1+3); std::unordered_multiset::const_iterator i = l1.end(); - l1.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(i), + "unordered container erase(iterator) called with a non-dereferenceable iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_db2.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_db2.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_db2.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_db2.pass.cpp @@ -13,20 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::unordered_multiset l1(a1, a1+3); std::unordered_multiset l2(a1, a1+3); std::unordered_multiset::const_iterator i = l2.begin(); - l1.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(i), "unordered container erase(iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db1.pass.cpp @@ -13,19 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::unordered_multiset l1(a1, a1+3); std::unordered_multiset l2(a1, a1+3); - std::unordered_multiset::iterator i = l1.erase(l2.cbegin(), next(l1.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l2.cbegin(), std::next(l1.cbegin())), + "unordered container::erase(iterator, iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db2.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db2.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db2.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db2.pass.cpp @@ -13,19 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::unordered_multiset l1(a1, a1+3); std::unordered_multiset l2(a1, a1+3); - std::unordered_multiset::iterator i = l1.erase(l1.cbegin(), next(l2.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l1.cbegin(), std::next(l2.cbegin())), + "unordered container::erase(iterator, iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db3.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db3.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db3.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db3.pass.cpp @@ -13,19 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::unordered_multiset l1(a1, a1+3); std::unordered_multiset l2(a1, a1+3); - std::unordered_multiset::iterator i = l1.erase(l2.cbegin(), next(l2.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l2.cbegin(), std::next(l2.cbegin())), + "unordered container::erase(iterator, iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db4.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db4.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db4.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/erase_iter_iter_db4.pass.cpp @@ -13,18 +13,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::unordered_multiset l1(a1, a1+3); - std::unordered_multiset::iterator i = l1.erase(next(l1.cbegin()), l1.cbegin()); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(std::next(l1.cbegin()), l1.cbegin()), + "Attempted to increment a non-incrementable unordered container const_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/max_load_factor.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/max_load_factor.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/max_load_factor.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/max_load_factor.pass.cpp @@ -18,18 +18,16 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_multiset C; C c; - c.max_load_factor(0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.max_load_factor(0), "unordered container::max_load_factor(lf) called with lf <= 0"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/bucket.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/bucket.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/bucket.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/bucket.pass.cpp @@ -17,18 +17,16 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_set C; C c; - (void) c.bucket(3); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.bucket(3), "unordered container::bucket(key) called when bucket_count() == 0"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/bucket_size.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/bucket_size.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/bucket_size.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/bucket_size.pass.cpp @@ -17,18 +17,16 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_set C; C c; - (void) c.bucket_size(3); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.bucket_size(3), "unordered container::bucket_size(n) called with n >= bucket_count()"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_insert_hint_const_lvalue.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_insert_hint_const_lvalue.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_insert_hint_const_lvalue.pass.cpp @@ -13,23 +13,22 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_set C; - typedef C::iterator R; typedef C::value_type P; C c; C c2; C::const_iterator e = c2.end(); P v(3.5); - R r = c.insert(e, v); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + c.insert(e, v), + "unordered_set::insert(const_iterator, const value_type&) called with an iterator not referring to this unordered_set"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_10.pass.cpp @@ -14,13 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -28,8 +26,7 @@ typedef std::unordered_set, std::equal_to, min_allocator> C; C c(1); C::iterator i = c.end(); - (void) *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable unordered container const_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_7.pass.cpp @@ -13,12 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; @@ -29,8 +29,7 @@ assert(i != c.end()); ++i; assert(i == c.end()); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable unordered container const_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_8.pass.cpp @@ -13,20 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; typedef std::unordered_set C; C c(1); C::iterator i = c.end(); - (void) *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable unordered container const_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_9.pass.cpp @@ -14,13 +14,12 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -31,8 +30,7 @@ assert(i != c.end()); ++i; assert(i == c.end()); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable unordered container const_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_10.pass.cpp @@ -14,13 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -28,8 +26,8 @@ typedef std::unordered_set, std::equal_to, min_allocator> C; C c(1); C::local_iterator i = c.end(0); - (void) *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + *i, "Attempted to dereference a non-dereferenceable unordered container const_local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_7.pass.cpp @@ -13,12 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; @@ -30,8 +30,8 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, + "Attempted to increment a non-incrementable unordered container const_local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_8.pass.cpp @@ -13,20 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef int T; typedef std::unordered_set C; C c(1); C::local_iterator i = c.end(0); - (void) *i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + *i, "Attempted to dereference a non-dereferenceable unordered container const_local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_9.pass.cpp @@ -14,13 +14,12 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -32,8 +31,8 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, + "Attempted to increment a non-incrementable unordered container const_local_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_swap_1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_swap_1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_swap_1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_swap_1.pass.cpp @@ -17,12 +17,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 3, 7, 9, 10}; @@ -33,10 +32,8 @@ std::unordered_set::iterator i2 = c2.begin(); swap(c1, c2); c1.erase(i2); - c2.erase(i1); - std::unordered_set::iterator j = i1; - c1.erase(i1); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + c1.erase(i1), "unordered container erase(iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_db1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_db1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_db1.pass.cpp @@ -13,19 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::unordered_set l1(a1, a1+3); std::unordered_set::const_iterator i = l1.end(); - l1.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(i), + "unordered container erase(iterator) called with a non-dereferenceable iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_db2.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_db2.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_db2.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_db2.pass.cpp @@ -13,21 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::unordered_set l1(a1, a1+3); std::unordered_set l2(a1, a1+3); std::unordered_set::const_iterator i = l2.begin(); - l1.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(i), "unordered container erase(iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db1.pass.cpp @@ -13,19 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::unordered_set l1(a1, a1+3); std::unordered_set l2(a1, a1+3); - std::unordered_set::iterator i = l1.erase(l2.cbegin(), next(l1.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l2.cbegin(), std::next(l1.cbegin())), + "unordered container::erase(iterator, iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db2.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db2.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db2.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db2.pass.cpp @@ -13,19 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::unordered_set l1(a1, a1+3); std::unordered_set l2(a1, a1+3); - std::unordered_set::iterator i = l1.erase(l1.cbegin(), next(l2.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l1.cbegin(), std::next(l2.cbegin())), + "unordered container::erase(iterator, iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db3.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db3.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db3.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db3.pass.cpp @@ -13,19 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::unordered_set l1(a1, a1+3); std::unordered_set l2(a1, a1+3); - std::unordered_set::iterator i = l1.erase(l2.cbegin(), next(l2.cbegin())); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l2.cbegin(), std::next(l2.cbegin())), + "unordered container::erase(iterator, iterator) called with an iterator not referring to this container"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db4.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db4.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db4.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/erase_iter_iter_db4.pass.cpp @@ -13,18 +13,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { int a1[] = {1, 2, 3}; std::unordered_set l1(a1, a1+3); - std::unordered_set::iterator i = l1.erase(next(l1.cbegin()), l1.cbegin()); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(std::next(l1.cbegin()), l1.cbegin()), + "Attempted to increment a non-incrementable unordered container const_iterator"); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/max_load_factor.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/max_load_factor.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/max_load_factor.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/max_load_factor.pass.cpp @@ -18,18 +18,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::unordered_set C; C c; - c.max_load_factor(-0.5f); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(c.max_load_factor(-0.5f), + "unordered container::max_load_factor(lf) called with lf <= 0"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/back.const.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/back.const.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/back.const.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/back.const.pass.cpp @@ -13,16 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::string const s; - (void) s.back(); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s.back(), "string::back(): string is empty"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/back.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/back.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/back.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/back.pass.cpp @@ -13,16 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::string s; - (void) s.back(); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s.back(), "string::back(): string is empty"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_back.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_back.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_back.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_back.pass.cpp @@ -13,23 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::string S; S s(1, '\0'); assert(s.back() == 0); s.clear(); - assert(s.back() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s.back(), "string::back(): string is empty"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_back_2.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_back_2.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_back_2.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_back_2.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -29,8 +26,7 @@ S s(1, '\0'); assert(s.back() == 0); s.clear(); - assert(s.back() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s.back(), "string::back(): string is empty"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_cback.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_cback.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_cback.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_cback.pass.cpp @@ -13,21 +13,16 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::string S; const S s; - assert(s.back() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s.back(), "string::back(): string is empty"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_cback_2.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_cback_2.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_cback_2.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_cback_2.pass.cpp @@ -13,22 +13,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include +#include "debug_macros.h" #include "test_macros.h" #include "min_allocator.h" int main(int, char**) { typedef std::basic_string, min_allocator > S; const S s; - assert(s.back() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s.back(), "string::back(): string is empty"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_cfront.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_cfront.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_cfront.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_cfront.pass.cpp @@ -13,21 +13,16 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::string S; const S s; - assert(s.front() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s.front(), "string::front(): string is empty"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_cfront_2.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_cfront_2.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_cfront_2.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_cfront_2.pass.cpp @@ -13,22 +13,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include +#include "debug_macros.h" #include "test_macros.h" #include "min_allocator.h" int main(int, char**) { typedef std::basic_string, min_allocator > S; const S s; - assert(s.front() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s.front(), "string::front(): string is empty"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex.pass.cpp @@ -13,22 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::string S; const S s; assert(s[0] == 0); - assert(s[1] == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s[1], "string index out of bounds"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex_2.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex_2.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex_2.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex_2.pass.cpp @@ -13,23 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { typedef std::basic_string, min_allocator > S; const S s; assert(s[0] == 0); - assert(s[1] == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s[1], "string index out of bounds"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_front.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_front.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_front.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_front.pass.cpp @@ -13,23 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::string S; S s(1, '\0'); assert(s.front() == 0); s.clear(); - assert(s.front() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s.front(), "string::front(): string is empty"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_front_2.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_front_2.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_front_2.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_front_2.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -29,8 +26,7 @@ S s(1, '\0'); assert(s.front() == 0); s.clear(); - assert(s.front() == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s.front(), "string::front(): string is empty"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_index.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_index.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_index.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_index.pass.cpp @@ -13,22 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::string S; S s; assert(s[0] == 0); - assert(s[1] == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s[1], "string index out of bounds"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_index_2.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_index_2.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_index_2.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_index_2.pass.cpp @@ -13,23 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { typedef std::basic_string, min_allocator > S; S s; assert(s[0] == 0); - assert(s[1] == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s[1], "string index out of bounds"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/front.const.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/front.const.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/front.const.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/front.const.pass.cpp @@ -13,17 +13,15 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::string const s; - (void) s.front(); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s.front(), "string::front(): string is empty"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/front.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/front.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/front.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/front.pass.cpp @@ -13,17 +13,15 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::string s; - (void) s.front(); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s.front(), "string::front(): string is empty"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/index.const.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/index.const.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/index.const.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/index.const.pass.cpp @@ -13,19 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::string const s; char c = s[0]; assert(c == '\0'); - c = s[1]; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s[1], "string index out of bounds"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/index.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/index.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/index.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/index.pass.cpp @@ -13,19 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::string s; char c = s[0]; assert(c == '\0'); - c = s[1]; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s[1], "string index out of bounds"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_10.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_10.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_10.pass.cpp @@ -13,24 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { typedef std::basic_string, min_allocator > S; S s1; S s2; - int i = s1.begin() - s2.begin(); - (void)i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s1.begin() - s2.begin(), "Attempted to subtract incompatible iterators"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_11.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_11.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_11.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_11.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -29,8 +26,7 @@ C c(1, '\0'); C::iterator i = c.begin(); assert(i[0] == 0); - assert(i[1] == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(i[1], "Attempted to subscript an iterator outside its valid range"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_12.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_12.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_12.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_12.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -31,8 +28,7 @@ i += 1; assert(i == c.end()); i = c.begin(); - i += 2; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(i += 2, "Attempted to add/subtract an iterator outside its valid range"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_13.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_13.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_13.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_13.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -30,8 +27,7 @@ C::iterator i = c.end(); --i; assert(i == c.begin()); - --i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(--i, "Attempted to decrement a non-decrementable iterator"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_14.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_14.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_14.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_14.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -30,8 +27,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable iterator"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_15.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_15.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_15.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_15.pass.cpp @@ -13,23 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { typedef std::basic_string, min_allocator > C; C c(1, '\0'); C::iterator i = c.end(); - (void)*i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable iterator"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_2.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_2.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_2.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_2.pass.cpp @@ -13,23 +13,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::string S; S s1; S s2; - bool b = s1.begin() < s2.begin(); - (void)b; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s1.begin() < s2.begin(), "Attempted to compare incomparable iterators"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_3.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_3.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_3.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_3.pass.cpp @@ -13,23 +13,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::string S; S s1; S s2; - int i = s1.begin() - s2.begin(); - (void)i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s1.begin() - s2.begin(), "Attempted to subtract incompatible iterators"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_4.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_4.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_4.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_4.pass.cpp @@ -13,23 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::string C; C c(1, '\0'); C::iterator i = c.begin(); assert(i[0] == 0); - assert(i[1] == 0); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(i[1], "Attempted to subscript an iterator outside its valid range"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_5.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_5.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_5.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_5.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::string C; @@ -30,8 +27,7 @@ i += 1; assert(i == c.end()); i = c.begin(); - i += 2; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(i += 2, "Attempted to add/subtract an iterator outside its valid range"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_6.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_6.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_6.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_6.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::string C; @@ -29,8 +26,7 @@ C::iterator i = c.end(); --i; assert(i == c.begin()); - --i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(--i, "Attempted to decrement a non-decrementable iterator"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_7.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_7.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_7.pass.cpp @@ -13,15 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::string C; @@ -29,8 +26,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(++i, "Attempted to increment a non-incrementable iterator"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_8.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_8.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_8.pass.cpp @@ -13,22 +13,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { typedef std::string C; C c(1, '\0'); C::iterator i = c.end(); - (void)*i; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*i, "Attempted to dereference a non-dereferenceable iterator"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_9.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_9.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_9.pass.cpp @@ -13,24 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { typedef std::basic_string, min_allocator > S; S s1; S s2; - bool b = s1.begin() < s2.begin(); - (void)b; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(s1.begin() < s2.begin(), "Attempted to compare incomparable iterators"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db1.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db1.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db1.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db1.pass.cpp @@ -13,21 +13,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::string l1("123"); std::string::const_iterator i = l1.end(); - l1.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(i), "string::erase(iterator) called with a non-dereferenceable iterator"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db2.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db2.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db2.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db2.pass.cpp @@ -13,22 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::string l1("123"); std::string l2("123"); std::string::const_iterator i = l2.begin(); - l1.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(i), + "string::erase(iterator) called with an iterator not referring to this string"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db3.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db3.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db3.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db3.pass.cpp @@ -13,20 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { typedef std::basic_string, min_allocator > S; S l1("123"); S::const_iterator i = l1.end(); - l1.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(i), "string::erase(iterator) called with a non-dereferenceable iterator"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db4.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db4.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db4.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_db4.pass.cpp @@ -13,12 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { @@ -26,8 +25,8 @@ S l1("123"); S l2("123"); S::const_iterator i = l2.begin(); - l1.erase(i); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(i), + "string::erase(iterator) called with an iterator not referring to this string"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db1.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db1.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db1.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db1.pass.cpp @@ -13,21 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::string l1("123"); std::string l2("123"); - std::string::iterator i = l1.erase(l2.cbegin(), l1.cbegin()+1); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l2.cbegin(), l1.cbegin() + 1), + "string::erase(iterator, iterator) called with an iterator not referring to this string"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db2.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db2.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db2.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db2.pass.cpp @@ -13,21 +13,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::string l1("123"); std::string l2("123"); - std::string::iterator i = l1.erase(l1.cbegin(), l2.cbegin()+1); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l1.cbegin(), l2.cbegin() + 1), "Attempted to compare incomparable iterators"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db3.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db3.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db3.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db3.pass.cpp @@ -13,21 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::string l1("123"); std::string l2("123"); - std::string::iterator i = l1.erase(l2.cbegin(), l2.cbegin()+1); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l2.cbegin(), l2.cbegin() + 1), + "string::erase(iterator, iterator) called with an iterator not referring to this string"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db4.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db4.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db4.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db4.pass.cpp @@ -13,20 +13,17 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::string l1("123"); - std::string::iterator i = l1.erase(l1.cbegin()+1, l1.cbegin()); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l1.cbegin() + 1, l1.cbegin()), + "string::erase(first, last) called with invalid range"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db5.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db5.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db5.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db5.pass.cpp @@ -13,20 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { typedef std::basic_string, min_allocator > S; S l1("123"); S l2("123"); - S::iterator i = l1.erase(l2.cbegin(), l1.cbegin() + 1); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l2.cbegin(), l1.cbegin() + 1), + "string::erase(iterator, iterator) called with an iterator not referring to this string"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db6.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db6.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db6.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db6.pass.cpp @@ -13,20 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { typedef std::basic_string, min_allocator > S; S l1("123"); S l2("123"); - S::iterator i = l1.erase(l1.cbegin(), l2.cbegin() + 1); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l1.cbegin(), l2.cbegin() + 1), "Attempted to compare incomparable iterators"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db7.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db7.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db7.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db7.pass.cpp @@ -13,20 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { typedef std::basic_string, min_allocator > S; S l1("123"); S l2("123"); - S::iterator i = l1.erase(l2.cbegin(), l2.cbegin() + 1); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l1.cbegin() + 1, l1.cbegin()), + "string::erase(first, last) called with invalid range"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db8.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db8.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db8.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_iter_iter_db8.pass.cpp @@ -13,19 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" #include "min_allocator.h" int main(int, char**) { typedef std::basic_string, min_allocator > S; S l1("123"); - S::iterator i = l1.erase(l1.cbegin() + 1, l1.cbegin()); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l1.cbegin() + 1, l1.cbegin()), + "string::erase(first, last) called with invalid range"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_pop_back_db1.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_pop_back_db1.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_pop_back_db1.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/erase_pop_back_db1.pass.cpp @@ -13,20 +13,16 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { - { - std::string s; - s.pop_back(); - assert(false); - } + std::string s; + TEST_LIBCPP_ASSERT_FAILURE(s.pop_back(), "string::pop_back(): string is already empty"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/insert_iter_char_db1.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/insert_iter_char_db1.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/insert_iter_char_db1.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/insert_iter_char_db1.pass.cpp @@ -13,24 +13,18 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" - +#include "debug_macros.h" int main(int, char**) { - { - typedef std::string S; - S s; - S s2; - s.insert(s2.begin(), '1'); - assert(false); - } + typedef std::string S; + S s; + S s2; + TEST_LIBCPP_ASSERT_FAILURE(s.insert(s2.begin(), '1'), "Attempted to subtract incompatible iterators"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/insert_iter_iter_iter_db1.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/insert_iter_iter_iter_db1.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/insert_iter_iter_iter_db1.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/insert_iter_iter_iter_db1.pass.cpp @@ -14,24 +14,20 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" - +#include "debug_macros.h" int main(int, char**) { - { - std::string v; - std::string v2; - char a[] = "123"; - const int N = sizeof(a)/sizeof(a[0]); - std::string::iterator i = v.insert(v2.cbegin() + 10, a, a+N); - assert(false); - } + std::string v; + std::string v2; + char a[] = "123"; + const int N = sizeof(a)/sizeof(a[0]); + TEST_LIBCPP_ASSERT_FAILURE(v.insert(v2.cbegin() + 10, a, a + N), + "Attempted to add/subtract an iterator outside its valid range"); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/insert_iter_size_char_db1.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/insert_iter_size_char_db1.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/insert_iter_size_char_db1.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/insert_iter_size_char_db1.pass.cpp @@ -13,21 +13,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { - { - std::string s; - std::string s2; - s.insert(s2.begin(), 1, 'a'); - assert(false); - } + std::string s; + std::string s2; + TEST_LIBCPP_ASSERT_FAILURE( + s.insert(s2.begin(), 1, 'a'), + "string::insert(iterator, n, value) called with an iterator not referring to this string"); return 0; } diff --git a/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference.pass.cpp b/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference.pass.cpp --- a/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference.pass.cpp +++ b/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference.pass.cpp @@ -14,17 +14,15 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { std::optional opt; - int x = *opt; (void)x; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*opt, "optional operator* called on a disengaged value"); return 0; } diff --git a/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference_const.pass.cpp b/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference_const.pass.cpp --- a/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference_const.pass.cpp +++ b/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference_const.pass.cpp @@ -14,17 +14,15 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { const std::optional opt; - int x = *opt; (void)x; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*opt, "optional operator* called on a disengaged value"); return 0; } diff --git a/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference_const_rvalue.pass.cpp b/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference_const_rvalue.pass.cpp --- a/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference_const_rvalue.pass.cpp +++ b/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference_const_rvalue.pass.cpp @@ -14,18 +14,15 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" +#include "debug_macros.h" int main(int, char**) { - std::optional opt; - int x = *std::move(opt); (void)x; - assert(false); + const std::optional opt; + TEST_LIBCPP_ASSERT_FAILURE(*std::move(opt), "optional operator* called on a disengaged value"); return 0; } diff --git a/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference_rvalue.pass.cpp b/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference_rvalue.pass.cpp --- a/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference_rvalue.pass.cpp +++ b/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/dereference_rvalue.pass.cpp @@ -14,19 +14,15 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include -#include #include "test_macros.h" - +#include "debug_macros.h" int main(int, char**) { std::optional opt; - int x = *std::move(opt); (void)x; - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(*std::move(opt), "optional operator* called on a disengaged value"); return 0; } diff --git a/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/op_arrow.pass.cpp b/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/op_arrow.pass.cpp --- a/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/op_arrow.pass.cpp +++ b/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/op_arrow.pass.cpp @@ -14,12 +14,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" struct X { int test() noexcept {return 3;} @@ -27,8 +26,7 @@ int main(int, char**) { std::optional opt; - assert(opt->test() == 3); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(opt->test(), "optional operator-> called on a disengaged value"); return 0; } diff --git a/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/op_arrow_const.pass.cpp b/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/op_arrow_const.pass.cpp --- a/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/op_arrow_const.pass.cpp +++ b/libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/op_arrow_const.pass.cpp @@ -14,21 +14,19 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) #include -#include #include "test_macros.h" +#include "debug_macros.h" struct X { - constexpr int test() const {return 3;} + int test() const {return 3;} }; int main(int, char**) { const std::optional opt; - assert(opt->test() == 3); - assert(false); + TEST_LIBCPP_ASSERT_FAILURE(opt->test(), "optional operator-> called on a disengaged value"); return 0; } diff --git a/libcxx/test/support/debug_macros.h b/libcxx/test/support/debug_macros.h new file mode 100644 --- /dev/null +++ b/libcxx/test/support/debug_macros.h @@ -0,0 +1,33 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef TEST_SUPPORT_DEBUG_MACROS_H +#define TEST_SUPPORT_DEBUG_MACROS_H + +#include <__debug> +#include +#include + +static const char* expected_libcpp_assert_message = 0; + +static void test_debug_function(std::__libcpp_debug_info const& info) { + if (0 == std::strcmp(info.__msg_, expected_libcpp_assert_message)) + std::exit(0); + std::fprintf(stderr, "%s\n", info.what().c_str()); + std::abort(); +} + +#define TEST_LIBCPP_ASSERT_FAILURE(expr, m) \ + do { \ + ::expected_libcpp_assert_message = m; \ + std::__libcpp_set_debug_function(&::test_debug_function); \ + (void)(expr); \ + assert(false); \ + } while (false) + +#endif // TEST_SUPPORT_DEBUG_MACROS_H