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