os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/generator_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 "fadapter.h"
     4 #include "fib.h"
     5 
     6 #include "cppunit/cppunit_proxy.h"
     7 
     8 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
     9 using namespace std;
    10 #endif
    11 
    12 //
    13 // TestCase class
    14 //
    15 class GeneratorTest : public CPPUNIT_NS::TestCase
    16 {
    17   CPPUNIT_TEST_SUITE(GeneratorTest);
    18   CPPUNIT_TEST(gener1);
    19   CPPUNIT_TEST(gener2);
    20   CPPUNIT_TEST(genern1);
    21   CPPUNIT_TEST(genern2);
    22   CPPUNIT_TEST_SUITE_END();
    23 
    24 protected:
    25   void gener1();
    26   void gener2();
    27   void genern1();
    28   void genern2();
    29 };
    30 
    31 CPPUNIT_TEST_SUITE_REGISTRATION(GeneratorTest);
    32 
    33 //
    34 // tests implementation
    35 //
    36 
    37 static  int cxxrand() { return rand();}
    38 
    39 void GeneratorTest::gener1()
    40 {
    41   int numbers[10];
    42 #if defined(__MVS__)
    43   generate(numbers, numbers + 10, ptr_gen(cxxrand));
    44 #else
    45   generate(numbers, numbers + 10, cxxrand);
    46 #endif
    47   // any suggestions?
    48 }
    49 void GeneratorTest::gener2()
    50 {
    51   vector <int> v1(10);
    52   Fibonacci generator;
    53   generate(v1.begin(), v1.end(), generator);
    54 
    55   CPPUNIT_ASSERT(v1[0]==1);
    56   CPPUNIT_ASSERT(v1[1]==1);
    57   CPPUNIT_ASSERT(v1[2]==2);
    58   CPPUNIT_ASSERT(v1[3]==3);
    59   CPPUNIT_ASSERT(v1[4]==5);
    60   CPPUNIT_ASSERT(v1[5]==8);
    61   CPPUNIT_ASSERT(v1[6]==13);
    62   CPPUNIT_ASSERT(v1[7]==21);
    63   CPPUNIT_ASSERT(v1[8]==34);
    64   CPPUNIT_ASSERT(v1[9]==55);
    65 }
    66 void GeneratorTest::genern1()
    67 {
    68 #if !defined (_STLP_MEMBER_POINTER_PARAM_BUG)
    69   //*TY 07/18/98 - added conditional
    70   // since ptr_gen() is not defined under this condition
    71   // (see xfunction.h)
    72   vector <int> v1(10);
    73   generate_n(v1.begin(), v1.size(), ptr_gen(cxxrand));
    74 #endif  //_STLP_MEMBER_POINTER_PARAM_BUG  //*TY 07/18/98 - added
    75 }
    76 void GeneratorTest::genern2()
    77 {
    78   vector <int> v1(10);
    79   Fibonacci generator;
    80   generate_n(v1.begin(), v1.size(), generator);
    81 
    82   CPPUNIT_ASSERT(v1[0]==1);
    83   CPPUNIT_ASSERT(v1[1]==1);
    84   CPPUNIT_ASSERT(v1[2]==2);
    85   CPPUNIT_ASSERT(v1[3]==3);
    86   CPPUNIT_ASSERT(v1[4]==5);
    87   CPPUNIT_ASSERT(v1[5]==8);
    88   CPPUNIT_ASSERT(v1[6]==13);
    89   CPPUNIT_ASSERT(v1[7]==21);
    90   CPPUNIT_ASSERT(v1[8]==34);
    91   CPPUNIT_ASSERT(v1[9]==55);
    92 }