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