16namespace sequoia::testing
21 using free_test::free_test;
24 std::filesystem::path source_file()
const;
28 template <
class,
class, concrete_test>
33 maths::graph_flavour GraphFlavour,
36 class EdgeStorageConfig,
37 class NodeWeightStorage
39 void execute_operations();
51 void check_setup(
const Graph& graph);
54 void check_df_update(Graph graph);
57 void check_bf_update(Graph graph);
60 void check_pr_update(Graph graph);
65 void test_bf_update();
68 void test_second_edge_traversal_update(Graph& graph);
72 std::tuple<std::size_t, std::size_t, std::size_t>
73 nth_connection_indices(
const G& graph,
const std::size_t node,
const std::size_t localEdgeIndex);
84 void firstNodeTraversal(
const std::size_t index)
86 auto iter = m_Graph.cbegin_node_weights() + index;
87 const auto newWeight = (2 + m_NodeTraversalIndex) * *iter;
88 m_Graph.set_node_weight(iter, newWeight);
90 ++m_NodeTraversalIndex;
93 void secondNodeTraversal(
const std::size_t index)
95 --m_NodeTraversalIndex;
96 auto iter = m_Graph.cbegin_node_weights() + index;
97 const auto newWeight = *iter / (5 - m_NodeTraversalIndex);
98 m_Graph.set_node_weight(iter, newWeight);
101 template<std::input_or_output_iterator Iter>
102 void firstEdgeTraversal(Iter citer)
104 const auto newWeight = 10 + m_EdgeTraversalIndex + citer->weight();
105 m_Graph.set_edge_weight(citer, newWeight);
107 ++m_EdgeTraversalIndex;
110 template<std::input_or_output_iterator Iter>
111 void secondEdgeTraversal(Iter citer)
113 --m_EdgeTraversalIndex;
114 const auto newWeight = citer->weight() - 14 + m_EdgeTraversalIndex;
115 m_Graph.set_edge_weight(citer, newWeight);
120 std::size_t m_NodeTraversalIndex{},
121 m_EdgeTraversalIndex{};
Headers for traversals of dynamic graphs.
class template from which all concrete tests should derive.
Definition: FreeTestCore.hpp:144
Definition: DynamicGraphTestingUtilities.hpp:115
Definition: DynamicGraphUpdateTest.hpp:80
Definition: DynamicGraphUpdateTest.hpp:19