18namespace sequoia::maths::graph_errors
22 std::size_t node{}, edge{};
32 std::string node_index_range_message(std::string_view method, std::size_t order, std::size_t node);
35 std::string node_index_range_message(std::string_view method, std::size_t order, std::size_t node1, std::size_t node2);
38 std::string edge_index_range_message(std::string_view method,
edge_indices edgeIndices, std::string_view indexName, std::size_t size, std::size_t index);
41 std::string edge_insertion_index_message(std::string_view method, std::size_t node, std::size_t sizeAfterFirstInsertion, std::size_t index);
44 std::string edge_swap_indices_message(std::size_t node, std::size_t index, std::size_t numEdges);
47 std::string reciprocated_error_message(
const edge_indices edgeIndices,
const std::string_view indexName,
const std::size_t reciprocatedIndex,
const std::size_t index);
50 std::string embedded_edge_message(
const std::size_t nodeIndex,
const std::size_t source,
const std::size_t target);
53 std::string inconsistent_initialization_message(std::size_t numNodes, std::size_t edgeParitions);
58 constexpr void check_node_index_range(std::string_view method,
const std::size_t order,
const std::size_t node)
61 throw std::out_of_range{node_index_range_message(method, order, node)};
64 constexpr void check_node_index_range(std::string_view method,
const std::size_t order,
const std::size_t node1,
const std::size_t node2)
66 if((node1 >= order) || (node2 >= order))
67 throw std::out_of_range{node_index_range_message(method, order, node1, node2)};
70 constexpr void check_edge_index_range(std::string_view method,
const edge_indices edgeIndices, std::string_view indexName,
const std::size_t size,
const std::size_t index)
73 throw std::out_of_range{edge_index_range_message(method, edgeIndices, indexName, size, index)};
76 constexpr void check_edge_insertion_index(std::string_view method,
const std::size_t node,
const std::size_t sizeAfterFirstInsertion,
const std::size_t index)
78 if(index > sizeAfterFirstInsertion)
79 throw std::out_of_range{edge_insertion_index_message(method, node, sizeAfterFirstInsertion, index)};
82 constexpr void check_edge_swap_indices(std::size_t node, std::size_t i, std::size_t j, std::size_t numEdges)
85 [node, numEdges](std::size_t index){
87 throw std::out_of_range{edge_swap_indices_message(node, index, numEdges)};
95 constexpr void check_reciprocated_index(
const edge_indices edgeIndices, std::string_view indexName,
const std::size_t reciprocatedIndex,
const std::size_t index)
97 if(reciprocatedIndex != index)
98 throw std::logic_error{reciprocated_error_message(edgeIndices, indexName, reciprocatedIndex, index)};
101 constexpr void check_embedded_edge(
const std::size_t nodeIndex,
const std::size_t source,
const std::size_t target)
103 if((source != nodeIndex) && (target != nodeIndex))
104 throw std::logic_error{embedded_edge_message(nodeIndex, source, target)};
107 constexpr void check_inversion_consistency(std::size_t nodeIndex, edge_inversion_info zerothEdge, edge_inversion_info firstEdge)
109 if(zerothEdge.inverted != firstEdge.inverted)
110 throw std::logic_error{inversion_consistency_message(nodeIndex, zerothEdge, firstEdge)};
114 std::string erase_edge_error(std::size_t partner, edge_indices indices);
117 std::string odd_num_loops_error(std::string_view method, std::size_t nodeIndex);
120 std::string self_referential_error(edge_indices edgeIndices, std::size_t target, std::size_t compIndex);
123 std::string mismatched_weights_message(std::string_view method, edge_indices edgeIndices);
126 std::string absent_reciprocated_partial_edge_message(std::string_view method, edge_indices edgeIndices);
129 std::string absent_partner_weight_message(std::string_view method, edge_indices edgeIndices);
bool check(CheckType flavour, std::string description, test_logger< Mode > &logger, Iter first, Sentinel last, PredictionIter predictionFirst, PredictionSentinel predictionLast, tutor< Advisor > advisor={})
The workhorse for comparing the contents of ranges.
Definition: FreeCheckers.hpp:377
Definition: GraphErrors.hpp:21
Definition: GraphErrors.hpp:26