os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/rndshf_test.cpp
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/ossrv/genericopenlibs/cppstdlib/stl/test/unit/rndshf_test.cpp	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,73 @@
     1.4 +#include <numeric>
     1.5 +#include <vector>
     1.6 +#include <algorithm>
     1.7 +
     1.8 +#include "iota.h"
     1.9 +#include "cppunit/cppunit_proxy.h"
    1.10 +
    1.11 +#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
    1.12 +using namespace std;
    1.13 +#endif
    1.14 +
    1.15 +//
    1.16 +// TestCase class
    1.17 +//
    1.18 +class RndShuffleTest : public CPPUNIT_NS::TestCase
    1.19 +{
    1.20 +  class MyRandomGenerator
    1.21 +  {
    1.22 +    public:
    1.23 +      unsigned long operator()(unsigned long n_)
    1.24 +        {
    1.25 +        return rand() % n_;
    1.26 +        }
    1.27 +  };
    1.28 +  CPPUNIT_TEST_SUITE(RndShuffleTest);
    1.29 +  CPPUNIT_TEST(rndshuf0);
    1.30 +  CPPUNIT_TEST(rndshuf2);
    1.31 +  CPPUNIT_TEST_SUITE_END();
    1.32 +
    1.33 +protected:
    1.34 +  void rndshuf0();
    1.35 +  void rndshuf2();
    1.36 +};
    1.37 +
    1.38 +CPPUNIT_TEST_SUITE_REGISTRATION(RndShuffleTest);
    1.39 +
    1.40 +//
    1.41 +// tests implementation
    1.42 +//
    1.43 +void RndShuffleTest::rndshuf0()
    1.44 +{
    1.45 +  int numbers[6] = { 1, 2, 3, 4, 5, 6 };
    1.46 +
    1.47 +  random_shuffle(numbers, numbers + 6);
    1.48 +
    1.49 +  CPPUNIT_ASSERT(count(numbers, numbers+6, 1)==1);
    1.50 +  CPPUNIT_ASSERT(count(numbers, numbers+6, 2)==1);
    1.51 +  CPPUNIT_ASSERT(count(numbers, numbers+6, 3)==1);
    1.52 +  CPPUNIT_ASSERT(count(numbers, numbers+6, 4)==1);
    1.53 +  CPPUNIT_ASSERT(count(numbers, numbers+6, 5)==1);
    1.54 +  CPPUNIT_ASSERT(count(numbers, numbers+6, 6)==1);
    1.55 +}
    1.56 +void RndShuffleTest::rndshuf2()
    1.57 +{
    1.58 +  vector <int> v1(10);
    1.59 +  __iota(v1.begin(), v1.end(), 0);
    1.60 +
    1.61 +  MyRandomGenerator r;
    1.62 +  for(int i = 0; i < 3; i++)
    1.63 +  {
    1.64 +    random_shuffle(v1.begin(), v1.end(), r);
    1.65 +    CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 0)==1);
    1.66 +    CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 1)==1);
    1.67 +    CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 2)==1);
    1.68 +    CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 3)==1);
    1.69 +    CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 4)==1);
    1.70 +    CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 5)==1);
    1.71 +    CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 6)==1);
    1.72 +    CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 7)==1);
    1.73 +    CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 8)==1);
    1.74 +    CPPUNIT_ASSERT(count(v1.begin(), v1.end(), 9)==1);
    1.75 +  }
    1.76 +}