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