1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <vector> 2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <algorithm> 3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <numeric> 4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <iterator> 5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <functional> 6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include "iota.h" 8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include "cppunit/cppunit_proxy.h" 9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottusing namespace std; 12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// 15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// TestCase class 16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// 17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass PermTest : public CPPUNIT_NS::TestCase 18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST_SUITE(PermTest); 20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST(nextprm0); 21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST(nextprm1); 22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST(nextprm2); 23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST(prevprm0); 24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST(prevprm1); 25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST(prevprm2); 26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_TEST_SUITE_END(); 27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottprotected: 29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void nextprm0(); 30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void nextprm1(); 31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void nextprm2(); 32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void prevprm0(); 33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void prevprm1(); 34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void prevprm2(); 35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick ScottCPPUNIT_TEST_SUITE_REGISTRATION(PermTest); 38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// 40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// tests implementation 41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// 42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid PermTest::prevprm0() 43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int v1[3] = { 0, 1, 2 }; 45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1, v1 + 3); 46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==2); 48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==1); 49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==0); 50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid PermTest::prevprm1() 52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector <int> v1(3); 54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __iota(v1.begin(), v1.end(), 0); 55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end()); 57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==2); 58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==1); 59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==0); 60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end()); 61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==2); 62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==0); 63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==1); 64e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end()); 65e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==1); 66e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==2); 67e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==0); 68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end()); 69e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==1); 70e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==0); 71e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==2); 72e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end()); 73e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==0); 74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==2);// 75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==1); 76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end()); 77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==0); 78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==1); 79e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==2); 80e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end()); 81e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==2); 82e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==1); 83e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==0); 84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end()); 85e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==2); 86e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==0); 87e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==1); 88e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end()); 89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==1); 90e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==2); 91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==0); 92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 93e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid PermTest::prevprm2() 94e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 95e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector <int> v1(3); 96e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __iota(v1.begin(), v1.end(), 0); 97e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 98e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end(), greater<int>()); 99e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==0); 100e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==2); 101e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==1); 102e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end(), greater<int>()); 103e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==1); 104e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==0); 105e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==2); 106e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end(), greater<int>()); 107e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==1); 108e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==2); 109e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==0); 110e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end(), greater<int>()); 111e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==2); 112e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==0); 113e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==1); 114e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end(), greater<int>()); 115e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==2); 116e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==1); 117e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==0); 118e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end(), greater<int>()); 119e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==0); 120e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==1); 121e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==2); 122e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end(), greater<int>()); 123e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==0); 124e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==2); 125e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==1); 126e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end(), greater<int>()); 127e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==1); 128e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==0); 129e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==2); 130e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott prev_permutation(v1.begin(), v1.end(), greater<int>()); 131e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==1); 132e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==2); 133e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==0); 134e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 135e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid PermTest::nextprm0() 136e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 137e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int v1[3] = { 0, 1, 2 }; 138e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1, v1 + 3); 139e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 140e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==0); 141e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==2); 142e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==1); 143e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 144e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid PermTest::nextprm1() 145e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 146e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector <int> v1(3); 147e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __iota(v1.begin(), v1.end(), 0); 148e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 149e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end()); 150e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==0); 151e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==2); 152e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==1); 153e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end()); 154e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==1); 155e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==0); 156e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==2); 157e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end()); 158e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==1); 159e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==2); 160e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==0); 161e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end()); 162e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==2); 163e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==0); 164e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==1); 165e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end()); 166e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==2); 167e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==1); 168e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==0); 169e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end()); 170e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==0); 171e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==1); 172e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==2); 173e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end()); 174e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==0); 175e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==2); 176e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==1); 177e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end()); 178e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==1); 179e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==0); 180e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==2); 181e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end()); 182e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]==1); 183e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]==2); 184e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]==0); 185e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 186e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid PermTest::nextprm2() 187e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 188e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott vector <char> v1(3); 189e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __iota(v1.begin(), v1.end(), 'A'); 190e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 191e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end(), less<char>()); 192e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]=='A'); 193e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]=='C'); 194e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]=='B'); 195e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end(), less<char>()); 196e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]=='B'); 197e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]=='A'); 198e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]=='C'); 199e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end(), less<char>()); 200e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]=='B'); 201e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]=='C'); 202e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]=='A'); 203e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end(), less<char>()); 204e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]=='C'); 205e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]=='A'); 206e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]=='B'); 207e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end(), less<char>()); 208e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]=='C'); 209e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]=='B'); 210e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]=='A'); 211e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end(), less<char>()); 212e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]=='A'); 213e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]=='B'); 214e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]=='C'); 215e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end(), less<char>()); 216e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]=='A'); 217e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]=='C'); 218e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]=='B'); 219e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end(), less<char>()); 220e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]=='B'); 221e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]=='A'); 222e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]=='C'); 223e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott next_permutation(v1.begin(), v1.end(), less<char>()); 224e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[0]=='B'); 225e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[1]=='C'); 226e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT(v1[2]=='A'); 227e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 228e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 229