1#include <algorithm>
2
3#include "cppunit/cppunit_proxy.h"
4
5#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
6using namespace std;
7#endif
8
9//
10// TestCase class
11//
12class BsearchTest : public CPPUNIT_NS::TestCase
13{
14  CPPUNIT_TEST_SUITE(BsearchTest);
15  CPPUNIT_TEST(bsearch1);
16  CPPUNIT_TEST(bsearch2);
17  CPPUNIT_TEST_SUITE_END();
18
19protected:
20  void bsearch1();
21  void bsearch2();
22  static bool str_compare(const char* a_, const char* b_);
23};
24
25CPPUNIT_TEST_SUITE_REGISTRATION(BsearchTest);
26
27//
28// tests implementation
29//
30void BsearchTest::bsearch1()
31{
32  int vector[100];
33  for(int i = 0; i < 100; i++)
34    vector[i] = i;
35  CPPUNIT_ASSERT(binary_search(vector, vector + 100, 42));
36}
37
38void BsearchTest::bsearch2()
39{
40  char const* labels[] = { "aa", "dd", "ff", "jj", "ss", "zz" };
41  const unsigned count = sizeof(labels) / sizeof(labels[0]);
42  // DEC C++ generates incorrect template instatiation code
43  // for "ff" so must cast
44  CPPUNIT_ASSERT(binary_search(labels, labels + count, (const char *)"ff", str_compare));
45}
46bool BsearchTest::str_compare(const char* a_, const char* b_)
47{
48  return strcmp(a_, b_) < 0 ? 1 : 0;
49}
50