41typedef std::deque<DequeValueType, DequeAllocator>
DequeType;
64 "Testing std::swap (std::deque&, std::deque&) "
65 "calls std::deque::swap");
69 &std::swap<DequeValueType, DequeAllocator>;
79 "std::swap (std::deque<T, A>&, std::deque<T, A>&) called "
80 "std::deque<T, A>::swap (std::deque<T, A>&) exactly once; "
86typedef std::deque<UserClass, std::allocator<UserClass> >
Deque;
93inline Deque::size_type
113template <
class T,
class Allocator>
115 const T *rhs_seq, std::size_t rhs_seq_len,
116 std::deque<T, Allocator>*,
119 typedef std::deque<T, Allocator>
Deque;
120 typedef typename Deque::iterator
Iterator;
121 typedef typename Deque::size_type SizeType;
124 Deque lhs (lhs_seq, lhs_seq + lhs_seq_len);
125 Deque rhs (rhs_seq, rhs_seq + rhs_seq_len);
131 const SizeType lhs_size_0 =
lhs.size ();
135 const SizeType rhs_size_0 =
rhs.size ();
144 const SizeType lhs_size_1 =
lhs.size ();
148 const SizeType rhs_size_1 =
rhs.size ();
150 static const int cwidth =
sizeof (
T);
154 rw_assert (lhs_begin_0 == rhs_begin_1 && lhs_begin_1 == rhs_begin_0,
156 "begin() not swapped for \"%{X=*.*}\" and \"%{X=*.*}\"",
157 cwidth,
int (lhs_seq_len), -1, lhs_seq,
158 cwidth,
int (rhs_seq_len), -1, rhs_seq);
160 rw_assert (lhs_end_0 == rhs_end_1 && lhs_end_1 == rhs_end_0,
162 "end() not swapped for \"%{X=*.*}\" and \"%{X=*.*}\"",
163 cwidth,
int (lhs_seq_len), -1, lhs_seq,
164 cwidth,
int (rhs_seq_len), -1, rhs_seq);
166 rw_assert (lhs_size_0 == rhs_size_1 && lhs_size_1 == rhs_size_0,
168 "size() not swapped for \"%{X=*.*}\" and \"%{X=*.*}\"",
169 cwidth,
int (lhs_seq_len), -1, lhs_seq,
170 cwidth,
int (rhs_seq_len), -1, rhs_seq);
178 const SizeType lhs_size_2 =
lhs.size ();
180 rw_assert (lhs_begin_2 == lhs_end_2, 0, __LINE__,
181 "deque<%s>().begin() not swapped for \"%{X=*.*}\"",
182 tname, cwidth,
int (rhs_seq_len), -1, rhs_seq);
185 "deque<%s>().size() not swapped for \"%{X=*.*}\"",
186 tname, cwidth,
int (rhs_seq_len), -1, rhs_seq);
194 "std::deque<%s>::swap(deque<%1$s>&)", tname);
196 typedef std::deque<T, std::allocator<T> > MyDeque;
197 typedef typename MyDeque::iterator
Iterator;
204 { empty [0].begin (), empty [0].end () },
205 { empty [1].begin (), empty [1].end () }
209 empty [0].swap (empty [1]);
213 { empty [0].begin (), empty [0].end () },
214 { empty [1].begin (), empty [1].end () }
218 rw_assert ( before [0][0] == after [1][0]
219 && before [1][0] == after [0][0], 0, __LINE__,
220 "deque<%s>().begin() not swapped", tname);
222 rw_assert ( before [0][1] == after [1][1]
223 && before [1][1] == after [0][1], 0, __LINE__,
224 "deque<%s>().end() not swapped", tname);
229 const std::size_t seq_len =
sizeof seq /
sizeof *seq;
231 for (std::size_t
i = 0;
i != seq_len; ++
i) {
232 for (std::size_t
j = 0;
j != seq_len; ++
j) {
253 static const Deque::size_type caps[] = {
257 for (std::size_t
i = 0;
i !=
sizeof caps /
sizeof *caps; ++
i) {
262 "__rw::__rw_new_capacity<std::deque<UserClass> >(0) = %u",
263 _RW::__rw_new_capacity (0, (
Deque*)0));
273int main (
int argc,
char** argv)
275 return rw_test (argc, argv, __FILE__,
int run_test(int, char **)
std::deque< UserClass, std::allocator< UserClass > > Deque
Deque::size_type new_capacity
std::allocator< DequeValueType > DequeAllocator
std::deque< DequeValueType, DequeAllocator > DequeType
#define _RWSTD_UNUSED(arg)
#define _RWSTD_NAMESPACE(name)
#define _RWSTD_SPECIALIZED_FUNCTION
std::deque< std::string, std::allocator< std::string > > Deque
_RWSTD_SPECIALIZED_FUNCTION Deque::size_type __rw_new_capacity< Deque >(Deque::size_type n, const Deque *)
_TEST_EXPORT int rw_test(int argc, char *argv[], const char *filename, const char *clause, const char *comment, int(*testfun)(int, char **), const char *optspec,...)
_TEST_EXPORT int rw_info(int, const char *, int, const char *,...)
_TEST_EXPORT int rw_assert(int, const char *, int, const char *,...)