31#if defined (__IBMCPP__) && !defined (_RWSTD_NO_IMPLICIT_INCLUSION)
34# define _RWSTD_NO_IMPLICIT_INCLUSION
58#ifndef _RWSTD_NO_EXPLICIT_INSTANTIATION
87 Y (
int ,
int ): xval_ () { }
139template <
class T,
class ForwardIterator>
151 const char*
const tname =
"UserClass";
152 const char*
const itname =
type_name (it, (
T*)0);
153 const char*
const funname =
predicate ?
"LessThan" :
"operator<()";
155 const std::size_t
nsrc = std::strlen (src_str);
156 T*
const xsrc = T::from_char (src_str,
nsrc);
157 T*
const xsrc_end = xsrc +
nsrc;
167 value.xval_.data_.val_ = val_char;
174 T::n_total_op_lt_ = 0;
180 : std::binary_search (first,
last,
value);
187 "binary_search <%s, const %s&%{?}, %s%{;}> (\"%s\", %#c, ...) "
188 "expected %s, got %s",
189 itname, tname,
predicate, funname, src_str, val_char,
190 exp_res ?
"true" :
"false",
result ?
"true" :
"false");
197 "binary_search <%s, const %s&%{?}, %s%{;}> (\"%s\", %#c, ...) "
198 "complexity: invoked %4$s at most %zu times, got %zu",
199 itname, tname,
predicate, funname, src_str, val_char,
207template <
class T,
class ForwardIterator>
212 const char*
const itname =
type_name (it, (
T*)0);
213 const char*
const funname =
predicate ?
"LessThan" :
"operator<()";
216 "std::binary_search (%s, %1$s, const UserClass&%{?}, %s%{;})",
219#define TEST(str, val, res, comp) \
220 test_binary_search (__LINE__, str, val, res, std::size_t (comp), \
221 it, (T*)0, predicate)
230 TEST (
"",
'a',
false, 0);
231 TEST (
"a",
'a',
true, 2);
232 TEST (
"a",
'b',
false, 2);
233 TEST (
"b",
'a',
false, 2);
235 TEST (
"aa",
'a',
true, 3);
236 TEST (
"ab",
'a',
true, 3);
237 TEST (
"ab",
'b',
true, 3);
238 TEST (
"bb",
'a',
false, 3);
240 TEST (
"abcdefghij",
'a',
true, 6);
241 TEST (
"abcdefghij",
'c',
true, 6);
242 TEST (
"abcdefghij",
'f',
true, 6);
243 TEST (
"abcdefghij",
'h',
true, 6);
244 TEST (
"abcdefghij",
'j',
true, 6);
245 TEST (
"aacceeggii",
'c',
true, 6);
246 TEST (
"aacceeggii",
'g',
true, 6);
247 TEST (
"aacceeggii",
'b',
false, 6);
248 TEST (
"aacceeggii",
'f',
false, 6);
249 TEST (
"aacceeggii",
'j',
false, 6);
250 TEST (
"cccceeggii",
'a',
false, 6);
270 rw_info (0, 0, 0,
"template <class %s, class %s%{?}, class %s%{;}> "
271 "bool std::binary_search (%1$s, %1$s, const %2$s&%{?}, %s%{;})",
276 rw_note (0, 0, 0,
"ForwardIterator test disabled");
283 rw_note (0, 0, 0,
"BidirectionalIterator test disabled");
290 rw_note (0, 0, 0,
"RandomAccessIterator test disabled");
300run_test (
int,
char*[])
305 rw_note (0, __FILE__, __LINE__,
306 "test of the Predicate form of std::binary_search disabled");
317int main (
int argc,
char *argv[])
319 return rw_test (argc, argv, __FILE__,
324 "|-no-ForwardIterator# "
325 "|-no-BidirectionalIterator# "
326 "|-no-RandomAccessIterator#",
const MyBuffer< char > nsrc[]
void test_binary_search(int line, const char *src_str, char val_char, bool exp_res, std::size_t ncomp, const ForwardIterator &it, const T *, bool predicate)
bool operator<(const UserClass &lhs, const Y &rhs)
#define TEST(str, val, res, comp)
#define _RWSTD_UNUSED(arg)
#define _RWSTD_NAMESPACE(name)
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_note(int, const char *, int, const char *,...)
_TEST_EXPORT int rw_assert(int, const char *, int, const char *,...)
static std::size_t funcalls_
bool operator()(const T &a, const T &b) const