40template <
class InputIterator1,
class InputIterator2,
class T>
42 const InputIterator1 &it1_dummy,
43 const InputIterator2 &it2_dummy,
47 static const char*
const it1name =
type_name (it1_dummy, (
T*)0);
48 static const char*
const it2name =
type_name (it2_dummy, (
T*)0);
50 rw_info (0, 0, 0,
"std::mismatch (%s, %1$s, %s%{?}, %s%{;})",
62 const std::size_t mid_inx =
N / 2;
64 for (std::size_t
i = 0;
i !=
N; ++
i) {
77 for (std::size_t
i = 0;
i !=
N; ++
i) {
85 const InputIterator1 first1 (buf1, buf1, buf1_end);
86 const InputIterator1 last1 (buf1_end, buf1_end, buf1_end);
87 const InputIterator2 first2 (buf2, buf2, buf2_end);
89 const std::equal_to<UserClass> pred = std::equal_to<UserClass>();
91 const std::pair<InputIterator1, InputIterator2>
result =
92 predicate ? std::mismatch (first1, last1, first2, pred)
93 : std::mismatch (first1, last1, first2);
97 (
i < mid_inx) ? buf1_end : buf1 + mid_inx;
100 (
i < mid_inx) ? buf2_end : buf2 + mid_inx;
103 buf1 + (
result.first.cur_ - first1.cur_);
106 buf2 + (
result.second.cur_ - first2.cur_);
110 buf1 <= res_buf1_end && res_buf1_end <= buf1_end &&
111 buf2 <= res_buf2_end && res_buf2_end <= buf2_end;
114 "%zu. mismatch (%s, %2$s, %s%{?}, %s%{;}): "
115 "result { %d, %d } out of range: expected "
116 "{ [0, %d], [0, %d] }",
118 res_buf1_end - buf1, res_buf2_end - buf2,
119 buf1_end - buf1, buf2_end - buf2);
124 && res_buf2_end->data_.val_ == expected_buf2_end->
data_.
val_;
127 "%zu. mismatch (%s, %2$s, %s%{?}, %s%{;}): "
128 "correctness: got: %d "
129 "expected: %d, got: %d expected: %d",
132 res_buf2_end->data_.val_, expected_buf2_end->
data_.
val_);
138 "%zu. mismatch (%s, %2$s, %s%{?}, %s%{;}): "
139 "complexity: %zu <= %zu",
147 ::operator
delete (buf1);
148 ::operator
delete (buf2);
162template <
class InputIterator,
class T>
167 "number of loops must be non-negative, got %d",
173 rw_note (0, __FILE__, __LINE__,
"InputIterator test disabled");
181 rw_note (0, __FILE__, __LINE__,
"ForwardIterator test disabled");
189 rw_note (0, __FILE__, __LINE__,
190 "BidirectionalIterator test disabled");
198 rw_note (0, __FILE__, __LINE__,
199 "RandomAccessIterator test disabled");
214 "template <class %s, class %s> "
215 "std::pair<%1$s, %2$s> "
216 "std::mismatch (%1$s, %1$s, %2$s%{?}, %s%{;})",
217 "InputIterator1",
"InputIterator2",
221 rw_note (0, __FILE__, __LINE__,
"InputIterator test disabled");
228 rw_note (0, __FILE__, __LINE__,
"ForwardIterator test disabled");
236 rw_note (0, __FILE__, __LINE__,
237 "BidirectionalIterator test disabled");
245 rw_note (0, __FILE__, __LINE__,
246 "RandomAccessIterator test disabled");
263 rw_note (0, __FILE__, __LINE__,
"Predicate test disabled");
274int main (
int argc,
char *argv[])
276 return rw_test (argc, argv, __FILE__,
280 "|-no-InputIterator#"
281 "|-no-ForwardIterator#"
282 "|-no-BidirectionalIterator#"
283 "|-no-RandomAccessIterator#"
void run_test(const ForwardIterator &dummy, T *, Predicate *pred)
#define _RWSTD_STATIC_CAST(T, x)
_TEST_EXPORT int gen_seq_2lists()
_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 *,...)
static _RWSTD_SIZE_T n_total_op_eq_