os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/setinter_test.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 #include <numeric>
     2 #include <string>
     3 #include <iterator>
     4 #include <vector>
     5 #include <algorithm>
     6 #include <functional>
     7 
     8 #include "iota.h"
     9 #include "cppunit/cppunit_proxy.h"
    10 
    11 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
    12 using namespace std;
    13 #endif
    14 
    15 //
    16 // TestCase class
    17 //
    18 class SetIntersectionTest : public CPPUNIT_NS::TestCase
    19 {
    20   CPPUNIT_TEST_SUITE(SetIntersectionTest);
    21   CPPUNIT_TEST(setintr0);
    22   CPPUNIT_TEST(setintr1);
    23   CPPUNIT_TEST(setintr2);
    24   CPPUNIT_TEST_SUITE_END();
    25 
    26 protected:
    27   void setintr0();
    28   void setintr1();
    29   void setintr2();
    30 };
    31 
    32 CPPUNIT_TEST_SUITE_REGISTRATION(SetIntersectionTest);
    33 
    34 //
    35 // tests implementation
    36 //
    37 void SetIntersectionTest::setintr0()
    38 {
    39   int v1[3] = { 13, 18, 23 };
    40   int v2[4] = { 10, 13, 17, 23 };
    41   int result[4] = { 0, 0, 0, 0 };
    42 
    43   set_intersection((int*)v1, (int*)v1 + 3, (int*)v2, (int*)v2 + 4, (int*)result);
    44 
    45   CPPUNIT_ASSERT(result[0]==13);
    46   CPPUNIT_ASSERT(result[1]==23);
    47   CPPUNIT_ASSERT(result[2]==0);
    48   CPPUNIT_ASSERT(result[3]==0);
    49 }
    50 
    51 void SetIntersectionTest::setintr1()
    52 {
    53   vector <int> v1(10);
    54   __iota(v1.begin(), v1.end(), 0);
    55   vector <int> v2(10);
    56   __iota(v2.begin(), v2.end(), 7);
    57 
    58   vector<int> inter;
    59   set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(inter));
    60   CPPUNIT_ASSERT( inter.size() == 3 );
    61   CPPUNIT_ASSERT( inter[0] == 7 );
    62   CPPUNIT_ASSERT( inter[1] == 8 );
    63   CPPUNIT_ASSERT( inter[2] == 9 );
    64 }
    65 
    66 void SetIntersectionTest::setintr2()
    67 {
    68   char* word1 = "ABCDEFGHIJKLMNO";
    69   char* word2 = "LMNOPQRSTUVWXYZ";
    70 
    71   string inter;
    72   set_intersection(word1, word1 + ::strlen(word1), word2, word2 + ::strlen(word2),
    73                    back_inserter(inter), less<char>());
    74   CPPUNIT_ASSERT( inter.size() == 4 );
    75   CPPUNIT_ASSERT( inter[0] == 'L' );
    76   CPPUNIT_ASSERT( inter[1] == 'M' );
    77   CPPUNIT_ASSERT( inter[2] == 'N' );
    78   CPPUNIT_ASSERT( inter[3] == 'O' );
    79 }