69 static const char*
name () {
return "ConstFunction"; }
81 val.data_.val_ = -
val.data_.val_;
84 static const char*
name () {
return "MutableFunction"; }
89template <
class InputIterator,
class T,
class Function>
92 static const char*
const itname =
type_name (dummy, (
T*)0);
93 static const char*
const fnname = Function::name ();
95 rw_info (0, 0, 0,
"std::for_each (%s, %1$s, %s)", itname, fnname);
104 for (std::size_t
i = 0;
i !=
N; ++
i) {
114 std::for_each (first,
last,
fun);
120 for (std::size_t
j = 0;
j !=
i; ++
j) {
128 expect = first_val + int (
j);
132 expect = -(first_val + int (
j));
136 sum +=
buf [
j].data_.val_;
140 "for_each (%s, %1$s, %s); element [%zu] == %d, got %d",
141 itname, fnname,
j, expect,
buf [
j].data_.val_);
143 if (expect !=
buf [
j].data_.val_) {
150 buf [
j].data_.val_ = first_val + int (
j);
156 "for_each (%s, %1$s, %s); expected %zu invocations of "
157 "Function::operator(), got %zu", itname, fnname,
162 "for_each (%s, %1$s, %s); sum of %zu elements == %d, "
163 "got %d", itname, fnname, sum,
fun.sum_);
182 const std::size_t
N = std::size_t (rw_opt_nloops);
185 "template <class %s, class %s> "
186 "%2$s std::for_each (%1$s, %1$s, %2$s)",
187 "InputIterator",
"Function");
189 if (rw_opt_no_input_iter) {
190 rw_note (0, __FILE__, __LINE__,
"InputIterator test disabled");
197 if (rw_opt_no_fwd_iter) {
198 rw_note (0, __FILE__, __LINE__,
"ForwardIterator test disabled");
209 if (rw_opt_no_bidir_iter) {
210 rw_note (0, __FILE__, __LINE__,
"BidirectionalIterator test disabled");
221 if (rw_opt_no_rnd_iter) {
222 rw_note (0, __FILE__, __LINE__,
"RandomAccessIterator test disabled");
238int main (
int argc,
char *argv[])
240 return rw_test (argc, argv, __FILE__,
244 "|-no-InputIterator# "
245 "|-no-ForwardIterator# "
246 "|-no-BidirectionalIterator# "
247 "|-no-RandomAccessIterator#",
void run_test(const ForwardIterator &dummy, T *, Predicate *pred)
void test_for_each(std::size_t N, InputIterator dummy, T *, Function *)
_TEST_EXPORT int gen_seq()
_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_note(int, const char *, int, const char *,...)
_TEST_EXPORT int rw_assert(int, const char *, int, const char *,...)
static const char * name()
void operator()(UserClass val)
FunctionBase(bool is_const)
static std::size_t funcalls_
void operator()(UserClass &val)
static const char * name()
MutableFunction(int, int)