perm_test.cpp revision e46c9386c4f79aa40185f79a19fc5b2a7ef528b3
169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown#include <vector>
269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown#include <algorithm>
369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown#include <numeric>
469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown#include <iterator>
569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown#include <functional>
669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown
769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown#include "iota.h"
869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown#include "cppunit/cppunit_proxy.h"
969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown
1069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
1169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brownusing namespace std;
1269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown#endif
1369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown
1469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown//
1569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown// TestCase class
1669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown//
1769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brownclass PermTest : public CPPUNIT_NS::TestCase
1869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown{
1969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_TEST_SUITE(PermTest);
2069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_TEST(nextprm0);
2169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_TEST(nextprm1);
2269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_TEST(nextprm2);
2369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_TEST(prevprm0);
2469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_TEST(prevprm1);
2569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_TEST(prevprm2);
2669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_TEST_SUITE_END();
2769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown
2869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brownprotected:
2969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  void nextprm0();
3069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  void nextprm1();
3169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  void nextprm2();
3269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  void prevprm0();
3369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  void prevprm1();
3469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  void prevprm2();
3569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown};
3669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown
3769b07161bebdb2c726e3a826c2268866f1a94517Jeff BrownCPPUNIT_TEST_SUITE_REGISTRATION(PermTest);
3869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown
3969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown//
4069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown// tests implementation
4169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown//
4269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brownvoid PermTest::prevprm0()
4369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown{
4469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  int v1[3] = { 0, 1, 2 };
4569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1, v1 + 3);
4669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown
4769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==2);
4869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==1);
4969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==0);
5069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown}
5169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brownvoid PermTest::prevprm1()
5269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown{
5369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  vector <int> v1(3);
54e6585b32ea586743258a5457e2184ffc087f2d2fKenny Root  __iota(v1.begin(), v1.end(), 0);
5569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown
5669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end());
5769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==2);
5869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==1);
5969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==0);
6069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end());
6169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==2);
6269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==0);
6369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==1);
6469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end());
6569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==1);
6669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==2);
6769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==0);
6869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end());
6969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==1);
7069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==0);
7169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==2);
7269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end());
7369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==0);
7469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==2);//
7569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==1);
7669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end());
7769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==0);
7869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==1);
7969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==2);
8069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end());
8169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==2);
8269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==1);
8369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==0);
8469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end());
8569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==2);
8669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==0);
8769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==1);
8869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end());
8969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==1);
9069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==2);
9169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==0);
9269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown}
9369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brownvoid PermTest::prevprm2()
9469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown{
9569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  vector <int> v1(3);
9669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  __iota(v1.begin(), v1.end(), 0);
9769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown
9869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end(), greater<int>());
9969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==0);
10069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==2);
10169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==1);
10269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end(), greater<int>());
10369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==1);
10469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==0);
10569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==2);
10669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end(), greater<int>());
10769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==1);
10869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==2);
10969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==0);
11069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end(), greater<int>());
11169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==2);
11269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==0);
11369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==1);
11469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end(), greater<int>());
11569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==2);
11669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==1);
11769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==0);
11869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end(), greater<int>());
11969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==0);
12069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==1);
12169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==2);
12269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end(), greater<int>());
12369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==0);
12469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==2);
12569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==1);
12669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end(), greater<int>());
12769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==1);
12869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==0);
12969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==2);
13069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  prev_permutation(v1.begin(), v1.end(), greater<int>());
131af574183c274f51d04487a9c8355e9f34a1150f2Jeff Brown  CPPUNIT_ASSERT(v1[0]==1);
132af574183c274f51d04487a9c8355e9f34a1150f2Jeff Brown  CPPUNIT_ASSERT(v1[1]==2);
133af574183c274f51d04487a9c8355e9f34a1150f2Jeff Brown  CPPUNIT_ASSERT(v1[2]==0);
13469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown}
13569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brownvoid PermTest::nextprm0()
13669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown{
137af574183c274f51d04487a9c8355e9f34a1150f2Jeff Brown  int v1[3] = { 0, 1, 2 };
13869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1, v1 + 3);
13969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown
14069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==0);
14169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==2);
14269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==1);
14369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown}
14469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brownvoid PermTest::nextprm1()
14569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown{
14669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  vector <int> v1(3);
14769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  __iota(v1.begin(), v1.end(), 0);
14869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown
14969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end());
15069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==0);
15169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==2);
15269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==1);
15369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end());
15469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==1);
15569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==0);
15669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==2);
15769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end());
15869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==1);
15969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==2);
16069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==0);
16169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end());
16269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==2);
16369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==0);
16469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==1);
16569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end());
16669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==2);
16769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==1);
16869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==0);
16969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end());
17069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==0);
17169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==1);
17269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==2);
17369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end());
17469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==0);
17569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==2);
17669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==1);
17769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end());
17869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==1);
17969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==0);
18069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==2);
18169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end());
18269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]==1);
18369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]==2);
18469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]==0);
18569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown}
18669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brownvoid PermTest::nextprm2()
18769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown{
18869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  vector <char> v1(3);
18969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  __iota(v1.begin(), v1.end(), 'A');
19069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown
19169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end(), less<char>());
19269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]=='A');
19369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]=='C');
19469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]=='B');
19569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end(), less<char>());
19669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]=='B');
19769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]=='A');
19869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]=='C');
19969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end(), less<char>());
20069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]=='B');
20169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]=='C');
20269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]=='A');
20369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end(), less<char>());
20469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]=='C');
20569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]=='A');
20669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]=='B');
20769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end(), less<char>());
20869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]=='C');
20969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]=='B');
21069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]=='A');
21169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end(), less<char>());
21269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]=='A');
21369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]=='B');
21469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]=='C');
21569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end(), less<char>());
21669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]=='A');
21769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]=='C');
21869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]=='B');
21969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end(), less<char>());
22069b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]=='B');
22169b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]=='A');
22269b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]=='C');
22369b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  next_permutation(v1.begin(), v1.end(), less<char>());
22469b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[0]=='B');
22569b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[1]=='C');
22669b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown  CPPUNIT_ASSERT(v1[2]=='A');
22769b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown
22869b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown}
22969b07161bebdb2c726e3a826c2268866f1a94517Jeff Brown