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