40#ifndef _RWSTD_NO_EXPLICIT_INSTANTIATION
59template <
class ForwardIterator,
class T>
64 static const char*
const itname =
type_name (dummy_iter, (
T*)0);
65 static const char*
const tname =
"UserClass";
67 rw_info (0, 0, 0,
"void std::fill (%s, %1$s, const %s&)", itname, tname);
74 for (std::size_t
i = 0;
i <
N; ++
i) {
76 T*
const buf_end =
buf +
i;
82 make_iter (buf_end, buf_end, buf_end, dummy_iter);
87 std::size_t n_op_assign = T::n_total_op_assign_;
93 n_op_assign = T::n_total_op_assign_ - n_op_assign;
99 for ( ; success &&
j !=
i; ++
j) {
100 success =
buf [
j].data_.val_ ==
value.data_.val_;
104 "%zu. fill (%s, %2$s, const %s&): buf [%zu]: %d != %d",
105 i, itname, tname,
j,
buf [
j].data_.val_,
111 if (!
rw_assert (n_op_assign ==
i, 0, __LINE__,
112 "%zu. fill (%s, %2$s, const %s&) expected "
113 "%zu invocations of %2$s::operator=(); got %zu",
114 i, itname, tname,
i, n_op_assign))
124template <
class OutputIterator,
class Size,
class T>
130 static const char*
const itname =
type_name (dummy_iter, (
T*)0);
131 static const char*
const szname =
"Size<int>";
132 static const char*
const tname =
"UserClass";
134 rw_info (0, 0, 0,
"void std::fill_n (%s, %s, const %s&)",
135 itname, szname, tname);
142 for (std::size_t
i = 0;
i <
N; ++
i) {
144 T*
const buf_end =
buf +
i;
149 const Size n (
typename Size::IntegralType (
i), 0 );
153 std::size_t n_op_assign = T::n_total_op_assign_;
155 std::fill_n (begin,
n,
value);
158 n_op_assign = T::n_total_op_assign_ - n_op_assign;
164 for ( ; success &&
j !=
i; ++
j) {
165 success =
buf [
j].data_.val_ ==
value.data_.val_;
169 "%zu. fill_n (%s, %s, const %s&): buf [%zu]: %d != %d",
170 i, itname, szname, tname,
j,
buf [
j].data_.val_,
176 success = n_op_assign ==
i;
178 "%zu. fill_n (%s, %s, const %s&) complexity: "
179 "%zu != %zu",
i, itname, szname, tname,
204 "template <class %s, class %s> "
205 "void std::fill (%1$s, %1$s, const %2$s&)",
206 "ForwardIterator",
"T");
209 rw_note (0, __FILE__, __LINE__,
"ForwardIterator test disabled");
216 rw_note (0, __FILE__, __LINE__,
"BidirectionalIterator test disabled");
223 rw_note (0, __FILE__, __LINE__,
"RandomAccessIterator test disabled");
236 "template <class %s, class %s, class %s> "
237 "void std::fill_n (%1$s, %2$s, const %3$s&)",
238 "OutputIterator",
"Size",
"T");
241 rw_note (0, __FILE__, __LINE__,
"OutputIterator test disabled");
249 rw_note (0, __FILE__, __LINE__,
"ForwardIterator test disabled");
256 rw_note (0, __FILE__, __LINE__,
"BidirectionalIterator test disabled");
263 rw_note (0, __FILE__, __LINE__,
"RandomAccessIterator test disabled");
274run_test (
int,
char*[])
278 "number of loops must be non-negative, got %d",
284 rw_note (0, __FILE__, __LINE__,
"std::fill test disabled");
291 rw_note (0, __FILE__, __LINE__,
"std::fill_n test disabled");
302int main (
int argc,
char *argv[])
304 return rw_test (argc, argv, __FILE__,
310 "|-no-OutputIterator# "
311 "|-no-ForwardIterator# "
312 "|-no-BidirectionalIterator# "
313 "|-no-RandomAccessIterator#",
void test_fill_n(std::size_t N, const OutputIterator &dummy_iter, const Size *, const T *)
void test_fill(std::size_t N, const ForwardIterator &dummy_iter, const T *)
int rw_opt_no_output_iter
#define _RWSTD_NAMESPACE(name)
_TEST_EXPORT int gen_seq()
T * make_iter(T *cur, const T *, const T *, T *)
_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_fatal(int expr, const char *filename, int line, const char *fmtspec,...)
_TEST_EXPORT int rw_note(int, const char *, int, const char *,...)
_TEST_EXPORT int rw_assert(int, const char *, int, const char *,...)