Index: gcc/libstdc++-v3/testsuite/23_containers/vector/cons/4.cc |
diff --git a/gcc/libstdc++-v3/testsuite/23_containers/vector/cons/4.cc b/gcc/libstdc++-v3/testsuite/23_containers/vector/cons/4.cc |
deleted file mode 100644 |
index 0c3dcf3b4692569181937f4cc0c25db9ebeba976..0000000000000000000000000000000000000000 |
--- a/gcc/libstdc++-v3/testsuite/23_containers/vector/cons/4.cc |
+++ /dev/null |
@@ -1,583 +0,0 @@ |
-// 1999-06-29 bkoz |
- |
-// Copyright (C) 1999-2001, 2002, 2003, 2009 Free Software Foundation, Inc. |
-// |
-// This file is part of the GNU ISO C++ Library. This library is free |
-// software; you can redistribute it and/or modify it under the |
-// terms of the GNU General Public License as published by the |
-// Free Software Foundation; either version 3, or (at your option) |
-// any later version. |
- |
-// This library is distributed in the hope that it will be useful, |
-// but WITHOUT ANY WARRANTY; without even the implied warranty of |
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-// GNU General Public License for more details. |
- |
-// You should have received a copy of the GNU General Public License along |
-// with this library; see the file COPYING3. If not see |
-// <http://www.gnu.org/licenses/>. |
- |
-// 23.2.4.1 vector constructors, copy, and assignment |
- |
-#include <vector> |
-#include <string> |
-#include <testsuite_allocator.h> |
-#include <testsuite_hooks.h> |
- |
-using __gnu_test::copy_tracker; |
-using __gnu_test::tracker_allocator_counter; |
-using __gnu_test::tracker_allocator; |
-using __gnu_test::copy_constructor; |
-using __gnu_test::assignment_operator; |
- |
-// @fn test_default_ctor_exception_gurantee This test verifies that if |
-// one of the vector's contained objects throws an exception from its |
-// constructor while the vector is being constructed and filled with |
-// default values, all memory is returned to the allocator whence it |
-// came. |
-void |
-test_default_ctor_exception_gurantee() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- copy_tracker::reset(); |
- copy_constructor::throw_on(3); |
- tracker_allocator_counter::reset(); |
- |
- // run test |
- try |
- { |
- X a(7); |
- VERIFY(false); |
- } |
- catch (...) |
- { |
- } |
- |
- // assert postconditions |
- VERIFY( tracker_allocator_counter::get_allocation_count() == tracker_allocator_counter::get_deallocation_count() ); |
- |
- // teardown |
-} |
- |
-// @fn test_copy_ctor_exception_gurantee This test verifies that if |
-// one of the vector's contained objects throws an exception from its |
-// constructor while the vector is being copy constructed, all memory |
-// is returned to the allocator whence it came. |
-void |
-test_copy_ctor_exception_gurantee() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- tracker_allocator_counter::reset(); |
- { |
- X a(7); |
- copy_tracker::reset(); |
- copy_constructor::throw_on(3); |
- |
- // run test |
- try |
- { |
- X u(a); |
- VERIFY(false); |
- } |
- catch (...) |
- { |
- } |
- } |
- |
- // assert postconditions |
- VERIFY(tracker_allocator_counter::get_allocation_count() == tracker_allocator_counter::get_deallocation_count()); |
- |
- // teardown |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
-} |
- |
-// operator=() |
-// |
-// case 1: lhs.size() > rhs.size() |
-// case 2: lhs.size() < rhs.size() < lhs.capacity() |
-// case 3: lhs.capacity() < rhs.size() |
-// |
-void |
-test_assignment_operator_1() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- X r(9); |
- X a(r.size() - 2); |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
- |
- // preconditions |
- VERIFY(r.size() > a.size()); |
- |
- // run test |
- r = a; |
- |
- // assert postconditions |
- VERIFY(r == a); |
- VERIFY(tracker_allocator_counter::get_allocation_count() == 0); |
- |
- // teardown |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
-} |
- |
-void |
-test_assignment_operator_2() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- X r(1); |
- r.reserve(17); |
- X a(r.size() + 7); |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
- |
- // preconditions |
- VERIFY(r.size() < a.size()); |
- VERIFY(a.size() < r.capacity()); |
- |
- // run test |
- r = a; |
- |
- // assert postconditions |
- VERIFY(r == a); |
- VERIFY(tracker_allocator_counter::get_allocation_count() == 0); |
- |
- // teardown |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
-} |
- |
-void |
-test_assignment_operator_3() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- tracker_allocator_counter::reset(); |
- { |
- X r(1); |
- X a(r.capacity() + 7); |
- copy_tracker::reset(); |
- |
- // preconditions |
- VERIFY(r.capacity() < a.size()); |
- |
- // run test |
- r = a; |
- |
- // assert postconditions |
- VERIFY(r == a); |
- } |
- VERIFY(tracker_allocator_counter::get_allocation_count() == tracker_allocator_counter::get_deallocation_count()); |
- |
- // teardown |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
-} |
- |
-void |
-test_assignment_operator_3_exception_guarantee() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- tracker_allocator_counter::reset(); |
- { |
- X r(1); |
- X a(r.capacity() + 7); |
- copy_tracker::reset(); |
- copy_constructor::throw_on(3); |
- |
- // preconditions |
- VERIFY(r.capacity() < a.size()); |
- |
- // run test |
- try |
- { |
- r = a; |
- VERIFY(false); |
- } |
- catch (...) |
- { |
- } |
- } |
- |
- // assert postconditions |
- VERIFY(tracker_allocator_counter::get_allocation_count() == tracker_allocator_counter::get_deallocation_count()); |
- |
- // teardown |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
-} |
- |
-// fill assign() |
-// |
-// case 1: [23.2.4.1 (3)] n <= size() |
-// case 2: [23.2.4.1 (3)] size() < n <= capacity() |
-// case 3: [23.2.4.1 (3)] n > capacity() |
-// case 4: [23.2.4.1 (3)] n > capacity(), exception guarantees |
-// case 5: [23.1.1 (9)] fill assign disguised as a range assign |
-// |
-void |
-test_fill_assign_1() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- X a(7); |
- X::size_type old_size = a.size(); |
- X::size_type new_size = old_size - 2; |
- const T t; |
- |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
- |
- // run test |
- a.assign(new_size, t); |
- |
- // assert postconditions |
- VERIFY(a.size() == new_size); |
- VERIFY(tracker_allocator_counter::get_allocation_count() == 0); |
- |
- // teardown |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
-} |
- |
-void |
-test_fill_assign_2() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- X a(7); |
- a.reserve(11); |
- X::size_type old_size = a.size(); |
- X::size_type old_capacity = a.capacity(); |
- X::size_type new_size = old_size + 2; |
- const T t; |
- |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
- |
- // assert preconditions |
- VERIFY(old_size < new_size); |
- VERIFY(new_size <= old_capacity); |
- |
- // run test |
- a.assign(new_size, t); |
- |
- // assert postconditions |
- VERIFY(a.size() == new_size); |
- VERIFY(tracker_allocator_counter::get_allocation_count() == 0); |
- |
- // teardown |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
-} |
- |
-void |
-test_fill_assign_3() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- tracker_allocator_counter::reset(); |
- { |
- X a(7); |
- X::size_type old_capacity = a.capacity(); |
- X::size_type new_size = old_capacity + 4; |
- const T t; |
- |
- copy_tracker::reset(); |
- |
- // assert preconditions |
- VERIFY(new_size > old_capacity); |
- |
- // run test |
- a.assign(new_size, t); |
- |
- // assert postconditions |
- VERIFY(a.size() == new_size); |
- } |
- |
- VERIFY(tracker_allocator_counter::get_allocation_count() > 0); |
- VERIFY(tracker_allocator_counter::get_allocation_count() == tracker_allocator_counter::get_deallocation_count()); |
- |
- // teardown |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
-} |
- |
-void |
-test_fill_assign_3_exception_guarantee() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- tracker_allocator_counter::reset(); |
- { |
- X a(7); |
- X::size_type old_size = a.size(); |
- X::size_type old_capacity = a.capacity(); |
- X::size_type new_size = old_capacity + 4; |
- const T t; |
- |
- copy_tracker::reset(); |
- copy_constructor::throw_on(3); |
- |
- // assert preconditions |
- VERIFY(new_size > old_capacity); |
- |
- // run test |
- try |
- { |
- a.assign(new_size, t); |
- VERIFY(false); |
- } |
- catch (...) |
- { |
- } |
- |
- // assert postconditions |
- VERIFY(a.size() == old_size); |
- VERIFY(a.capacity() == old_capacity); |
- } |
- |
- VERIFY(tracker_allocator_counter::get_allocation_count() > 0); |
- VERIFY(tracker_allocator_counter::get_allocation_count() == tracker_allocator_counter::get_deallocation_count()); |
- |
- // teardown |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
-} |
- |
-void |
-test_fill_assign_4() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- X a(7); |
- X::size_type old_size = a.size(); |
- X::size_type new_size = old_size - 2; |
- X::size_type new_value = 117; |
- |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
- |
- // run test |
- a.assign(new_size, new_value); |
- |
- // assert postconditions |
- VERIFY(a.size() == new_size); |
- VERIFY(tracker_allocator_counter::get_allocation_count() == 0); |
- |
- // teardown |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
-} |
- |
-// range assign() |
-// |
-// case 1: [23.2.4.1 (2)] input iterator |
-// case 2: [23.2.4.1 (2)] forward iterator, distance(first, last) <= size() |
-// case 3: [23.2.4.1 (2)] |
-// forward iterator, size() < distance(first, last) <= capacity() |
-// case 4: [23.2.4.1 (2)] forward iterator, distance(first, last) > capacity() |
-// case 5: [23.2.4.1 (2)] |
-// forward iterator, distance(first, last) > capacity(), |
-// exception guarantees |
-void |
-test_range_assign_1() |
-{ |
- // @TODO |
-} |
- |
-void |
-test_range_assign_2() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- X a(7); |
- X b(3); |
- |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
- |
- // assert preconditions |
- VERIFY(b.size() < a.capacity()); |
- |
- // run test |
- a.assign(b.begin(), b.end()); |
- |
- // assert postconditions |
- VERIFY(a.size() == b.size()); |
- VERIFY(a == b); |
- VERIFY(tracker_allocator_counter::get_allocation_count() == 0); |
- |
- // teardown |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
-} |
- |
-void |
-test_range_assign_3() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- X a(7); |
- a.reserve(a.size() + 7); |
- X b(a.size() + 3); |
- |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
- |
- // assert preconditions |
- VERIFY(a.size() < b.size()); |
- VERIFY(b.size() < a.capacity()); |
- |
- // run test |
- a.assign(b.begin(), b.end()); |
- |
- // assert postconditions |
- VERIFY(a.size() == b.size()); |
- VERIFY(a == b); |
- VERIFY(tracker_allocator_counter::get_allocation_count() == 0); |
- |
- // teardown |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
-} |
- |
-void |
-test_range_assign_4() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- tracker_allocator_counter::reset(); |
- { |
- X a(7); |
- X b(a.capacity() + 7); |
- |
- copy_tracker::reset(); |
- |
- // assert preconditions |
- VERIFY(b.size() > a.capacity()); |
- |
- // run test |
- a.assign(b.begin(), b.end()); |
- |
- // assert postconditions |
- VERIFY(a.size() == b.size()); |
- VERIFY(a == b); |
- } |
- VERIFY(tracker_allocator_counter::get_allocation_count() > 0); |
- VERIFY(tracker_allocator_counter::get_allocation_count() == tracker_allocator_counter::get_deallocation_count()); |
- |
- // teardown |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
-} |
- |
-void |
-test_range_assign_4_exception_guarantee() |
-{ |
- // setup |
- bool test __attribute__((unused)) = true; |
- typedef copy_tracker T; |
- typedef std::vector<T, tracker_allocator<T> > X; |
- |
- tracker_allocator_counter::reset(); |
- { |
- X a(7); |
- X b(a.capacity() + 7); |
- |
- copy_tracker::reset(); |
- copy_constructor::throw_on(3); |
- |
- // assert preconditions |
- VERIFY(b.size() > a.capacity()); |
- |
- // run test |
- try |
- { |
- a.assign(b.begin(), b.end()); |
- VERIFY(false); |
- } |
- catch (...) |
- { |
- } |
- } |
- |
- // assert postconditions |
- VERIFY(tracker_allocator_counter::get_allocation_count() > 0); |
- VERIFY(tracker_allocator_counter::get_allocation_count() == tracker_allocator_counter::get_deallocation_count()); |
- |
- // teardown |
- copy_tracker::reset(); |
- tracker_allocator_counter::reset(); |
-} |
- |
- |
-int main() |
-{ |
- test_default_ctor_exception_gurantee(); |
- test_copy_ctor_exception_gurantee(); |
- test_assignment_operator_1(); |
- test_assignment_operator_2(); |
- test_assignment_operator_3(); |
- test_assignment_operator_3_exception_guarantee(); |
- test_fill_assign_1(); |
- test_fill_assign_2(); |
- test_fill_assign_3(); |
- test_fill_assign_3_exception_guarantee(); |
- test_fill_assign_4(); |
- test_range_assign_1(); |
- test_range_assign_2(); |
- test_range_assign_3(); |
- test_range_assign_4(); |
- test_range_assign_4_exception_guarantee(); |
- |
- return 0; |
-} |