• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
cxxrand()37 static  int cxxrand() { return rand();}
38 
gener1()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 }
gener2()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 }
genern1()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 }
genern2()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 }
93