| #include <algorithm> |
| |
| #include "cppunit/cppunit_proxy.h" |
| |
| #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) |
| using namespace std; |
| #endif |
| |
| // |
| // TestCase class |
| // |
| class BsearchTest : public CPPUNIT_NS::TestCase |
| { |
| CPPUNIT_TEST_SUITE(BsearchTest); |
| CPPUNIT_TEST(bsearch1); |
| CPPUNIT_TEST(bsearch2); |
| CPPUNIT_TEST_SUITE_END(); |
| |
| protected: |
| void bsearch1(); |
| void bsearch2(); |
| static bool str_compare(const char* a_, const char* b_); |
| }; |
| |
| CPPUNIT_TEST_SUITE_REGISTRATION(BsearchTest); |
| |
| // |
| // tests implementation |
| // |
| void BsearchTest::bsearch1() |
| { |
| int vector[100]; |
| for(int i = 0; i < 100; i++) |
| vector[i] = i; |
| CPPUNIT_ASSERT(binary_search(vector, vector + 100, 42)); |
| } |
| |
| void BsearchTest::bsearch2() |
| { |
| char const* labels[] = { "aa", "dd", "ff", "jj", "ss", "zz" }; |
| const unsigned count = sizeof(labels) / sizeof(labels[0]); |
| // DEC C++ generates incorrect template instatiation code |
| // for "ff" so must cast |
| CPPUNIT_ASSERT(binary_search(labels, labels + count, (const char *)"ff", str_compare)); |
| } |
| bool BsearchTest::str_compare(const char* a_, const char* b_) |
| { |
| return strcmp(a_, b_) < 0 ? 1 : 0; |
| } |