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