Files
cKit/Graph/c_NonrecursiveDFS.t.c
T

53 lines
1.4 KiB
C
Raw Normal View History

2026-09-07 18:48:16 +08:00
#include "c_NonrecursiveDFS.h"
#include "c_Test.h"
#include <stdlib.h>
#include <stdio.h>
TEST_CASE(test_c_nonrecursive_dfs_component) {
c_Graph_t graph;
c_Graph_Init(&graph, 4, 0);
// Form line path network structure: 0-1, 1-2, 2-3
c_Graph_AddEdge(&graph, 0, 1);
c_Graph_AddEdge(&graph, 1, 2);
c_Graph_AddEdge(&graph, 2, 3);
c_NonrecursiveDFS_t search;
c_err_t err = c_NonrecursiveDFS_Init(&search, &graph, 0, 0);
ASSERT_INT_EQ(C_SUCCESS, err);
ASSERT_LL_EQ(4, c_NonrecursiveDFS_Count(&search)); // All nodes connected
ASSERT_TRUE(c_NonrecursiveDFS_HasPathTo(&search, 3));
c_VertexIdList_t route;
c_VertexIdList_Init(&route, 4, 0);
c_err_t path_err = c_NonrecursiveDFS_PathTo(&search, 3, &route);
ASSERT_INT_EQ(C_SUCCESS, path_err);
ASSERT_LL_EQ(4, route.size);
// Verify chronological order sequence matches properly: 0 -> 1 -> 2 -> 3
c_uint_t node;
c_VertexIdList_Get(&route, 0, &node); ASSERT_LL_EQ(0, node);
c_VertexIdList_Get(&route, 3, &node); ASSERT_LL_EQ(3, node);
c_VertexIdList_Destroy(&route);
c_NonrecursiveDFS_Destroy(&search);
c_Graph_Destroy(&graph);
}
int main(int argc, char** argv){
TEST_START(c_NonrecursiveDFS Component Tests);
// Execution list configurations
RUN_TEST(test_c_nonrecursive_dfs_component);
TEST_REPORT();
RETURN_TEST_STATUS;
return 0;
}