test_solution_models.cpp
Go to the documentation of this file.
2 #include <algorithm>
3 #include <gtest/gtest.h>
4 #include <gmock/gmock-matchers.h>
5 
6 using namespace moveit_rviz_plugin;
7 
8 class SolutionModelTest : public ::testing::Test
9 {
10 protected:
11  template <typename T>
12  inline std::vector<T> reversed(const std::vector<T>& in) {
13  return std::vector<T>(in.rbegin(), in.rend());
14  }
15  void validateSorting(QAbstractTableModel& model, int sort_column, Qt::SortOrder sort_order,
16  const std::vector<uint32_t>& expected_id_order) {
17  SCOPED_TRACE(qPrintable(QString("sorting in %1 %2 order")
18  .arg(sort_order == Qt::AscendingOrder ? "ascending" : "descending")
19  .arg(sort_column == 0 ? "creation" : "cost")));
20  model.sort(sort_column, sort_order);
21  std::vector<uint32_t> actual_id_order(model.rowCount());
22  for (int row = 0; row < model.rowCount(); ++row)
23  actual_id_order[row] = model.data(model.index(row, 0), Qt::UserRole).toInt();
24  EXPECT_THAT(actual_id_order, ::testing::ElementsAreArray(expected_id_order));
25  }
26  void processAndValidate(RemoteSolutionModel& model, const std::vector<uint32_t>& success_ids,
27  const std::vector<uint32_t>& failure_ids) {
28  model.processSolutionIDs(success_ids, failure_ids, failure_ids.size(), 0.0);
29 
30  std::vector<uint32_t> cost_ordered_ids(success_ids.begin(), success_ids.end());
31  std::vector<uint32_t> sorted_failure_ids(failure_ids.begin(), failure_ids.end());
32  std::sort(sorted_failure_ids.begin(), sorted_failure_ids.end());
33  std::copy(sorted_failure_ids.begin(), sorted_failure_ids.end(), std::back_inserter(cost_ordered_ids));
34 
35  std::vector<uint32_t> creation_ordered_ids(cost_ordered_ids.size());
36  for (size_t i = 0; i < cost_ordered_ids.size(); ++i)
37  creation_ordered_ids[i] = i + 1;
38 
39  validateSorting(model, 0, Qt::AscendingOrder, creation_ordered_ids);
40  validateSorting(model, 0, Qt::DescendingOrder, reversed(creation_ordered_ids));
41 
42  validateSorting(model, 1, Qt::AscendingOrder, cost_ordered_ids);
43  validateSorting(model, 1, Qt::DescendingOrder, reversed(cost_ordered_ids));
44  }
45 };
46 
47 #define processAndValidate(...) \
48  { \
49  SCOPED_TRACE("processSolutionIDs(" #__VA_ARGS__ ")"); \
50  processAndValidate(model, __VA_ARGS__); \
51  }
52 
54  RemoteSolutionModel model;
55  processAndValidate({ 1, 3 }, { 2 });
56  processAndValidate({ 4, 1, 6, 3 }, { 5, 2 });
57 }
remote_task_model.h
moveit_rviz_plugin::RemoteSolutionModel::processSolutionIDs
void processSolutionIDs(const std::vector< uint32_t > &ids, bool successful)
Definition: remote_task_model.cpp:645
SolutionModelTest
Definition: test_solution_models.cpp:8
SolutionModelTest::reversed
std::vector< T > reversed(const std::vector< T > &in)
Definition: test_solution_models.cpp:12
SolutionModelTest::validateSorting
void validateSorting(QAbstractTableModel &model, int sort_column, Qt::SortOrder sort_order, const std::vector< uint32_t > &expected_id_order)
Definition: test_solution_models.cpp:15
moveit_rviz_plugin
TEST_F
TEST_F(SolutionModelTest, sorting)
Definition: test_solution_models.cpp:53
SolutionModelTest::processAndValidate
void processAndValidate(RemoteSolutionModel &model, const std::vector< uint32_t > &success_ids, const std::vector< uint32_t > &failure_ids)
Definition: test_solution_models.cpp:26
processAndValidate
#define processAndValidate(...)
Definition: test_solution_models.cpp:47
moveit_rviz_plugin::RemoteSolutionModel
Definition: remote_task_model.h:127


visualization
Author(s): Robert Haschke
autogenerated on Thu Feb 27 2025 03:39:51