1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <vector> 2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <algorithm> 3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <string> 4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS) 5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# include <slist> 6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <list> 8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <deque> 9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <set> 10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) 11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# include <unordered_set> 12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include "mvctor_test.h" 15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottusing namespace std; 18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (STLPORT) 19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottusing namespace std::tr1; 20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick ScottCPPUNIT_TEST_SUITE_REGISTRATION(MoveConstructorTest); 24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// 26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// tests implementation 27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// 28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid MoveConstructorTest::move_construct_test() 29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //cout << "vector<vector<int>>"; 31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<int> const ref_vec(10, 0); 32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> > v_v_ints(1, ref_vec); 33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int *pint = &(v_v_ints.front().front()); 36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_t cur_capacity = v_v_ints.capacity(); 39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott while (v_v_ints.capacity() <= cur_capacity) { 40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott v_v_ints.push_back(ref_vec); 41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //v_v_ints has been resized 44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT((pint == &v_v_ints.front().front())); 46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //cout << "vector<vector<int>>::erase"; 49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //We need at least 3 elements: 50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott while (v_v_ints.size() < 3) { 51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott v_v_ints.push_back(ref_vec); 52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //We erase the 2nd 55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pint = &v_v_ints[2].front(); 57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott v_v_ints.erase(v_v_ints.begin() + 1); 59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT((pint == &v_v_ints[1].front())); 61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //cout << "vector<string>"; 64e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott string const ref_str("ref string, big enough to be a dynamic one"); 65e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<string> vec_strs(1, ref_str); 66e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 67e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char const* pstr = vec_strs.front().c_str(); 69e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 70e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cur_capacity = vec_strs.capacity(); 71e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott while (vec_strs.capacity() <= cur_capacity) { 72e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vec_strs.push_back(ref_str); 73e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //vec_str has been resized 76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT((pstr == vec_strs.front().c_str())); 78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 79e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 80e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //cout << "vector<string>::erase"; 81e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //We need at least 3 elements: 82e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott while (vec_strs.size() < 3) { 83e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vec_strs.push_back(ref_str); 84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 85e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 86e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //We erase the 2nd 87e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 88e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott pstr = vec_strs[2].c_str(); 89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 90e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vec_strs.erase(vec_strs.begin() + 1); 91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT((pstr == vec_strs[1].c_str())); 93e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 94e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 95e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //cout << "swap(vector<int>, vector<int>)"; 96e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<int> elem1(10, 0), elem2(10, 0); 97e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 98e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int *p1 = &elem1.front(); 99e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int *p2 = &elem2.front(); 100e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 101e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott swap(elem1, elem2); 102e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 103e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(((p1 == &elem2.front()) && (p2 == &elem1.front()))); 104e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 105e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 106e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 107e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<bool> bit_vec(5, true); 108e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bit_vec.insert(bit_vec.end(), 5, false); 109e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<bool> > v_v_bits(1, bit_vec); 110e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 111e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott /* 112e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * This is a STLport specific test as we are using internal implementation 113e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * details to check that the move has been correctly handled. For other 114e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * STL implementation it is only a compile check. 115e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 116e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 117e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (_STLP_DEBUG) 118e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott unsigned int *punit = v_v_bits.front().begin()._M_iterator._M_p; 119e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# else 120e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott unsigned int *punit = v_v_bits.front().begin()._M_p; 121e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 122e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 123e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 124e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott cur_capacity = v_v_bits.capacity(); 125e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott while (v_v_bits.capacity() <= cur_capacity) { 126e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott v_v_bits.push_back(bit_vec); 127e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 128e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 129e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 130e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //v_v_bits has been resized 131e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (_STLP_DEBUG) 132e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( punit == v_v_bits.front().begin()._M_iterator._M_p ); 133e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# else 134e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( punit == v_v_bits.front().begin()._M_p ); 135e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 136e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 137e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 138e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 139e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // zero: don't like this kind of tests 140e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // because of template test function 141e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // we should find another way to provide 142e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // move constructor testing... 143e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 144e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 145e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott standard_test1(list<int>(10)); 146e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 147e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 148e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott standard_test1(slist<int>(10)); 149e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 150e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott standard_test1(deque<int>(10)); 151e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott*/ 152e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 153e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott /* 154e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int int_values[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 155e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 156e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott set<int> int_set(int_values, int_values + sizeof(in_values) / sizeof(int)); 157e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott standard_test1(int_set); 158e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 159e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott multiset<int> int_multiset(int_values, int_values + sizeof(in_values) / sizeof(int)); 160e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott standard_test1(int_multiset); 161e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 162e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 163e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott /* 164e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CheckFullMoveSupport(string()); 165e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CheckFullMoveSupport(vector<int>()); 166e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CheckFullMoveSupport(deque<int>()); 167e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CheckFullMoveSupport(list<int>()); 168e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CheckFullMoveSupport(slist<int>()); 169e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 170e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 171e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 172e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid MoveConstructorTest::deque_test() 173e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 174e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //Check the insert range method. 175e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //To the front: 176e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 177e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if !defined (STLPORT) || !defined (_STLP_DEBUG) || !defined (_STLP_NO_MEMBER_TEMPLATES) 178e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> > vect_deque; 179e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<int*> bufs; 180e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_deque.assign(3, vector<int>(10)); 181e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vect_deque[0].front()); 182e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vect_deque[1].front()); 183e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vect_deque[2].front()); 184e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 185e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int nb_insert = 5; 186e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //Initialize to 1 to generate a front insertion: 187e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int pos = 1; 188e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott while (nb_insert--) { 189e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> > vect_vect(2, vector<int>(10)); 190e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_deque.insert(vect_deque.begin() + pos, vect_vect.begin(), vect_vect.end()); 191e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.begin() + pos, &vect_deque[pos].front()); 192e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.begin() + pos + 1, &vect_deque[pos + 1].front()); 193e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ++pos; 194e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 195e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_deque.size() == 13 ); 196e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 197e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (int i = 0; i < 5; ++i) { 198e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &vect_deque[i].front() ); 199e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[11 - i] == &vect_deque[11 - i].front() ); 200e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 201e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 202e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 203e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 204e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 205e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //To the back 206e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 207e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if !defined (STLPORT) || !defined (_STLP_DEBUG) || !defined (_STLP_NO_MEMBER_TEMPLATES) 208e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> > vect_deque; 209e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<int*> bufs; 210e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_deque.assign(3, vector<int>(10)); 211e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vect_deque[0].front()); 212e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vect_deque[1].front()); 213e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vect_deque[2].front()); 214e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 215e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int nb_insert = 5; 216e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //Initialize to 2 to generate a back insertion: 217e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int pos = 2; 218e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott while (nb_insert--) { 219e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> > vect_vect(2, vector<int>(10)); 220e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_deque.insert(vect_deque.begin() + pos, vect_vect.begin(), vect_vect.end()); 221e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.begin() + pos, &vect_deque[pos].front()); 222e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.begin() + pos + 1, &vect_deque[pos + 1].front()); 223e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ++pos; 224e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 225e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_deque.size() == 13 ); 226e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 227e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (int i = 0; i < 5; ++i) { 228e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i + 1] == &vect_deque[i + 1].front() ); 229e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[12 - i] == &vect_deque[12 - i].front() ); 230e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 231e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 232e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 233e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 234e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 235e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //Check the different erase methods. 236e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 237e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> > vect_deque; 238e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_deque.assign(20, vector<int>(10)); 239e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator vdit(vect_deque.begin()), vditEnd(vect_deque.end()); 240e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<int*> bufs; 241e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; vdit != vditEnd; ++vdit) { 242e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vdit->front()); 243e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 244e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 245e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 246e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // This check, repeated after each operation, check the deque consistency: 247e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator it = vect_deque.end() - 5; 248e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int nb_incr = 0; 249e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; it != vect_deque.end() && nb_incr <= 6; ++nb_incr, ++it) {} 250e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( nb_incr == 5 ); 251e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 252e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 253e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 254e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //erase in front: 255e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_deque.erase(vect_deque.begin() + 2); 256e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.erase(bufs.begin() + 2); 257e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_deque.size() == 19 ); 258e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator dit(vect_deque.begin()), ditEnd(vect_deque.end()); 259e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 260e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 261e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 262e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 263e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 264e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 265e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 266e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 267e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator it = vect_deque.end() - 5; 268e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int nb_incr = 0; 269e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; it != vect_deque.end() && nb_incr <= 6; ++nb_incr, ++it) {} 270e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( nb_incr == 5 ); 271e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 272e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 273e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 274e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //erase in the back: 275e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_deque.erase(vect_deque.end() - 2); 276e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.erase(bufs.end() - 2); 277e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_deque.size() == 18 ); 278e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator dit(vect_deque.begin()), ditEnd(vect_deque.end()); 279e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 280e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 281e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 282e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 283e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 284e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 285e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 286e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 287e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator it = vect_deque.end() - 5; 288e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int nb_incr = 0; 289e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; it != vect_deque.end() && nb_incr < 6; ++nb_incr, ++it) {} 290e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( nb_incr == 5 ); 291e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 292e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 293e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 294e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //range erase in front 295e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_deque.erase(vect_deque.begin() + 3, vect_deque.begin() + 5); 296e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.erase(bufs.begin() + 3, bufs.begin() + 5); 297e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_deque.size() == 16 ); 298e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator dit(vect_deque.begin()), ditEnd(vect_deque.end()); 299e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 300e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 301e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 302e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 303e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 304e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 305e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 306e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 307e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator it = vect_deque.end() - 5; 308e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int nb_incr = 0; 309e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; it != vect_deque.end() && nb_incr <= 6; ++nb_incr, ++it) {} 310e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( nb_incr == 5 ); 311e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 312e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 313e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 314e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //range erase in back 315e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_deque.erase(vect_deque.end() - 5, vect_deque.end() - 3); 316e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.erase(bufs.end() - 5, bufs.end() - 3); 317e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_deque.size() == 14 ); 318e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator dit(vect_deque.begin()), ditEnd(vect_deque.end()); 319e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 320e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 321e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 322e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 323e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 324e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 325e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 326e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 327e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //Check the insert value(s) 328e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 329e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> > vect_deque; 330e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_deque.assign(20, vector<int>(10)); 331e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator vdit(vect_deque.begin()), vditEnd(vect_deque.end()); 332e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<int*> bufs; 333e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; vdit != vditEnd; ++vdit) { 334e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vdit->front()); 335e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 336e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 337e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 338e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //2 values in front: 339e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_deque.insert(vect_deque.begin() + 2, 2, vector<int>(10)); 340e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.begin() + 2, &vect_deque[2].front()); 341e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.begin() + 3, &vect_deque[3].front()); 342e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_deque.size() == 22 ); 343e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator dit(vect_deque.begin()), ditEnd(vect_deque.end()); 344e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 345e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 346e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 347e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 348e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 349e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 350e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 351e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 352e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //2 values in back: 353e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_deque.insert(vect_deque.end() - 2, 2, vector<int>(10)); 354e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.end() - 2, &vect_deque[20].front()); 355e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.end() - 2, &vect_deque[21].front()); 356e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_deque.size() == 24 ); 357e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 358e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator dit(vect_deque.begin()), ditEnd(vect_deque.end()); 359e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 360e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 361e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 362e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 363e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 364e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 365e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 366e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //1 value in front: 367e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator ret; 368e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ret = vect_deque.insert(vect_deque.begin() + 2, vector<int>(10)); 369e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.begin() + 2, &vect_deque[2].front()); 370e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_deque.size() == 25 ); 371e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 372e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( &ret->front() == bufs[2] ); 373e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator dit(vect_deque.begin()), ditEnd(vect_deque.end()); 374e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 375e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 376e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 377e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 378e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 379e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 380e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 381e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //1 value in back: 382e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator ret; 383e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ret = vect_deque.insert(vect_deque.end() - 2, vector<int>(10)); 384e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.end() - 2, &vect_deque[23].front()); 385e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_deque.size() == 26 ); 386e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 387e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( &ret->front() == bufs[23] ); 388e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<vector<int> >::iterator dit(vect_deque.begin()), ditEnd(vect_deque.end()); 389e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 390e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 391e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 392e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 393e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 394e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 395e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 396e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 397e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid MoveConstructorTest::vector_test() 398e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 399e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //Check the insert range method. 400e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //To the front: 401e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 402e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> > vect_vector; 403e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<int*> bufs; 404e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_vector.assign(3, vector<int>(10)); 405e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vect_vector[0].front()); 406e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vect_vector[1].front()); 407e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vect_vector[2].front()); 408e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 409e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int nb_insert = 5; 410e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int pos = 1; 411e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott while (nb_insert--) { 412e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> > vect_vect(2, vector<int>(10)); 413e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_vector.insert(vect_vector.begin() + pos, vect_vect.begin(), vect_vect.end()); 414e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.begin() + pos, &vect_vector[pos].front()); 415e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.begin() + pos + 1, &vect_vector[pos + 1].front()); 416e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ++pos; 417e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 418e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_vector.size() == 13 ); 419e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 420e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (int i = 0; i < 5; ++i) { 421e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &vect_vector[i].front() ); 422e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[11 - i] == &vect_vector[11 - i].front() ); 423e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 424e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 425e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 426e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 427e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //To the back 428e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 429e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> > vect_vector; 430e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<int*> bufs; 431e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_vector.assign(3, vector<int>(10)); 432e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vect_vector[0].front()); 433e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vect_vector[1].front()); 434e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vect_vector[2].front()); 435e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 436e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int nb_insert = 5; 437e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //Initialize to 2 to generate a back insertion: 438e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int pos = 2; 439e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott while (nb_insert--) { 440e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> > vect_vect(2, vector<int>(10)); 441e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_vector.insert(vect_vector.begin() + pos, vect_vect.begin(), vect_vect.end()); 442e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.begin() + pos, &vect_vector[pos].front()); 443e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.begin() + pos + 1, &vect_vector[pos + 1].front()); 444e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ++pos; 445e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 446e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_vector.size() == 13 ); 447e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 448e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (int i = 0; i < 5; ++i) { 449e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i + 1] == &vect_vector[i + 1].front() ); 450e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[12 - i] == &vect_vector[12 - i].front() ); 451e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 452e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 453e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 454e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 455e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //Check the different erase methods. 456e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 457e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> > vect_vector; 458e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_vector.assign(20, vector<int>(10)); 459e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator vdit(vect_vector.begin()), vditEnd(vect_vector.end()); 460e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<int*> bufs; 461e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; vdit != vditEnd; ++vdit) { 462e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vdit->front()); 463e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 464e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 465e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 466e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // This check, repeated after each operation, check the vector consistency: 467e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator it = vect_vector.end() - 5; 468e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int nb_incr = 0; 469e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; it != vect_vector.end() && nb_incr <= 6; ++nb_incr, ++it) {} 470e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( nb_incr == 5 ); 471e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 472e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 473e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 474e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //erase in front: 475e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_vector.erase(vect_vector.begin() + 2); 476e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.erase(bufs.begin() + 2); 477e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_vector.size() == 19 ); 478e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 479e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator dit(vect_vector.begin()), ditEnd(vect_vector.end()); 480e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 481e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 482e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 483e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 484e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 485e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 486e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 487e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator it = vect_vector.end() - 5; 488e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int nb_incr = 0; 489e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; it != vect_vector.end() && nb_incr <= 6; ++nb_incr, ++it) {} 490e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( nb_incr == 5 ); 491e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 492e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 493e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 494e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //erase in the back: 495e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_vector.erase(vect_vector.end() - 2); 496e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.erase(bufs.end() - 2); 497e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_vector.size() == 18 ); 498e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 499e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator dit(vect_vector.begin()), ditEnd(vect_vector.end()); 500e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 501e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 502e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 503e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 504e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 505e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 506e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 507e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator it = vect_vector.end() - 5; 508e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int nb_incr = 0; 509e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; it != vect_vector.end() && nb_incr < 6; ++nb_incr, ++it) {} 510e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( nb_incr == 5 ); 511e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 512e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 513e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 514e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //range erase in front 515e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_vector.erase(vect_vector.begin() + 3, vect_vector.begin() + 5); 516e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.erase(bufs.begin() + 3, bufs.begin() + 5); 517e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_vector.size() == 16 ); 518e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 519e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator dit(vect_vector.begin()), ditEnd(vect_vector.end()); 520e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 521e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 522e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 523e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 524e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 525e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 526e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 527e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator it = vect_vector.end() - 5; 528e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int nb_incr = 0; 529e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; it != vect_vector.end() && nb_incr <= 6; ++nb_incr, ++it) {} 530e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( nb_incr == 5 ); 531e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 532e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 533e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 534e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //range erase in back 535e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_vector.erase(vect_vector.end() - 5, vect_vector.end() - 3); 536e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.erase(bufs.end() - 5, bufs.end() - 3); 537e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_vector.size() == 14 ); 538e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 539e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator dit(vect_vector.begin()), ditEnd(vect_vector.end()); 540e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 541e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 542e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 543e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 544e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 545e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 546e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 547e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //Check the insert value(s) 548e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 549e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> > vect_vector; 550e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_vector.assign(20, vector<int>(10)); 551e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator vdit(vect_vector.begin()), vditEnd(vect_vector.end()); 552e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<int*> bufs; 553e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; vdit != vditEnd; ++vdit) { 554e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.push_back(&vdit->front()); 555e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 556e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 557e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 558e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //2 values in front: 559e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_vector.insert(vect_vector.begin() + 2, 2, vector<int>(10)); 560e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.begin() + 2, &vect_vector[2].front()); 561e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.begin() + 3, &vect_vector[3].front()); 562e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_vector.size() == 22 ); 563e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 564e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator dit(vect_vector.begin()), ditEnd(vect_vector.end()); 565e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 566e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 567e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 568e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 569e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 570e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 571e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 572e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //2 values in back: 573e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_vector.insert(vect_vector.end() - 2, 2, vector<int>(10)); 574e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.end() - 2, &vect_vector[20].front()); 575e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.end() - 2, &vect_vector[21].front()); 576e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_vector.size() == 24 ); 577e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 578e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator dit(vect_vector.begin()), ditEnd(vect_vector.end()); 579e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 580e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 581e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 582e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 583e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 584e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 585e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 586e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //1 value in front: 587e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 588e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator ret = 589e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 590e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_vector.insert(vect_vector.begin() + 2, vector<int>(10)); 591e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.begin() + 2, &vect_vector[2].front()); 592e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_vector.size() == 25 ); 593e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 594e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( &ret->front() == bufs[2] ); 595e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator dit(vect_vector.begin()), ditEnd(vect_vector.end()); 596e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 597e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 598e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 599e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 600e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 601e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 602e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 603e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //1 value in back: 604e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 605e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator ret = 606e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 607e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect_vector.insert(vect_vector.end() - 2, vector<int>(10)); 608e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bufs.insert(bufs.end() - 2, &vect_vector[23].front()); 609e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( vect_vector.size() == 26 ); 610e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_MOVE_SEMANTIC) 611e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( &ret->front() == bufs[23] ); 612e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<int> >::iterator dit(vect_vector.begin()), ditEnd(vect_vector.end()); 613e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; dit != ditEnd; ++dit, ++i) { 614e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( bufs[i] == &dit->front() ); 615e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 616e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 617e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 618e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 619e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 620e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //The following tests are checking move contructor implementations: 621e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const string long_str("long enough string to force dynamic allocation"); 622e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 623e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //vector move contructor: 624e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<string> > vect(10, vector<string>(10, long_str)); 625e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<string> strs; 626e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_t index = 0; 627e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (;;) { 628e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<vector<string> >::iterator it(vect.begin()); 629e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott advance(it, index % vect.size()); 630e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott strs.push_back(it->front()); 631e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott it->erase(it->begin()); 632e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (it->empty()) { 633e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect.erase(it); 634e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (vect.empty()) 635e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott break; 636e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 637e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott index += 3; 638e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 639e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( strs.size() == 10 * 10 ); 640e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<string>::iterator it(strs.begin()), itEnd(strs.end()); 641e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; it != itEnd; ++it) { 642e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( *it == long_str ); 643e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 644e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 645e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 646e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 647e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //deque move contructor: 648e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if !defined (__DMC__) 649e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<deque<string> > vect(10, deque<string>(10, long_str)); 650e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# else 651e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque<string> deq_str = deque<string>(10, long_str); 652e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<deque<string> > vect(10, deq_str); 653e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 654e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<string> strs; 655e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_t index = 0; 656e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (;;) { 657e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<deque<string> >::iterator it(vect.begin()); 658e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott advance(it, index % vect.size()); 659e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott strs.push_back(it->front()); 660e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott it->pop_front(); 661e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (it->empty()) { 662e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect.erase(it); 663e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (vect.empty()) 664e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott break; 665e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 666e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott index += 3; 667e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 668e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( strs.size() == 10 * 10 ); 669e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<string>::iterator it(strs.begin()), itEnd(strs.end()); 670e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; it != itEnd; ++it) { 671e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( *it == long_str ); 672e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 673e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 674e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 675e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 676e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //list move contructor: 677e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<list<string> > vect(10, list<string>(10, long_str)); 678e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<string> strs; 679e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_t index = 0; 680e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (;;) { 681e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<list<string> >::iterator it(vect.begin()); 682e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott advance(it, index % vect.size()); 683e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott strs.push_back(it->front()); 684e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott it->pop_front(); 685e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (it->empty()) { 686e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect.erase(it); 687e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (vect.empty()) 688e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott break; 689e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 690e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott index += 3; 691e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 692e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( strs.size() == 10 * 10 ); 693e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<string>::iterator it(strs.begin()), itEnd(strs.end()); 694e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; it != itEnd; ++it) { 695e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( *it == long_str ); 696e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 697e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 698e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 699e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS) 700e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 701e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //slist move contructor: 702e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<slist<string> > vect(10, slist<string>(10, long_str)); 703e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<string> strs; 704e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_t index = 0; 705e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott while (true) { 706e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<slist<string> >::iterator it(vect.begin()); 707e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott advance(it, index % vect.size()); 708e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott strs.push_back(it->front()); 709e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott it->pop_front(); 710e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (it->empty()) { 711e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect.erase(it); 712e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (vect.empty()) 713e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott break; 714e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 715e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott index += 3; 716e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 717e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( strs.size() == 10 * 10 ); 718e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<string>::iterator it(strs.begin()), itEnd(strs.end()); 719e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; it != itEnd; ++it) { 720e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( *it == long_str ); 721e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 722e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 723e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 724e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 725e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 726e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //binary tree move contructor: 727e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott multiset<string> ref; 728e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; i < 10; ++i) { 729e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref.insert(long_str); 730e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 731e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<multiset<string> > vect(10, ref); 732e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<string> strs; 733e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_t index = 0; 734e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (;;) { 735e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<multiset<string> >::iterator it(vect.begin()); 736e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott advance(it, index % vect.size()); 737e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott strs.push_back(*it->begin()); 738e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott it->erase(it->begin()); 739e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (it->empty()) { 740e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect.erase(it); 741e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (vect.empty()) 742e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott break; 743e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 744e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott index += 3; 745e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 746e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( strs.size() == 10 * 10 ); 747e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<string>::iterator it(strs.begin()), itEnd(strs.end()); 748e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; it != itEnd; ++it) { 749e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( *it == long_str ); 750e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 751e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 752e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 753e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) 754e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if !defined (__DMC__) 755e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 756e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //hash container move contructor: 757e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott unordered_multiset<string> ref; 758e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; i < 10; ++i) { 759e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref.insert(long_str); 760e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 761e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<unordered_multiset<string> > vect(10, ref); 762e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<string> strs; 763e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_t index = 0; 764e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott while (true) { 765e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<unordered_multiset<string> >::iterator it(vect.begin()); 766e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott advance(it, index % vect.size()); 767e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott strs.push_back(*it->begin()); 768e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott it->erase(it->begin()); 769e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (it->empty()) { 770e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vect.erase(it); 771e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (vect.empty()) 772e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott break; 773e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 774e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott index += 3; 775e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 776e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( strs.size() == 10 * 10 ); 777e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<string>::iterator it(strs.begin()), itEnd(strs.end()); 778e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (; it != itEnd; ++it) { 779e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( *it == long_str ); 780e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 781e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 782e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 783e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 784e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 785e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 786e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (__BORLANDC__) 787e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* Specific Borland test case to show a really weird compiler behavior. 788e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 789e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass Standalone 790e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 791e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottpublic: 792e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //Uncomment following to pass the test 793e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //Standalone() {} 794e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ~Standalone() {} 795e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 796e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott MovableStruct movableStruct; 797e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector<int> intVector; 798e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 799e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 800e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid MoveConstructorTest::nb_destructor_calls() 801e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 802e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott MovableStruct::reset(); 803e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 804e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott try 805e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 806e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Standalone standalone; 807e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott throw "some exception"; 808e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott MovableStruct movableStruct; 809e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 810e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (const char*) 811e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 812e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( MovableStruct::nb_dft_construct_call == 1 ); 813e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( MovableStruct::nb_destruct_call == 1 ); 814e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 815e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 816e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 817