ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

rndshf_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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.