osrm-backend/unit_tests/util/permutation.cpp
2020-09-02 13:16:44 +03:00

30 lines
792 B
C++

#include "../common/range_tools.hpp"
#include "util/permutation.hpp"
#include <boost/test/unit_test.hpp>
#include <algorithm>
#include <numeric>
#include <random>
BOOST_AUTO_TEST_SUITE(permutation_test)
using namespace osrm;
using namespace osrm::util;
BOOST_AUTO_TEST_CASE(basic_permuation)
{
// cycles (0 3 2 1 4 8) (5) (6 9 7)
// 0 1 2 3 4 5 6 7 8 9
std::vector<std::uint32_t> values{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
const std::vector<std::uint32_t> permutation{3, 4, 1, 2, 8, 5, 9, 6, 0, 7};
std::vector<std::uint32_t> reference{9, 3, 4, 1, 2, 6, 8, 10, 5, 7};
inplacePermutation(values.begin(), values.end(), permutation);
CHECK_EQUAL_COLLECTIONS(values, reference);
}
BOOST_AUTO_TEST_SUITE_END()