mirror of
https://github.com/boostorg/algorithm.git
synced 2025-07-03 15:56:38 +02:00
Fixed compatibility with old compilers
This commit is contained in:
@ -9,13 +9,10 @@
|
||||
*/
|
||||
|
||||
#include <vector>
|
||||
#include <list>
|
||||
#include <iterator>
|
||||
#include <functional>
|
||||
#include <iostream>
|
||||
|
||||
#include <boost/algorithm/apply_permutation.hpp>
|
||||
|
||||
#define BOOST_TEST_DYN_LINK
|
||||
#define BOOST_TEST_MAIN
|
||||
|
||||
#include <boost/test/unit_test.hpp>
|
||||
@ -28,42 +25,67 @@ void test_apply_permutation()
|
||||
//Empty
|
||||
{
|
||||
std::vector<int> vec, order, result;
|
||||
|
||||
ba::apply_permutation(vec.begin(), vec.end(), order.begin());
|
||||
BOOST_CHECK(vec == result);
|
||||
}
|
||||
//1 element
|
||||
{
|
||||
std::vector<int> vec{1}, order{0}, result{1};
|
||||
std::vector<int> vec, order, result;
|
||||
vec.push_back(1);
|
||||
order.push_back(0);
|
||||
result = vec;
|
||||
|
||||
ba::apply_permutation(vec.begin(), vec.end(), order.begin());
|
||||
BOOST_CHECK(vec == result);
|
||||
}
|
||||
//2 elements, no changes
|
||||
{
|
||||
std::vector<int> vec{1, 2}, order{0, 1}, result{1, 2};
|
||||
std::vector<int> vec, order, result;
|
||||
vec.push_back(1); vec.push_back(2);
|
||||
order.push_back(0); order.push_back(1);
|
||||
result = vec;
|
||||
|
||||
ba::apply_permutation(vec.begin(), vec.end(), order.begin());
|
||||
BOOST_CHECK(vec == result);
|
||||
}
|
||||
//2 elements, changed
|
||||
{
|
||||
std::vector<int> vec{1, 2}, order{1, 0}, result{2, 1};
|
||||
std::vector<int> vec, order, result;
|
||||
vec.push_back(1); vec.push_back(2);
|
||||
order.push_back(1); order.push_back(0);
|
||||
result.push_back(2); result.push_back(1);
|
||||
|
||||
ba::apply_permutation(vec.begin(), vec.end(), order.begin());
|
||||
BOOST_CHECK(vec == result);
|
||||
}
|
||||
//Multiple elements, no changes
|
||||
{
|
||||
std::vector<int> vec{1, 2, 3, 4, 5}, order{0, 1, 2, 3, 4}, result{1, 2, 3, 4, 5};
|
||||
std::vector<int> vec, order, result;
|
||||
vec.push_back(1); vec.push_back(2); vec.push_back(3); vec.push_back(4); vec.push_back(5);
|
||||
order.push_back(0); order.push_back(1); order.push_back(2); order.push_back(3); order.push_back(4);
|
||||
result = vec;
|
||||
|
||||
ba::apply_permutation(vec.begin(), vec.end(), order.begin());
|
||||
BOOST_CHECK(vec == result);
|
||||
}
|
||||
//Multiple elements, changed
|
||||
{
|
||||
std::vector<int> vec{1, 2, 3, 4, 5}, order{4, 3, 2, 1, 0}, result{5, 4, 3, 2, 1};
|
||||
std::vector<int> vec, order, result;
|
||||
vec.push_back(1); vec.push_back(2); vec.push_back(3); vec.push_back(4); vec.push_back(5);
|
||||
order.push_back(4); order.push_back(3); order.push_back(2); order.push_back(1); order.push_back(0);
|
||||
result.push_back(5); result.push_back(4); result.push_back(3); result.push_back(2); result.push_back(1);
|
||||
|
||||
ba::apply_permutation(vec.begin(), vec.end(), order.begin());
|
||||
BOOST_CHECK(vec == result);
|
||||
}
|
||||
//Just test range interface
|
||||
{
|
||||
std::vector<int> vec{1, 2, 3, 4, 5}, order{0, 1, 2, 3, 4}, result{1, 2, 3, 4, 5};
|
||||
std::vector<int> vec, order, result;
|
||||
vec.push_back(1); vec.push_back(2); vec.push_back(3); vec.push_back(4); vec.push_back(5);
|
||||
order.push_back(0); order.push_back(1); order.push_back(2); order.push_back(3); order.push_back(4);
|
||||
result = vec;
|
||||
|
||||
ba::apply_permutation(vec, order);
|
||||
BOOST_CHECK(vec == result);
|
||||
}
|
||||
@ -74,42 +96,67 @@ void test_apply_reverse_permutation()
|
||||
//Empty
|
||||
{
|
||||
std::vector<int> vec, order, result;
|
||||
|
||||
ba::apply_reverse_permutation(vec.begin(), vec.end(), order.begin());
|
||||
BOOST_CHECK(vec == result);
|
||||
}
|
||||
//1 element
|
||||
{
|
||||
std::vector<int> vec{1}, order{0}, result{1};
|
||||
std::vector<int> vec, order, result;
|
||||
vec.push_back(1);
|
||||
order.push_back(0);
|
||||
result = vec;
|
||||
|
||||
ba::apply_reverse_permutation(vec.begin(), vec.end(), order.begin());
|
||||
BOOST_CHECK(vec == result);
|
||||
}
|
||||
//2 elements, no changes
|
||||
{
|
||||
std::vector<int> vec{1, 2}, order{0, 1}, result{1, 2};
|
||||
std::vector<int> vec, order, result;
|
||||
vec.push_back(1); vec.push_back(2);
|
||||
order.push_back(0); order.push_back(1);
|
||||
result = vec;
|
||||
|
||||
ba::apply_reverse_permutation(vec.begin(), vec.end(), order.begin());
|
||||
BOOST_CHECK(vec == result);
|
||||
}
|
||||
//2 elements, changed
|
||||
{
|
||||
std::vector<int> vec{1, 2}, order{1, 0}, result{2, 1};
|
||||
std::vector<int> vec, order, result;
|
||||
vec.push_back(1); vec.push_back(2);
|
||||
order.push_back(1); order.push_back(0);
|
||||
result.push_back(2); result.push_back(1);
|
||||
|
||||
ba::apply_reverse_permutation(vec.begin(), vec.end(), order.begin());
|
||||
BOOST_CHECK(vec == result);
|
||||
}
|
||||
//Multiple elements, no changes
|
||||
{
|
||||
std::vector<int> vec{1, 2, 3, 4, 5}, order{0, 1, 2, 3, 4}, result{1, 2, 3, 4, 5};
|
||||
std::vector<int> vec, order, result;
|
||||
vec.push_back(1); vec.push_back(2); vec.push_back(3); vec.push_back(4); vec.push_back(5);
|
||||
order.push_back(0); order.push_back(1); order.push_back(2); order.push_back(3); order.push_back(4);
|
||||
result = vec;
|
||||
|
||||
ba::apply_reverse_permutation(vec.begin(), vec.end(), order.begin());
|
||||
BOOST_CHECK(vec == result);
|
||||
}
|
||||
//Multiple elements, changed
|
||||
{
|
||||
std::vector<int> vec{1, 2, 3, 4, 5}, order{4, 3, 2, 1, 0}, result{5, 4, 3, 2, 1};
|
||||
std::vector<int> vec, order, result;
|
||||
vec.push_back(1); vec.push_back(2); vec.push_back(3); vec.push_back(4); vec.push_back(5);
|
||||
order.push_back(4); order.push_back(3); order.push_back(2); order.push_back(1); order.push_back(0);
|
||||
result.push_back(5); result.push_back(4); result.push_back(3); result.push_back(2); result.push_back(1);
|
||||
|
||||
ba::apply_reverse_permutation(vec.begin(), vec.end(), order.begin());
|
||||
BOOST_CHECK(vec == result);
|
||||
}
|
||||
//Just test range interface
|
||||
{
|
||||
std::vector<int> vec{1, 2, 3, 4, 5}, order{0, 1, 2, 3, 4}, result{1, 2, 3, 4, 5};
|
||||
std::vector<int> vec, order, result;
|
||||
vec.push_back(1); vec.push_back(2); vec.push_back(3); vec.push_back(4); vec.push_back(5);
|
||||
order.push_back(0); order.push_back(1); order.push_back(2); order.push_back(3); order.push_back(4);
|
||||
result = vec;
|
||||
|
||||
ba::apply_reverse_permutation(vec, order);
|
||||
BOOST_CHECK(vec == result);
|
||||
}
|
||||
|
Reference in New Issue
Block a user