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 } 93