| 1 | 
#include "utils/NextCombinationTestCase.hpp" | 
| 2 | 
#include <iostream> | 
| 3 | 
#include <algorithm> | 
| 4 | 
 | 
| 5 | 
// Registers the fixture into the 'registry' | 
| 6 | 
CPPUNIT_TEST_SUITE_REGISTRATION( NextCombinationTestCase); | 
| 7 | 
void NextCombinationTestCase::testNextCombination() { | 
| 8 | 
    std::vector<int> iv; | 
| 9 | 
    std::vector<std::vector<int>::iterator> ic; | 
| 10 | 
    std::vector<std::vector<int>::iterator>::iterator i;  | 
| 11 | 
    iv.push_back(0); | 
| 12 | 
    iv.push_back(1); | 
| 13 | 
    iv.push_back(4); | 
| 14 | 
    std::cout << std::endl; | 
| 15 | 
 | 
| 16 | 
    std::vector<std::vector<int> > results; | 
| 17 | 
    while (next_combination(ic, iv.begin(), iv.end())) { | 
| 18 | 
      std::vector<int> v;   | 
| 19 | 
      for(i = ic.begin();i != ic.end(); ++i) { | 
| 20 | 
         v.push_back(**i);   | 
| 21 | 
      }        | 
| 22 | 
      results.push_back(v);   | 
| 23 | 
    } | 
| 24 | 
 | 
| 25 | 
    CPPUNIT_ASSERT(results.size() == 7); | 
| 26 | 
    CPPUNIT_ASSERT(results[0][0] == 0  && results[0].size() == 1); | 
| 27 | 
    CPPUNIT_ASSERT(results[1][0] == 1 && results[1].size() == 1); | 
| 28 | 
    CPPUNIT_ASSERT(results[2][0] == 4  && results[2].size() == 1); | 
| 29 | 
    CPPUNIT_ASSERT(results[3][0] == 0  && results[3][1] == 1  && results[3].size() == 2); | 
| 30 | 
    CPPUNIT_ASSERT(results[4][0] == 0 && results[4][1] == 4 && results[4].size() == 2); | 
| 31 | 
    CPPUNIT_ASSERT(results[5][0] == 1 && results[5][1] == 4  && results[5].size() == 2); | 
| 32 | 
    CPPUNIT_ASSERT(results[6][0] == 0  && results[6][1] == 1 && results[6][2] == 4 && results[6].size() == 3); | 
| 33 | 
     | 
| 34 | 
} |