From 1d8a5164b41c9c2f609ef825e4ae87f14abdb5b6 Mon Sep 17 00:00:00 2001 From: Howard Hinnant Date: Tue, 26 Mar 2013 15:45:56 +0000 Subject: [PATCH] More vector debug tests. llvm-svn: 178033 --- .../vector/vector.modifiers/emplace.pass.cpp | 12 +++++++ .../insert_iter_iter_iter.pass.cpp | 15 +++++++++ .../vector.modifiers/insert_iter_rvalue.pass.cpp | 12 +++++++ .../insert_iter_size_value.pass.cpp | 12 +++++++ .../vector.modifiers/insert_iter_value.pass.cpp | 13 ++++++++ .../vector/vector.special/db_swap_1.pass.cpp | 39 ++++++++++++++++++++++ 6 files changed, 103 insertions(+) create mode 100644 libcxx/test/containers/sequences/vector/vector.special/db_swap_1.pass.cpp diff --git a/libcxx/test/containers/sequences/vector/vector.modifiers/emplace.pass.cpp b/libcxx/test/containers/sequences/vector/vector.modifiers/emplace.pass.cpp index 60aaa3f..d85b8f2 100644 --- a/libcxx/test/containers/sequences/vector/vector.modifiers/emplace.pass.cpp +++ b/libcxx/test/containers/sequences/vector/vector.modifiers/emplace.pass.cpp @@ -11,6 +11,10 @@ // template iterator emplace(const_iterator pos, Args&&... args); +#if _LIBCPP_DEBUG2 >= 1 +#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) +#endif + #include #include #include "../../../stack_allocator.h" @@ -102,5 +106,13 @@ int main() assert(c.back().geti() == 3); assert(c.back().getd() == 4.5); } +#if _LIBCPP_DEBUG2 >= 1 + { + std::vector c1; + std::vector c2; + std::vector::iterator i = c1.emplace(c2.cbegin(), 2, 3.5); + assert(false); + } +#endif #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES } diff --git a/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp b/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp index 84998b2..9f68aef 100644 --- a/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp +++ b/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_iter_iter.pass.cpp @@ -12,6 +12,10 @@ // template // iterator insert(const_iterator position, Iter first, Iter last); +#if _LIBCPP_DEBUG2 >= 1 +#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) +#endif + #include #include #include "../../../stack_allocator.h" @@ -83,4 +87,15 @@ int main() for (; j < 105; ++j) assert(v[j] == 0); } +#if _LIBCPP_DEBUG2 >= 1 + { + std::vector v(100); + std::vector v2(100); + int a[] = {1, 2, 3, 4, 5}; + const int N = sizeof(a)/sizeof(a[0]); + std::vector::iterator i = v.insert(v2.cbegin() + 10, input_iterator(a), + input_iterator(a+N)); + assert(false); + } +#endif } diff --git a/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_rvalue.pass.cpp b/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_rvalue.pass.cpp index aeef615..e34dc36 100644 --- a/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_rvalue.pass.cpp +++ b/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_rvalue.pass.cpp @@ -11,6 +11,10 @@ // iterator insert(const_iterator position, value_type&& x); +#if _LIBCPP_DEBUG2 >= 1 +#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) +#endif + #include #include #include "../../../stack_allocator.h" @@ -43,5 +47,13 @@ int main() for (++j; j < 101; ++j) assert(v[j] == MoveOnly()); } +#if _LIBCPP_DEBUG2 >= 1 + { + std::vector v1(3); + std::vector v2(3); + v1.insert(v2.begin(), 4); + assert(false); + } +#endif #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES } diff --git a/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_size_value.pass.cpp b/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_size_value.pass.cpp index b355d20..ed94057 100644 --- a/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_size_value.pass.cpp +++ b/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_size_value.pass.cpp @@ -11,6 +11,10 @@ // iterator insert(const_iterator position, size_type n, const value_type& x); +#if _LIBCPP_DEBUG2 >= 1 +#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) +#endif + #include #include #include "../../../stack_allocator.h" @@ -43,4 +47,12 @@ int main() for (++j; j < 105; ++j) assert(v[j] == 0); } +#if _LIBCPP_DEBUG2 >= 1 + { + std::vector c1(100); + std::vector c2; + std::vector::iterator i = c1.insert(c2.cbegin() + 10, 5, 1); + assert(false); + } +#endif } diff --git a/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_value.pass.cpp b/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_value.pass.cpp index 20ec42d..5bc87fd 100644 --- a/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_value.pass.cpp +++ b/libcxx/test/containers/sequences/vector/vector.modifiers/insert_iter_value.pass.cpp @@ -11,6 +11,10 @@ // iterator insert(const_iterator position, const value_type& x); +#if _LIBCPP_DEBUG2 >= 1 +#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) +#endif + #include #include #include "../../../stack_allocator.h" @@ -41,4 +45,13 @@ int main() for (++j; j < 101; ++j) assert(v[j] == 0); } +#if _LIBCPP_DEBUG2 >= 1 + { + std::vector v1(3); + std::vector v2(3); + int i = 4; + v1.insert(v2.begin(), i); + assert(false); + } +#endif } diff --git a/libcxx/test/containers/sequences/vector/vector.special/db_swap_1.pass.cpp b/libcxx/test/containers/sequences/vector/vector.special/db_swap_1.pass.cpp new file mode 100644 index 0000000..e0ae808 --- /dev/null +++ b/libcxx/test/containers/sequences/vector/vector.special/db_swap_1.pass.cpp @@ -0,0 +1,39 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// + +// template +// void swap(vector& x, vector& y); + +#if _LIBCPP_DEBUG2 >= 1 +#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) +#endif + +#include +#include + +int main() +{ +#if _LIBCPP_DEBUG2 >= 1 + { + int a1[] = {1, 3, 7, 9, 10}; + int a2[] = {0, 2, 4, 5, 6, 8, 11}; + std::vector c1(a1, a1+sizeof(a1)/sizeof(a1[0])); + std::vector c2(a2, a2+sizeof(a2)/sizeof(a2[0])); + std::vector::iterator i1 = c1.begin(); + std::vector::iterator i2 = c2.begin(); + swap(c1, c2); + c1.erase(i2); + c2.erase(i1); + c1.erase(i1); + assert(false); + } +#endif +} -- 2.7.4