os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/max_test.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     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   r = max(++r, r);
    43   CPPUNIT_ASSERT( r == 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 }