[CMAKE]
[reactos.git] / lib / 3rdparty / stlport / test / unit / generator_test.cpp
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 }