Home | History | Annotate | Download | only in unit
      1 #include <algorithm>
      2 
      3 #include "cppunit/cppunit_proxy.h"
      4 
      5 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
      6 using namespace std;
      7 #endif
      8 
      9 //
     10 // TestCase class
     11 //
     12 class 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 
     19 protected:
     20   void bsearch1();
     21   void bsearch2();
     22   static bool str_compare(const char* a_, const char* b_);
     23 };
     24 
     25 CPPUNIT_TEST_SUITE_REGISTRATION(BsearchTest);
     26 
     27 //
     28 // tests implementation
     29 //
     30 void 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 
     38 void 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 }
     46 bool BsearchTest::str_compare(const char* a_, const char* b_)
     47 {
     48   return strcmp(a_, b_) < 0 ? 1 : 0;
     49 }
     50