| 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 |
} |