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 
str_compare(const char * a_,const char * b_)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 //
max1()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 }
max2()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 }
maxelem1()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 }
maxelem2()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