Home | History | Annotate | Download | only in unit
      1 #include <vector>
      2 #include <algorithm>
      3 
      4 #include "cppunit/cppunit_proxy.h"
      5 
      6 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
      7 using namespace std;
      8 #endif
      9 
     10 //
     11 // TestCase class
     12 //
     13 class MaxTest : public CPPUNIT_NS::TestCase
     14 {
     15   CPPUNIT_TEST_SUITE(MaxTest);
     16   CPPUNIT_TEST(max1);
     17   CPPUNIT_TEST(max2);
     18   CPPUNIT_TEST(maxelem1);
     19   CPPUNIT_TEST(maxelem2);
     20   CPPUNIT_TEST_SUITE_END();
     21 
     22 protected:
     23   void max1();
     24   void max2();
     25   void maxelem1();
     26   void maxelem2();
     27 
     28   static bool str_compare(const char* a_, const char* b_)
     29   { return strcmp(a_, b_) < 0 ? 1 : 0; }
     30 };
     31 
     32 CPPUNIT_TEST_SUITE_REGISTRATION(MaxTest);
     33 
     34 //
     35 // tests implementation
     36 //
     37 void MaxTest::max1()
     38 {
     39   int r = max(42, 100);
     40   CPPUNIT_ASSERT( r == 100 );
     41 
     42   int t = max(++r, 0);
     43   CPPUNIT_ASSERT( t == 101 );
     44 }
     45 void MaxTest::max2()
     46 {
     47   const char* r = max((const char*)"shoe", (const char*)"shine", str_compare);
     48   CPPUNIT_ASSERT(!strcmp(r, "shoe"));
     49 }
     50 void MaxTest::maxelem1()
     51 {
     52   int numbers[6] = { 4, 10, 56, 11, -42, 19 };
     53 
     54   int* r = max_element((int*)numbers, (int*)numbers + 6);
     55   CPPUNIT_ASSERT(*r==56);
     56 }
     57 void MaxTest::maxelem2()
     58 {
     59   const char* names[] = { "Brett", "Graham", "Jack", "Mike", "Todd" };
     60 
     61   const unsigned namesCt = sizeof(names) / sizeof(names[0]);
     62   const char** r = max_element((const char**)names, (const char**)names + namesCt, str_compare);
     63   CPPUNIT_ASSERT(!strcmp(*r, "Todd"));
     64 }
     65