os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/ptr2_test.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 #include <vector>
     2 #include <algorithm>
     3 #include <functional>
     4 
     5 #include "cppunit/cppunit_proxy.h"
     6 
     7 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
     8 using namespace std;
     9 #endif
    10 
    11 //
    12 // TestCase class
    13 //
    14 class Ptr2Test : public CPPUNIT_NS::TestCase
    15 {
    16   CPPUNIT_TEST_SUITE(Ptr2Test);
    17   CPPUNIT_TEST(ptrbin1);
    18   CPPUNIT_TEST(ptrbin2);
    19   CPPUNIT_TEST(ptrun1);
    20   CPPUNIT_TEST(ptrun2);
    21   CPPUNIT_TEST_SUITE_END();
    22 
    23 protected:
    24   void ptrbin1();
    25   void ptrbin2();
    26   void ptrun1();
    27   void ptrun2();
    28 };
    29 
    30 CPPUNIT_TEST_SUITE_REGISTRATION(Ptr2Test);
    31 
    32 //
    33 // tests implementation
    34 //
    35 static int sum(int x_, int y_)
    36 {
    37   return x_ + y_;
    38 }
    39 bool even(int n_)
    40 {
    41   return(n_ % 2) == 0;
    42 }
    43 void Ptr2Test::ptrbin1()
    44 {
    45   int input1 [4] = { 7, 2, 3, 5 };
    46   int input2 [4] = { 1, 5, 5, 8 };
    47 
    48   int output [4];
    49   transform((int*)input1, (int*)input1 + 4, (int*)input2, (int*)output, pointer_to_binary_function<int, int, int>(sum));
    50 
    51   CPPUNIT_ASSERT(output[0]==8);
    52   CPPUNIT_ASSERT(output[1]==7);
    53   CPPUNIT_ASSERT(output[2]==8);
    54   CPPUNIT_ASSERT(output[3]==13);
    55 }
    56 void Ptr2Test::ptrbin2()
    57 {
    58   int input1 [4] = { 7, 2, 3, 5 };
    59   int input2 [4] = { 1, 5, 5, 8 };
    60 
    61   int output [4];
    62   transform((int*)input1, (int*)input1 + 4, (int*)input2, (int*)output, ptr_fun(sum));
    63 
    64   CPPUNIT_ASSERT(output[0]==8);
    65   CPPUNIT_ASSERT(output[1]==7);
    66   CPPUNIT_ASSERT(output[2]==8);
    67   CPPUNIT_ASSERT(output[3]==13);
    68 }
    69 void Ptr2Test::ptrun1()
    70 {
    71   int array [3] = { 1, 2, 3 };
    72 
    73   int* p = find_if((int*)array, (int*)array + 3, pointer_to_unary_function<int, bool>(even));
    74   CPPUNIT_ASSERT(p != array+3);
    75   CPPUNIT_ASSERT(*p==2);
    76 }
    77 void Ptr2Test::ptrun2()
    78 {
    79   int array [3] = { 1, 2, 3 };
    80 
    81   int* p = find_if((int*)array, (int*)array + 3, ptr_fun(even));
    82   CPPUNIT_ASSERT(p != array+3);
    83   CPPUNIT_ASSERT(*p==2);
    84 }