Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenrndshf_test.cpp
Go to the documentation of this file.
00001 #include <numeric> 00002 #include <vector> 00003 #include <algorithm> 00004 00005 #include "iota.h" 00006 #include "cppunit/cppunit_proxy.h" 00007 00008 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 00009 using namespace std; 00010 #endif 00011 00012 // 00013 // TestCase class 00014 // 00015 class RndShuffleTest : public CPPUNIT_NS::TestCase 00016 { 00017 class MyRandomGenerator 00018 { 00019 public: 00020 unsigned long operator()(unsigned long n_) 00021 { 00022 return rand() % n_; 00023 } 00024 }; 00025 CPPUNIT_TEST_SUITE(RndShuffleTest); 00026 CPPUNIT_TEST(rndshuf0); 00027 CPPUNIT_TEST(rndshuf2); 00028 CPPUNIT_TEST_SUITE_END(); 00029 00030 protected: 00031 void rndshuf0(); 00032 void rndshuf2(); 00033 }; 00034 00035 CPPUNIT_TEST_SUITE_REGISTRATION(RndShuffleTest); 00036 00037 // 00038 // tests implementation 00039 // 00040 void RndShuffleTest::rndshuf0() 00041 { 00042 int numbers[6] = { 1, 2, 3, 4, 5, 6 }; 00043 00044 random_shuffle(numbers, numbers + 6); 00045 00046 CPPUNIT_ASSERT(count(numbers, numbers+6, 1)==1); 00047 CPPUNIT_ASSERT(count(numbers, numbers+6, 2)==1); 00048 CPPUNIT_ASSERT(count(numbers, numbers+6, 3)==1); 00049 CPPUNIT_ASSERT(count(numbers, numbers+6, 4)==1); 00050 CPPUNIT_ASSERT(count(numbers, numbers+6, 5)==1); 00051 CPPUNIT_ASSERT(count(numbers, numbers+6, 6)==1); 00052 } 00053 void RndShuffleTest::rndshuf2() 00054 { 00055 vector <int> v1(10); 00056 __iota(v1.begin(), v1.end(), 0); 00057 00058 MyRandomGenerator r; 00059 for(int i = 0; i < 3; i++) 00060 { 00061 random_shuffle(v1.begin(), v1.end(), r); 00062 CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 0)==1); 00063 CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 1)==1); 00064 CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 2)==1); 00065 CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 3)==1); 00066 CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 4)==1); 00067 CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 5)==1); 00068 CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 6)==1); 00069 CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 7)==1); 00070 CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 8)==1); 00071 CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 9)==1); 00072 } 00073 } Generated on Sat May 26 2012 04:34:42 for ReactOS by
1.7.6.1
|