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