43 lines
1.4 KiB
C
43 lines
1.4 KiB
C
#include "c_Test.h"
|
|||
|
|
#include "c_EdgeWeightedGraph.h"
|
||
|
|
|
||
|
|
TEST_CASE(test_edge_weighted_graph_plumbing) {
|
||
|
|
c_EdgeWeightedGraph_t graph;
|
||
|
|
c_err_t err = c_EdgeWeightedGraph_Init(&graph, 3, NULL);
|
||
|
|
ASSERT_INT_EQ(C_SUCCESS, err);
|
||
|
|
|
||
|
|
ASSERT_LL_EQ(3, c_EdgeWeightedGraph_GetV(&graph));
|
||
|
|
ASSERT_LL_EQ(0, c_EdgeWeightedGraph_GetE(&graph));
|
||
|
|
|
||
|
|
/* Inject a single undirected connection step: 0 - 1 (Weight: 3.5) */
|
||
|
|
err = c_EdgeWeightedGraph_AddEdge(&graph, 0, 1, 3.5);
|
||
|
|
ASSERT_INT_EQ(C_SUCCESS, err);
|
||
|
|
ASSERT_LL_EQ(1, c_EdgeWeightedGraph_GetE(&graph));
|
||
|
|
|
||
|
|
/* Inspect connectivity lists for index point 0 */
|
||
|
|
c_AdjList_t* zero_adj = &graph.adj_list[0];
|
||
|
|
ASSERT_INT_EQ(1, c_AdjList_GetSize(zero_adj));
|
||
|
|
|
||
|
|
c_uint_t generic_id = 0;
|
||
|
|
err = c_AdjList_Get(zero_adj, 0, &generic_id);
|
||
|
|
ASSERT_INT_EQ(C_SUCCESS, err);
|
||
|
|
|
||
|
|
/* Fetch edge references out from pool */
|
||
|
|
c_Edge_t* resolved_edge = &graph.edges_pool[(c_size_t)generic_id];
|
||
|
|
ASSERT_DOUBLE_EQ_MSG(3.5, c_Edge_Weight(resolved_edge), "Weight match failed");
|
||
|
|
|
||
|
|
/* Validate endpoints parsing */
|
||
|
|
c_size_t start_node = c_Edge_Either(resolved_edge);
|
||
|
|
ASSERT_LL_EQ(0, start_node);
|
||
|
|
ASSERT_LL_EQ(1, c_Edge_Other(resolved_edge, start_node));
|
||
|
|
|
||
|
|
c_EdgeWeightedGraph_Destroy(&graph);
|
||
|
|
}
|
||
|
|
|
||
|
|
int main(void) {
|
||
|
|
TEST_START(EdgeWeightedGraph_Plumbing_Suite);
|
||
|
|
RUN_TEST(test_edge_weighted_graph_plumbing);
|
||
|
|
TEST_REPORT();
|
||
|
|
RETURN_TEST_STATUS;
|
||
|
|
}
|