3 #include <catch2/catch_test_macros.hpp>
7 TEST_CASE(
"Permutation algorithms",
"[Neuron][node_order_optim][permute]") {
8 GIVEN(
"A vector of elements and a permutation vector") {
9 const std::vector<int> values{49, 32, 17, 29};
10 const std::vector<int> forward_permutation{3, 2, 0, 1};
11 const std::vector<int> inverse_permutation{2, 3, 1, 0};
12 THEN(
"forward_permute is done correctly") {
13 std::vector<int> forward_permutted_values{29, 17, 49, 32};
14 auto values_copy{values};
16 REQUIRE(values_copy == forward_permutted_values);
18 THEN(
"Inversion of the permute vector is done correctly") {
21 const std::vector<int>
index{0, 1, 2, 3};
22 auto permutation_copy{forward_permutation};
24 REQUIRE(permutation_copy ==
index);
25 auto inverse_permutation_copy{inverse_permutation};
27 REQUIRE(inverse_permutation_copy ==
index);
TEST_CASE("Permutation algorithms", "[Neuron][node_order_optim][permute]")
std::vector< T > inverse_permute_vector(const std::vector< T > &p)
void forward_permute(std::vector< T > &data, const std::vector< int > &perm)