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